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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-02-2006
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
duda con un sp ¿como buscar por descripcion?

tengo el siguiente procedimiento que funciona:


una sola clave con descripcion y existencias

una segunda tabla con varias claves y cantidades

lo que hace es descontar a la existencia la suma de cantidades por codigo a las existencias y mostrarlas. solamente es una consulta. existencia real

ALTER PROCEDURE NEW_PROCEDURE (
VDESCRIP CHAR(50))
RETURNS (
STOTAL FLOAT,
STRANSITO FLOAT,
SEXISTENCIA FLOAT,
SCODIGO CHAR(18),
SDESCRIP CHAR(50))
AS
DECLARE VARIABLE V_STRING CHAR(50);
DECLARE VARIABLE V_TIPO CHAR(1);
begin
/* Procedure Text */
v_string = :vdescrip;
/*select result from sp_substring(:v_string,1,50) into :v_string;*/
for select CODIGO, DESCRIP, coalesce(existencia,0)
FROM cinve where 1=1 order BY descrip
into :scodigo, :sdescrip, :sexistencia
DO
begin
select coalesce(SUM(CANTIDAD),0) FROM cmovim WHERE CODIGO = :scodigo INTO :stransito;
stotal = :sexistencia - :stransito;
suspend;
END
end

lo que deseo que haga es enviarle el parametro descripcion, si lo que envio es una parte de la descripcion, pues que me muestre todos lo que cumplen parte de esa descripcion.

en delphi hago algo parecido con un ' AND nombre LIKE ''%'+txtNombreBusq.Text+'%''', pero aqui no logro hacerlo funcionar.

alguna sugerencia???

gracias
Responder Con Cita
  #2  
Antiguo 04-02-2006
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 21
lbuelvas Va por buen camino
Si estas trabajando con firebird 1.5 o posterior, puede utilizar for execute statement en lugar de for select. La ventaja es que el for execute statement te permite tener selects dinamicos.

En tu caso la consulta seria algo como:

Código SQL [-]
for execute statement 'select CODIGO, DESCRIP, coalesce(existencia,0) ' ||
                      'FROM cinve where 1=1 '                           ||
                      'and  descrip like ''%'   || vdescrip || '%'' '   ||              
                      'where order BY descrip '
                      into :scodigo, :sdescrip, :sexistencia
do begin
  .. el resto de tu codigo
end

Recuerda que '' sirve para representar una comilla simple, entonces
''%' equivale a '%
'%'' equivale a %'

El inteprete dependiendo de lo que llegue en vdescrip dara por resultado:

and descrip like '%vdescrip%'

Espero te sea de utilidad.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
¿Como buscar y Eliminar en Un ListBox? danytorres Varios 10 15-08-2017 10:00:00
¿Como puedo buscar por secciones? rbx500 Tablas planas 1 28-06-2005 16:27:41
Duda con una consulta en access bustio Tablas planas 2 14-03-2005 16:51:35
Buscar texto indistintamente en Mayusculas o minusculas Jose Manuel SQL 3 24-04-2004 10:57:43
¿Como buscar un registro y posicionarme en una tabla ADO? Repelus Conexión con bases de datos 2 24-02-2004 22:48:13


La franja horaria es GMT +2. Ahora son las 12:17:49.


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