Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
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 22-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Duda sobre comodines en consulta

Tengo la siguiente consulta y quiero usar comodines en el parametro 'idp' para mostrar todos los campos en cuanto se habra la consulta, ahora bien se que si uso like el comodin para esto es '%' pero cuando es '=' (igual) no me lo toma asi que no sabria como poder hacer esto, existe una forma de usar un comodin usando el signo igual o no?
Código SQL [-]
SELECT   
producto.id_producto,   
producto.Nombre,   
producto.Descripcion,   
producto.Precio_com,
producto.Stock,
 producto.stock_minimo,
producto.precio_vent,
producto.id_categoria_producto 
FROM  
producto 
WHERE  
producto.estado = 1
AND  
producto.id_categoria_producto = :idp
AND
producto.Nombre like :nomp
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.

Última edición por The Cid James fecha: 22-11-2017 a las 17:22:01.
Responder Con Cita
  #2  
Antiguo 22-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
- Sabes como usar el LIKE con el comodín %.
- Quieres utilizar el comodín en una parte donde no se utiliza LIKE.

Eso no se puede.
Puedes poner algo así como
Código SQL [-]
producto.id_categoria_producto like '%' || :idp || '%'
pero si el id es un número, no creo que tenga mucho sentido...
Responder Con Cita
  #3  
Antiguo 22-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
- Sabes como usar el LIKE con el comodín %.
- Quieres utilizar el comodín en una parte donde no se utiliza LIKE.

Eso no se puede.
Puedes poner algo así como
Código SQL [-]producto.id_categoria_producto like '%' || :idp || '%'

pero si el id es un número, no creo que tenga mucho sentido...
uff, no se me ocurre como mostrar esa consulta entonces porque despues si o si necesito filtrarla por el otro parametro, aunque no entiendo porque no tiene sentido si es un numero
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #4  
Antiguo 22-11-2017
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
Prueba a convertir en el where el campo numerico a string y utiliza el LIKE

Código SQL [-]
SELECT    producto.id_producto,    producto.Nombre,    producto.Descripcion,
    producto.Precio_com, producto.Stock,  producto.stock_minimo, producto.precio_vent, producto.id_categoria_producto 
 FROM   producto  
WHERE   
producto.estado = 1
 AND  
 cast(producto.id_categoria_producto as varchar(10)) LIKE :idp
 AND
 producto.Nombre like :nomp

Última edición por aposi fecha: 22-11-2017 a las 18:24:12.
Responder Con Cita
  #5  
Antiguo 22-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Nop supongo que solo se puede usar en el select la verdad que aunque lo conocia en la teoria nunca lo habia usado
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #6  
Antiguo 22-11-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por The Cid James Ver Mensaje
..., aunque no entiendo porque no tiene sentido si es un numero
Por que por ejemplo, ¿ A que debería ser parecido 65 ?
¿ a 56 por que tiene ambos dígitos y es fácil de confundir ?
¿ a 64 ó 66 por que son números cercanos ?
¿ a 560 o 650 por que aparecen los dígitos 6 y 5 ?
¿ ... ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-11-2017 a las 19:52:10.
Responder Con Cita
  #7  
Antiguo 23-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Gracias gente por aclararme las dudas. Pues nada a ver como lo soluciono por codigo o que se me ocurre
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #8  
Antiguo 23-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Empezado por The Cid James Ver Mensaje
Gracias gente por aclararme las dudas. Pues nada a ver como lo soluciono por codigo o que se me ocurre
¿Sabes qué es lo que quieres?
Creo que de los que comentamos ninguno sabemos bien que es lo que deseas conseguir.
Si das algún ejemplo con valores, quizás logremos comprender cómo quires utilizar el LIKE en un valor numérico...
Responder Con Cita
  #9  
Antiguo 24-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Lo que quiero es lo siguiente.
Como habran notado es la consulta de la tabla productos
El primer WHERE
Hace referencia a "estado", este es el que me dice si hay stock o no. El segundo "id_categoria_producto" es el id de la categoria a los productos y en tercelor es para la busqueda por nombre del producto.

Lo que intento hacer es:
1-Cuando se habra en tform donde esta la consulta muestre todos los productos. (Esta parte es la que tengo problemas por no poder usar comodin con valores numericos con el igual)
2-Poder filtrar los productos por nombre o categoria (en el caso de la categoria lo tengo asociado a DBLookupCombobox)

Por lo menos todo lo demas me funciona bien
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita
  #10  
Antiguo 24-11-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sigue sin entenderse qué quieres, ni qué problema tienes.
Responder Con Cita
  #11  
Antiguo 24-11-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por The Cid James Ver Mensaje
... (Esta parte es la que tengo problemas por no poder usar comodin con valores numericos con el igual)..
Y esa parte es la que debe describir con mas claridad por que no entendemos que desea hacer ni cuál es el problema.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 24-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cita:
Empezado por The Cid James Ver Mensaje
Lo que intento hacer es:
1-Cuando se habra en tform donde esta la consulta muestre todos los productos. (Esta parte es la que tengo problemas por no poder usar comodin con valores numericos con el igual)
2-Poder filtrar los productos por nombre o categoria (en el caso de la categoria lo tengo asociado a DBLookupCombobox)
Creo entender lo que quieres.

Cuando se abre el TForm el SQL debe ser el que muestra todos los productos en stock
Código SQL [-]
SELECT   
producto.id_producto, producto.Nombre, producto.Descripcion, producto.Precio_com, producto.Stock, producto.stock_minimo, 
producto.precio_vent, producto.id_categoria_producto 
FROM producto 
WHERE  
producto.estado = 1

Cuando quiera filtrar, obtienes el filtro (nombre o id) cierras el query, modificas el SQL según quieras filtrar por ID del pructo o por nombre y lo vuelves a abrir:
Código Delphi [-]
procedure FiltrarPorNombre(Nombre : string);
begin
  with QueryProductos do
  begin
     Close;
     SQL.Clear;
     SQL.Add(' SELECT ');
     SQL.Add(' producto.id_producto, producto.Nombre, producto.Descripcion, producto.Precio_com, producto.Stock, producto.stock_minimo,  ');
     SQL.Add(' producto.precio_vent, producto.id_categoria_producto  ');
     SQL.Add(' FROM producto  ');
     SQL.Add(' WHERE   ');
     SQL.Add(' producto.estado = 1 ');
     SQL.Add(' AND producto.Nombre like :nomp ');
     Params.ByName('NOMP').AsString := '%' + Nombre + '%';
     Open;
  end;
end;

procedure FiltrarPorId(Id : string);
begin
  with QueryProductos do
  begin
     [...]
     SQL.Add(' AND producto.ID = :ID ');
     Params.ByName('ID').AsInteger := id;
     Open;
  end;
Responder Con Cita
  #13  
Antiguo 24-11-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Según el componentes que utilices puedes utilizar la propiedad Filter

Mira este hilo: http://www.clubdelphi.com/foros/showthread.php?t=69726

Código Delphi [-]
procedure TForm1.FiltrarTabla(Valor: integer);
begin
  with Productos do
  begin
    Filtered:= False;
    Filter:= 'ID= ' + IntToStr(Valor);
    Filtered:= True;
  end;
end;
Responder Con Cita
  #14  
Antiguo 29-11-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Perdon por no responder antes, he tenido un problema con el modem y tuve que esperar hasta que me manden uno nuevo

Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Y esa parte es la que debe describir con mas claridad por que no entendemos que desea hacer ni cuál es el problema.

Saludos
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sigue sin entenderse qué quieres, ni qué problema tienes.
No sabria como explicarlo de la mejor manera, necesitaba que se muestren todos los productos al abrir el form y despues ir filtando por los parametros (al no poder usar comodin en el =) no lograba hacer que se muestren todos los registros de la tabla al abrir el form,

Cita:
Empezado por duilioisola Ver Mensaje
Según el componentes que utilices puedes utilizar la propiedad Filter

Mira este hilo: http://www.clubdelphi.com/foros/showthread.php?t=69726

Código Delphi [-]
procedure TForm1.FiltrarTabla(Valor: integer);
begin
  with Productos do
  begin
    Filtered:= False;
    Filter:= 'ID= ' + IntToStr(Valor);
    Filtered:= True;
  end;
end;
Al final resolvi esto usando el like en
Código SQL [-]
producto.id_categoria_producto like  :idp
Y al abrir el form use el comodin
Código Delphi [-]
fmodulo.qProductos.ParamByName('idp').AsString := '%';

Evitando que el campo con el que se iba a filtrar sea nulo muestra todos los registros de la tabla que necesito

Gracias por su tiempo y la ayuda a todos voy a probar los métodos que me pasaste duilioisola para otra cosa que tengo pensado a ver como me va
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
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
duda sobre consulta Vlady SQL 3 26-04-2012 01:02:08
Duda sobre consulta utopico SQL 3 13-09-2007 22:11:27
Duda sobre esta consulta alcides Varios 0 13-12-2006 18:20:55
Duda sobre una consulta carlos gonzalez SQL 2 14-09-2005 20:22:25
Duda sobre consulta SQL kukinn SQL 2 17-10-2003 09:59:43


La franja horaria es GMT +2. Ahora son las 15:26:45.


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