Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Ayuda con Sql. (https://www.clubdelphi.com/foros/showthread.php?t=36253)

Overfind 05-10-2006 22:31:51

Ayuda con Sql.
 
Hola... tengo el siguiente problema, esto trabajando con una base de dato Paradox7, hago un select en Delphi al ejecutar me arroja o valor null o bien que el campo seleccionado no existe.
Hago esto mismo en el Database Desktop.... ejecuto un simple SQL en que el where lleva como condicion el campo llave y este funciona
pero al tratar de ejecutar otro select en que el campo no es llave me retorna null
en este caso el campo rut_apoderado es un alfanumerico o String (el valor del campo es unico)
probe tambien en el campo era numero y tambien arroja null....

el dato '1' esta contenido en la tabla.
Código SQL [-]
select nro_familia from Familia where familia.rut_apoderado='1';

De antemano gracias

nemesio 05-10-2006 22:57:23

Por qué no colocas la instrucción sql completa que estas utilizando?

Saludos

Overfind 05-10-2006 23:01:11

esa es la Sql completa, creo que es por el string ....
el campo rut_apoderado es un alfanumerico de 8 y el valor contenido en la tabla es un '1'.....

Caral 05-10-2006 23:18:22

Yo lo intentaria de esta forma puesto que dices que:
Cita:

el campo seleccionado no existe.
Yo haria esto ya que talvez lee las comillas como parte del campo:
Código SQL [-]
select nro_familia from Familia where familia.rut_apoderado = 1 ;
Por lo menos en la sentencia sql que hago no las uso.
Vi por algunos foros algo similar y tenia que ver con las comillas en cuanto al tipo de estas, tal vez buscando un poco encuentres algo.
Saludos

egostar 05-10-2006 23:18:49

Pues si, necesitas enviar el valor asi:

Código SQL [-]
 
SELECT NRO_FAMILIA FROM FAMILIA
WHERE RUT_APODERADO = '1       '

Saludos

Caral 05-10-2006 23:21:10

Hola Egostar
Por que ?
Necesitas darle la extension de 8 ?
Saludos

egostar 05-10-2006 23:28:23

mmmm, no, estoy mal, ya hice una pequeña prueba y no, no se requiere, perdon.

Deberia de poder mostrar el registro haciendo la compracion con '1'.

Saludos

Caral 05-10-2006 23:35:29

Hola
Por eso me quede con la duda, he indique si quitando las comillas se podria?
Para mi el codigo deberia funcionar.
Saludos

Overfind 05-10-2006 23:39:10

nop, el problema ya tengo claro que es la comparacion.... probe con distintas formas y no me arrojaba datos al completar todos lo caracteres

Código SQL [-]
select * from familia where familia.rut_apoderado ='1';

o
Código SQL [-]
select * from familia where familia.rut_apoderado ='       1';
o sus distintas combinaciones....

probe algo asi y ahi si me arroja resultados, pero son valores aproximados no el exacto

Código SQL [-]
select * from familia where familia.rut_apoderado like '%1%';

Caral 05-10-2006 23:50:15

La verdad cada vez entiendo menos y eso que no fui yo quien pregunto.:D
Por favor que alguien lo explique.:D
No entiendo este Paradox, la verdad cada vez que veo en foros hay mas enrredo, es que no funciona el sql en Paradox como en otros motores, que hay tanta diferencia entre access, MYSql y Paradox ?:confused:
No deberia tener por lo menos cierta similitud ? o hay que reaprender todo ?
Bueno problemas de existencialismo.:D cosas de la edad.:D
Saludos

Overfind 06-10-2006 00:02:32

El problema es comparar una cadena de caracteres con un campo dentro de una tabla, ambos campos tienen distintos largos(largo de la cadena de caracteres).....
al utilizar el
Código SQL [-]
Select * From Familia where Familia.rut_apoderado='1';

a pesar de que el uno existe en la tabla la consulta arroja Null.

al utilizar el siguiente SQL arroja registros
Código SQL [-]
Select * From Familia where Familia.rut_apoderado like '%1';

la cosa es ahora como deberia ser en delphi

qrypagmat.SQL.Clear();
qryconsulta.sql.add('select * from Familia where Familia.rut_apoderado like :parametro';);
qRYpagmat.ParamByName('parametro').AsString :='1';

asi seria en delphi utilizando un like?

roman 06-10-2006 00:17:27

La consulta original debe funcionar bien en Paradox y lo acabo de corroborar. ¿Estás seguro de tener un registro con ese valor? ¿No será que ese registro tiene espacios antes y/o después del 1?

// Saludos

Overfind 06-10-2006 00:24:06

a mi no me arroja registros, incluso en donde ingreso los datos le aplico un trim al edit, la cosa es que en la base de datos agrega espacios no se porque ....

Overfind 06-10-2006 00:28:20

Gracias a todos y perdonen las molestias, al final me funciono aplicando un trim al campo de la base de datos
Código SQL [-]
Select * from familia where TRIM(familia.rut_apoderado)=:'1';

Nuevamente gracias y disculpen las molestias....

Overfind 06-10-2006 00:30:08

Sorry asi....
Código SQL [-]
Select nro_familia from familia where TRIM(familia.rut_apoderado)=:'1';


Gracias nuevamente....

roman 06-10-2006 00:34:20

Pues esto corrobora lo que yo dije: el valor de ese campo no es "1", tienes espacios antes o después. Si haces un

Código SQL [-]
update familia
set rut_apoderado = trim(rut_apoderado)

ya no tendrás esos espacios extra.

// Saludos

subzero 06-10-2006 14:23:32

Bueno, creo que tu problema radica en que estas pasando un parametro '1' en una consulta.

La idea es la siguiente ya que he revisado y según las pruebas que has hecho tu haciendo la consulta directamente te trae valores, ahora el problema es cuando lanzas la consulta desde delphi en tiempo de ejecución. Intenta con estas dos formas a ver si, alguna te resulta.

1. Mete el valor de esta forma '' 1 ''.
2. Envialo por parametro
Cita:

sql.add('where campo = :vlr')
ParamByName('vlr').AsString := Valor;
open;
Bueno quizas te funcione si puedes muestrame como esta consulta la estas lanzando desde delphi...


La franja horaria es GMT +2. Ahora son las 03:59:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi