FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta sql anidada
Buen dia tengo el siguiente problema
una consulta sql que se realiza desde delphi con estos campos m1= largo dos edits m2=ancho dos edits m3=espesor dos edits m4=alto dos edits m5=numerodebarrenos 1 edit los datos los ingresa el usuario la consulta que tengo es la siguiente Código Delphi [-]FILTROP.Close; FILTROP.SQL.Clear; FILTROP.SQL.Add('SELECT MARCA,CODIGO,FORMULA,NUMERO,DESCRI,CODIGOI FROM INVENTA WHERE '); if (Edit1.Text<>'') AND (Edit2.Text<>'') then BEGIN FILTROP.SQL.Add('M1 BETWEEN :M1 AND :M2 '); FILTROP.Parameters.ParamByName('M1').Value:=Edit1.Text; FILTROP.Parameters.ParamByName('M2').Value:=Edit2.Text; if (Edit3.Text<>'') OR (Edit4.Text<>'') OR (Edit5.Text<>'') OR (Edit6.Text<>'') OR (Edit7.Text<>'') OR (Edit8.Text<>'') OR (Edit9.Text<>'') OR (Edit10.Text<>'') OR (Edit11.Text<>'') OR (Edit12.Text<>'') OR (Edit13.Text<>'') THEN BEGIN FILTROP.SQL.Add(' ,'); END; END; si el usuario ingresa informacion al edit 1 y al edit 2 el parametro se asigna a m1 pero si intenta filtrar por mas campos no logro que funcione la busqueda lo que quiero lograr es un filtro que sea por dimenciones he intentar filtrar lo mas posible la informacion. gracias por su ayuda. |
#2
|
||||
|
||||
y que tal si en lugar de usar parametros lo solucionas armando una cadena
algo asi como:
yo tengo una funcion que una cadena de caracteres la separa en comas, para que se pueda ejecutar el sql usando IN
si la ejecuto asi _cad := _digito ('1234',1) el resultado es ('1','2','3','4') entonces en la consulta sql podria usar... SELECT MARCA,CODIGO,FORMULA,NUMERO,DESCRI,CODIGOI FROM INVENTA WHERE M1 in _cad yo lo hago mas o menos asi
quiza eso pueda ayudarte
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
|||
|
|||
hola
yo para este tipo de consultas con filtros estáticos utilizo una estructura fija de SELECT (sin necesidad de cambiar o ajustar el SQL en runtime) como esta:
y los parámetros los cargo de la siguiente forma:
De tal forma que si el usuario no rellena alguno de los campos de busqueda, ese campo se queda sin efecto |
#4
|
|||
|
|||
oscarac,bucanero
Gracias por sus ideas las pondre en practica y les comento como funcionaron.
|
#5
|
|||
|
|||
Cita:
no logro hacer funcionar este ejemplo al compilar dice este error [DCC Error] Busquedaavanzada.pas(286): E2003 Undeclared identifier: 'param' [DCC Error] Busquedaavanzada.pas(290): E2003 Undeclared identifier: 'ParamByName' y ya le cambie todos lo que se me pudo ocurrir utilizo delphi 2010 |
#6
|
|||
|
|||
¿de que clase es tu componente filtroP?, en mis pruebas lo hice con un TZQuery de las zeos, y para esta clase a los parámetros se accede mediante la propiedad params. Si por el contrario utilizas un TADOQuery entonces se accede mediante la propiedad Parameters, con otros componentes de base de datos es posible que la propiedad sea otra distinta.
En tu código, ya utilizabas la función ParamByName, así que en tu caso en particular supongo que debes de utilizar Parameters
|
#7
|
|||
|
|||
Gracias por la aclaracion esta en lo correcto es un TADOQuery
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta Anidada | farrop | SQL | 1 | 04-07-2006 20:28:06 |
Consulta anidada | Malon | SQL | 5 | 07-05-2004 18:58:45 |
Consulta anidada | fjcg02 | SQL | 6 | 05-02-2004 09:47:58 |
consulta anidada | pzala | SQL | 2 | 14-12-2003 23:43:16 |
consulta sql anidada | davidgaldo | SQL | 2 | 13-11-2003 15:42:00 |
|