Delphi - consutlta a base de datos

   
Vista:

consutlta a base de datos

Publicado por franklin (32 intervenciones) el 29/12/2008 23:42:40
Buenas Foro tengo la siguiente consulta a un qwery que me funciona muy bien, pero solo puedo hacer la consulta a un campo de la tabla y yo lo que deseo es poder hacer la misma consulta a la tabla entera, sin distincion de campos.

Query1.Close;
Query1.SQL.Clear;
query1.SQL.Add('select * from exportacion where Fabricante like'+ #39+Edit1.Text+'%'+#39);
Query1.Open;

Gracias anticipadas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Delphi
- Código fuente de Delphi
- Cursos de Delphi
- Temas de Delphi
- Chat de Delphi
información
Códigos de Delphi
- Trace Route
- Calculadora
- Matriz de 4x4

RE:consutlta a base de datos

Publicado por E.T. (1108 intervenciones) el 30/12/2008 01:46:26
Necesitas la lista de los campos de tu tabla, y en un cliclo agregar una linea SQL.Add, por cada campo, supongamos que en un archivo de texto tienes guardados los campos de la tabla, un campo por linea, es decir, separados por un enter haces lo siguiente

Variables:

campos:TStringList;
i:integer;

Query1.Close;
Query1.SQL.Clear;
query1.SQL.Add('select * from exportacion where Fabricante like'+ #39+Edit1.Text+'%'+#39);
campos := TStringList.Create;
campos.loadFromFile('Campos.txt');
for i:=1 to campos.count do begin
query1.SQL.Add('OR '+campos[i]+' like '+ #39+Edit1.Text+'%'+#39);
end;
Query1.Open;
campos.free;

Mas o menos así, como puedes notar, el archivo de texto se llama campos, y debe estar en el directorio de la aplicación, si deseas puedes ponerlo en otro lugar pero especificando la ruta, tambien hay que omitir el campo fabricante en el archivo de texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por FRANKLIN (1 intervención) el 08/01/2009 16:24:51
buenas el programa me correo, pero tengo un problema cuando intento hacer la busqueda me da un error que dice list index out of bounds (6) lista de índice fuera de límites.

Pueden ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por E.T. (1108 intervenciones) el 08/01/2009 16:53:51
En esta linea:

for i:=1 to campos.count do begin

hay que cambiarla por esta

for i:=1 to campos.count-1 do begin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por franklin (32 intervenciones) el 08/01/2009 22:29:08
Ahora me da un error dice que hay un error sintactico, y que el operador esta perdido o no se encuentra.
Este es el codigo que estoy utilizando y lo pongo en el evento onchanse de un edit
los SQL.ADD los he puesto tambien debajo del for

adoQuery1.Close;
adoQuery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where nombre like'+ #39+Edit1.Text+'%'+#39);

adoquery1.SQL.Add('select * from table1 where APELLIDOS like'+ #39+Edit1.Text+'%'+#39);
adoquery1.SQL.Add('select * from table1 where DIRECCION like'+ #39+Edit1.Text+'%'+#39);

campos := TStringList.Create;
campos.loadFromFile('Campos.txt');
for i:=1 to campos.count-1 do begin
adoquery1.SQL.Add('OR '+campos[i]+' like '+ #39+Edit1.Text+'%'+#39);

end;
adoQuery1.Open;
campos.free;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por E.T: (1 intervención) el 08/01/2009 22:53:54
En que linea te marca el error, y cuando, cuando lo estas compilando, o cuando está ejecutandose
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por franklin (32 intervenciones) el 09/01/2009 20:33:37
El error lo marca luego de ejecutado cuando intento hacer la busque.
El error lo da para todas las posiciones de la busqueda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por E.T. (1108 intervenciones) el 09/01/2009 22:58:38
Como lo veo, si ejecutas así como pones la consula te va a marcar el error, pues estás poniendo múltiples sentencias SELECT

adoQuery1.Close;
adoQuery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where nombre like'+ #39+Edit1.Text+'%'+#39);

adoquery1.SQL.Add('select * from table1 where APELLIDOS like'+ #39+Edit1.Text+'%'+#39);
adoquery1.SQL.Add('select * from table1 where DIRECCION like'+ #39+Edit1.Text+'%'+#39);

campos := TStringList.Create;
campos.loadFromFile('Campos.txt');
for i:=1 to campos.count-1 do begin
adoquery1.SQL.Add('OR '+campos[i]+' like '+ #39+Edit1.Text+'%'+#39);

end;
adoQuery1.Open;
campos.free;

Corregido sería así:

adoQuery1.Close;
adoQuery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where nombre like'+ #39+Edit1.Text+'%'+#39);
campos := TStringList.Create;
campos.loadFromFile('Campos.txt');
for i:=1 to campos.count-1 do begin
adoquery1.SQL.Add('OR '+campos[i]+' like '+ #39+Edit1.Text+'%'+#39);
end;
adoQuery1.Open;
campos.free;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por franklin (32 intervenciones) el 10/01/2009 00:29:33
Aun asi me sigue dando el mismo problemas, pero de todas formas gracias mejor lo seguire realizando por un solo campo de la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consutlta a base de datos

Publicado por E.T. (1108 intervenciones) el 10/01/2009 01:14:42
Prueba esto ya nada más para ver si es lo que pienso, esto funciona solo para campos tipo STRING, si lo intentas con campos numericos te va a marcar error

adoQuery1.Close;
adoQuery1.SQL.Clear;
adoquery1.SQL.Add('select * from table1 where nombre like '+QuotedStr(Edit1.Text+'%'));
campos := TStringList.Create;
campos.loadFromFile('Campos.txt');
for i:=1 to campos.count-1 do begin
adoquery1.SQL.Add('OR '+campos[i]+' like '+ QuotedStr(Edit1.Text+'%'));
end;
adoQuery1.Open;
campos.free;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar