Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Cool Querys Y Locate

Estoy usando dos querys, uno para seleccionar algun cliente y otro para mostrar todos los clientes
anteriormente tenia
Código Delphi [-]
QueryBuscaCliente.SQL.Add(
'select CL.CVECLIENTE, CL.NOMBRE, CL.RFC, CL.CALLE, '+ 
'CL.COLONIA, CL.CP, CL.CIUDAD, CL.CLASE, CL.REPRESENTANTE, '+
'CL.TELEFONO, CL.CVECREDITO, CL.ACTIVO, CR.DESCRIPCION, '+
'CR.DURACION, CR.CREDITO from TCLIENTE CL, TCREDITO CR '+
'where (CL.CVECLIENTE starting(:I_CVECLIENTE)) and '+
'(CL.CVECREDITO = CR.CVECREDITO);');
y
Código Delphi [-]
QueryClienteAll.Locate('CVECLIENTE',Edit.Text,[loCaseInsensitive,loPartialKey]);
para situar el cursor de un dbGrid en el registro que coincida parcial o totalmente con lo que tiene el Edit
el valor del parametro I_CVECLIENTE es tambien el del Edit, cuando escribo en el Edit todo funciona bien el QueryBuscaCliente hace su trabajo asi como el QueryClienteAll se situa en el registro que coincide parcial o totalmente, el problema es que al cambiar el
QueryBuscaCliente en lugar de poner (CL.CVECLIENTE starting(:I_CVECLIENTE)) pongo (CL.CVECLIENTE =(:I_CVECLIENTE))
quedando de esta manera

Código Delphi [-]
QueryBuscaCliente.SQL.Add(
'select CL.CVECLIENTE, CL.NOMBRE, CL.RFC, CL.CALLE, '+
'CL.COLONIA, CL.CP, CL.CIUDAD, CL.CLASE, CL.REPRESENTANTE, '+
'CL.TELEFONO, CL.CVECREDITO, CL.ACTIVO, CR.DESCRIPCION, ' + 
'CR.DURACION, CR.CREDITO from TCLIENTE CL, TCREDITO CR ' + 
'where (CL.CVECLIENTE =(:I_CVECLIENTE)) and ' + 
'(CL.CVECREDITO = CR.CVECREDITO);');

de esta manera el
Código Delphi [-]
QueryClienteAll.Locate'CVECLIENTE',Edit.Text, loCaseInsensitive,loPartialKey]);
ya no funciona correctamente ya que solo se situa en un registro solo si coincide totalmente el Contenido del Edit con el Field CVECLIENTE.
Alguna sugerencia de cual podria ser la solucion para que en este caso tambien haga una busqueda parcial.
Estoy usando interbase y Delphi 5.
De antemano gracias.

[i]jachguate: he editado tu mensaje para partir las líneas en valores que no hagan dificil la navegación.

Última edición por jachguate fecha: 03-06-2004 a las 10:02:34.
Responder Con Cita
  #2  
Antiguo 31-05-2004
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
De verdad te recomiendo que organices un poco más la exposición de tu mensaje ya que cuesta trabajo leerlo. Usa las etiquetas de formato [ delphi ], [ code ] o [ sql ] según convenga. Más información en el aviso que se encuentra al comienzo de este foro.

// Saludos
Responder Con Cita
  #3  
Antiguo 31-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Talking

No entiendo porque queres cambiar algo que funciona correctamente... estas violando una regla de oro: Si funciona, no lo toques.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 03-06-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Cita:
Empezado por jachguate
No entiendo porque queres cambiar algo que funciona correctamente... estas violando una regla de oro: Si funciona, no lo toques.
Bueno mira lo que pasa es que en la misma forma se da de alta, modifica o se borra, el caso es que si yo ya tengo la clave 10 y quiero dar de alta la clave 1 pues como es starting me seleccionara la clave 10 junto con los datos relacionados.
Por eso la cambie, para que en la primera busqueda sea igual y si no existe poder darla de alta y en la segunda con el Locate se valla al registro que comience con lo que tiene el edit.
Responder Con Cita
  #5  
Antiguo 03-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
De cualquier forma no queda claro cual es tu problema. A mi me parece que, para comenzar, si usas claves numéricas, el tipo de dato debe ser numérico y los buscas en condición de igualdad.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 06-06-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Cita:
Empezado por jachguate
De cualquier forma no queda claro cual es tu problema. A mi me parece que, para comenzar, si usas claves numéricas, el tipo de dato debe ser numérico y los buscas en condición de igualdad.

Hasta luego.

Hola! La verdad no entendi que me quisiste decir, pero el problema es que desde que cambie el query1 de starting por igual el locate del query2 es el que no me funciona ya que el query1 hace lo quiero(si existe una clave muestra datos y si no, se puede dar de alta), pero se supone que al usar el segundo query debe de hacer una busqueda para encontrar la clave que coincida parcial o tatalmente y no lo hace hasta que coincide totaltmente

se supone que loPartialKey es para que haga una busqueda parcial pero no lo hace
Código Delphi [-]
 QueryClienteAll.Locate'CVECLIENTE',Edit.Text, [loCaseInsensitive,loPartialKey]);

Se me olvidaba, habia hecho esto pero igual no hacia lo que queria

Código Delphi [-]
 
if Edit.Text <> '' then
QueryClienteAll.Locate'CVECLIENTE',StrToInt(Edit.Text), [loCaseInsensitive,loPartialKey]);

Última edición por el_enigma1 fecha: 06-06-2004 a las 18:30:29.
Responder Con Cita
  #7  
Antiguo 06-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si el campo es numérico, no creo que este definida una busqueda "parcial" sobre este campo... y de cualquier forma esta no tendria sentido.

Quizas estes tratando de darle a tu programa una funcionalidad innecesaria. Si el campo es de texto, entonces el locate debiera funcionar, independientemente de la sentencia SQL usada para obtener el conjunto de datos.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 09-06-2004
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Query y Locate

Si definitivamente en númerico no funciona, en texto si. Lo raro es que si se usa el query con starting si, bueno mejor lo dejo por la paz no tiene caso.
Gracias por la ayuda.
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


La franja horaria es GMT +2. Ahora son las 11:16:53.


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