Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 05-10-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Por qué no colocas la instrucción sql completa que estas utilizando?

Saludos
Responder Con Cita
  #3  
Antiguo 05-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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'.....
Responder Con Cita
  #4  
Antiguo 05-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 05-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Pues si, necesitas enviar el valor asi:

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

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 05-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Egostar
Por que ?
Necesitas darle la extension de 8 ?
Saludos
Responder Con Cita
  #7  
Antiguo 05-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 05-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por eso me quede con la duda, he indique si quitando las comillas se podria?
Para mi el codigo deberia funcionar.
Saludos
Responder Con Cita
  #9  
Antiguo 05-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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%';
Responder Con Cita
  #10  
Antiguo 05-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
La verdad cada vez entiendo menos y eso que no fui yo quien pregunto.
Por favor que alguien lo explique.
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 ?
No deberia tener por lo menos cierta similitud ? o hay que reaprender todo ?
Bueno problemas de existencialismo. cosas de la edad.
Saludos
Responder Con Cita
  #11  
Antiguo 06-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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 arametro';
qRYpagmat.ParamByName('parametro').AsString :='1';

asi seria en delphi utilizando un like?
Responder Con Cita
  #12  
Antiguo 06-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #13  
Antiguo 06-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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 ....
Responder Con Cita
  #14  
Antiguo 06-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
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....
Responder Con Cita
  #15  
Antiguo 06-10-2006
Overfind Overfind is offline
Miembro
 
Registrado: ago 2006
Posts: 10
Poder: 0
Overfind Va por buen camino
Sorry asi....
Código SQL [-]
Select nro_familia from familia where TRIM(familia.rut_apoderado)=:'1';


Gracias nuevamente....
Responder Con Cita
  #16  
Antiguo 06-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #17  
Antiguo 06-10-2006
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
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...

Última edición por subzero fecha: 07-10-2006 a las 01:35:10.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Instalar Ayuda (.HLP) en la Ayuda de Delphi? MasterXP Varios 6 12-04-2006 06:57:49
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 00:15:18
Leer la ayuda... Ayuda! MaJeSTiC Varios 0 04-08-2004 21:24:42
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59
Ayuda Con Instalacion De Archivos De Ayuda Legolas Varios 1 01-12-2003 14:48:03


La franja horaria es GMT +2. Ahora son las 12:27:07.


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