Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2006
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
realizar busqueda con un SP

Hola a todos, quiero realizar una busqueda en una tabla mediante un Stored procedure del cual no obtengo registros cuando hago la consulta. Me conecto mediante dbExpress con un sqlquery, un DatasetProvider, un clientdataset y un datasource para mostrar la respuesta en un dbgrid. el SP es asi
Código SQL [-]
PROCEDURE BUSCA_CLIENTE ( PA_APELLIDO Varchar(20) )
RETURNS (    
         ID_CLIENTE Integer, 
         NOMBRE Varchar(25),
         TELEFONO Varchar(15), 
         APELLIDO Varchar(20), 
         DIRECCION Varchar(30) )
AS
BEGIN
FOR
  SELECT id_cliente, nombre, telefono, apellido, direccion
  FROM CLIENTES      WHERE apellido=a_apellido
  INTO :id_cliente, :nombre, :telefono, :apellido, :direccion
  do SUSPEND;
y lo llamo al presionar enter en un Edit
Código Delphi [-]
 DataModule2.SQLQuery1.Close;
 DataModule2.SQLQuery1.ParamByName('pa_apellido').AsString:=Edit1.Text;
 Datamodule2.SQLQuery1.Open;
 DataModule2.SQLQuery1.Refresh;

y el SQL en el sqlQuery es
Código SQL [-]
select * from busca_cliente(a_apellido)

Si aqui coloco
Código SQL [-]
 select * from clientes
me devuelve todos los registros y los veo correctamente, pero al tratar de llamar al SP o realizar
Código SQL [-]
select * from clientes where apellido=:PA_Apellido
no obtengo ningun registro . Muchas gracias por la ayuda!!!
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #2  
Antiguo 29-11-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Cuando haces esto en SQL
Código SQL [-]
WHERE apellido= : parametro // supongamos que : va seguido de parametro
La consulta devolverá sólo aquellos registros que coincidan exactamente.

Además del = también dispones de "LIKE", "STARTING WITH" y alguno más que no recuerdo ahora.

Problamente sea que no coincide y por eso no devuelve nada la consulta.

Saludos!

Última edición por DarKraZY fecha: 29-11-2006 a las 14:02:15.
Responder Con Cita
  #3  
Antiguo 29-11-2006
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Muchas gracias por tu respuesta Darkrazy, pero hice una prueba mas, reemplace el parametro en el SP por un string que existe en la tabla, entonces el select del SP quedo asi
Código SQL [-]
SELECT id_cliente, nombre, telefono, apellido, direccion FROM CLIENTES WHERE APELLIDO='apellido del cliente'
y me lo muestra en el dbgrid, pero al ingresarlo como parametro no obtengo ningun registro. Intente probarlo con LIKE pero no se la sintaxis de este operador con un parametro.
Fede
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #4  
Antiguo 29-11-2006
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
El like funciona así: where campoX like ('%Cadena%'), aunq para estar aun mas seguro yo le agregaria un upper, en su consulta quedaría algo como esto:

Código SQL [-]
SELECT id_cliente, nombre, telefono, apellido, direccion  FROM CLIENTES WHERE upper(APELLIDO) like(upper('%' || :APELLIDO || '%'))
Responder Con Cita
  #5  
Antiguo 29-11-2006
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
gracias ronpablo, funciono perfectamente el LIKE, pero sigo en la misma situacion, haciendolo con un string funciona, pero al hacerlo con el parametro no tengo registros. Hay algo que configurar en el parametro?, hay otras maneras de pasarlo?, me parece que viene por ahi, en fin rewalmente no se que mas probar.
__________________
De lo que hay no falta nada!!!
Responder Con Cita
  #6  
Antiguo 29-11-2006
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Despues de romperme la cabeza haciendo pruebas, leyendo y sobre todo aprendiendo, encontre la solución; el problema es donde estaba realizando el refresh, lo correcto es:
Código Delphi [-]
DataModule2.SQLClientDataSet1.Refresh;
__________________
De lo que hay no falta nada!!!
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
realizar una busqueda con aproximacion por letras hectoren SQL 7 29-11-2005 23:48:54
realizar busqueda e insertar? danytorres Varios 3 12-07-2005 23:12:19
Como realizar una busqueda? danytorres Varios 1 12-01-2004 17:14:43
realizar busqueda en paradox phoenix Tablas planas 3 09-06-2003 22:59:59
¿Realizar una busqueda de fechas? judoboy SQL 4 23-05-2003 23:26:53


La franja horaria es GMT +2. Ahora son las 10:23:01.


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