FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear una consulta filtrada por uno o más parametros
Hola, estoy lidiando con una cosulta sql y quisiera ver si podrian hecharle una miradita para ver que esta mal.
Lo que necesito es poder mostrar en un dbgrid los articulos de la tabla articulos filtrados por categoria, subcategoria y proveedor. para despues poder imprimirlos o sea si se necesita un determinado proveedor se puede imprimir ese con todos sus articulos y ademas poder imorimir un categoria independiente del proveedor que sea. Espero haberme explicado. Para ello untilizo unos dbcombo para asignarle los parametros y un debedit en lo que sea la descrición. Paso la consulta dm1.QBA.Active:=false; JvDBGrid1.DataSource:= DataSource1; dm1.QBA.SQL.Clear; dm1.QBA.SQL.Add('select * from articulos'); dm1.QBA.SQL.Add('WHERE No IN(:cambuscar, AND :categoria, AND :subcategoria, AND roveedor)order by descripcion'); dm1.QBA.Parameters.ParamByName('cambuscar').Value:= '%'+ lowercase(cambuscar.Text)+'%'; dm1.QBA.Parameters.ParamByName('categoria').Value := categoria.Text; dm1.QBA.Parameters.ParamByName('subcategoria').Value := subcategoria.Text; dm1.QBA.Parameters.ParamByName('proveedor').Value:= proveedor.Text; dm1.QBA.Active:=true; if dm1.QBA.IsEmpty then showmessage('No se encuentra en la base de datos'); cambuscar.SetFocus; Desde ya muchas gracias. |
#2
|
||||
|
||||
Hola, cuando utilizas el In no debes añadir el AND, solo debe estar separado por comas y lo que se esta pregunta es si el registro con el campo No esta en el conjunto que le has dado, pregunta tu proveedor, categoria, subcategoría esta en tu campo No
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
|||
|
|||
Ahora no me seleccioan los dbcombo un valor
Gracias ante todo por tu pronta respuesta.Asi quedo, ya que el campo "N"o no era el que necesitaba buscar sino más bien el campo "descripción".
La idea seria poder encontrar esa descripcion con esos paramentros. ¿Esta esta descripcion en la categoria tal con la subcategoria tal y el proveedor tal.? Ahora me sale siempre el mensaje que no se encontro nada pero además no puedo seleccionar los datos en los dblookupcombo. dm1.QBA.Active:=false; JvDBGrid1.DataSource:= DataSource1; dm1.QBA.SQL.Clear; dm1.QBA.SQL.Add('select * from articulos'); dm1.QBA.SQL.Add('WHERE descripcion IN(:cambuscar,:categoria,:subcategoria,roveedor)order by descripcion'); dm1.QBA.Parameters.ParamByName('cambuscar').Value:= '%'+ lowercase(cambuscar.Text)+'%'; dm1.QBA.Parameters.ParamByName('categoria').Value := categoria.Text; dm1.QBA.Parameters.ParamByName('subcategoria').Value := subcategoria.Text; dm1.QBA.Parameters.ParamByName('proveedor').Value:= proveedor.Text; dm1.QBA.Active:=true; if dm1.QBA.IsEmpty then showmessage('No se encuentra en la base de datos'); cambuscar.SetFocus; Desde ya muchas gracias.Saludos a todos. |
#4
|
||||
|
||||
Mas bien lo que te hace falta es leer un poco más sobre SQL...
__________________
|
#5
|
||||
|
||||
mas claro no canta un gallo
|
#6
|
|||
|
|||
Muchas gracias y es algo que ya lo estoy haciendo
Gracias ante todo por aclararme dudas. Ya probe la consulta en la base y anda.
Solo me surge un problema y es que en la tabla articulos guardo los codigos de las categorias, subcateg y proveedores por medio de un lookupcombo que muestra la descripcion y guarda el codigo. El tema es que no logro que me busque desde le form con los lookupcombo de la misma manera. (no se que propiedad debo usar.) La idea es no tener que recordar los codigos y poder seleccionar la descripcion. Probe con Text y con keyfield. El codigo esta quedando asi. Código SQL [-] dm1.QBA.Active:=false; JvDBGrid1.DataSource:= DataSource1; dm1.QBA.SQL.Clear; dm1.QBA.SQL.Add('select * from articulos'); dm1.QBA.SQL.Add('where lower(descripcion) like :cambuscar and codcateg = :categoria and codsubcateg = :subcategoria and codprov = roveedor order by descripcion'); dm1.QBA.Parameters.ParamByName('cambuscar').Value:= '%'+ lowercase(cambuscar.Text)+'%'; dm1.QBA.Parameters.ParamByName('categoria').Value := categoria.Text; dm1.QBA.Parameters.ParamByName('subcategoria').Value := subcategoria.KeyField; dm1.QBA.Parameters.ParamByName('proveedor').Value:= proveedor.KeyField; dm1.QBA.Active:=true; if dm1.QBA.IsEmpty then showmessage('No se encuentra en la base de datos'); cambuscar.SetFocus; PD: Agradecere link de manual buen manual sql mientras tanto empese por alguno que encotre en google. |
#7
|
||||
|
||||
¿los loockUpCombBox son los que vienen en las JEDI?
Si es así, entonces es con "KeyValue".
__________________
|
#8
|
|||
|
|||
No hay caso che
Prove con los lookup combo de delphi y los de jedi con la propiedad KeyValue, Text, KeyField y ListField.
No logro que tome el valor del combo como parametro. Desde ya muchas gracias. |
#9
|
||||
|
||||
Entonces hay otra cosa que no estas haciendo correctamente. Yo te puedo asegurar, que esto funciona perfectamente:
Prueba a hacer esto: Showmessage(Proveedor.KeyValue); para ver que valor te muestra.
__________________
|
#10
|
|||
|
|||
Solucionado
Muchisimas Gracias
Me sirvio mucho tu ayuda para corroborar los valores de los parametros y detectar el error. Error cometido en el Dataset que no apuntaba a QBA sino al TADO de la tabla. Cambiando eso funciona perfectamente. Saludos y nuevamente muchas gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear una Consulta Tquey con parámetros | GerTorresM | OOP | 9 | 08-08-2007 13:06:09 |
Busqueda en Tabla Filtrada | don malo | Conexión con bases de datos | 9 | 04-07-2007 20:54:53 |
DBChart, Tabla filtrada ? | Fabricio | Gráficos | 9 | 14-03-2007 15:30:44 |
Parametros en Consulta SQL | joi | Varios | 2 | 31-10-2005 19:36:49 |
Conflicto entre Query y Tabla filtrada | Michael | Varios | 2 | 20-05-2004 21:37:43 |
|