Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   mostrar consulta sql en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=76007)

rogercito 03-10-2011 19:50:07

mostrar consulta sql en un dbgrid
 
hola. tengo un gran problema.. paso a contar .. tengo una tabla creada en database y yo lo que tengo que hacer es lo siguiente

1) tengo una tabla que contiene nombre de docentes yo lo que tengo que hacer escribir en un edit un nombre a buscar y que ese nombre con todos sus datos me lo muestre en el dbgrid. Mi profesor me mando un ejemplo de como utilizar la consulta pero no obtengo ningun resultado quisiera saber si me podrian ayudar . Cualquier duda sobre mi pregunta avisen

oscarac 03-10-2011 19:52:07

coloca algo del ejemplo aqui
pero basicamente necesitas

1 edit
1 adoquery
1 datasource asociado al query
1 dbgrid asociado al datasource

la consulta seria mas o menos asi

Código Delphi [-]
 
Select Campos from tuTabla where CampoNombre Like edit1.text + '%'

rogercito 03-10-2011 20:41:44

yo lo que tengo dentro de la consulta sql es lo siguiente

Código SQL [-]
select APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN
from C:\Documents and Settings\Administrador\Escritorio\taf\tablas\tabla_docentes.dbf
where APELLIDO=:parametro_ape
order by APELLIDO

y en el boton de buscar del fomulario lo que tengo es lo siguiente
Código Delphi [-]
procedure TForm38.Button1Click(Sender: TObject);
var
ape:string;
begin
 ape:=edit1.text;
 query1.params[0].asstring:=ape;
 query1.Close;
 query1.open;
end;

pero no funciona me sale un error y obviamente no hace nada.
Lo que me parece raro es que en dbgrid no me sale ninguno de los campos q se tendrian q llenar

Casimiro Noteví 03-10-2011 20:46:44

No olvides poner el código entre sus etiquetas pertinentes, ejemplo:



Creo recordar que es algo que te hemos informado varias veces.

ecfisa 03-10-2011 20:57:07

Hola rogercito.


Creo que tendrías que armar tu consulta más o menos de este modo:
Código Delphi [-]
...
var
  ape: string;
begin
  with Query do
  begin
    DatabaseName:= 'C:\Documents and Settings\Administrador\Escritorio\taf\tablas';
    Close;
    SQL.Clear;
    SQL.Add('select APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN ');
    SQL.Add('from docentes ');
    SQL.Add('where APPELLIDO = :parametro_ape');
    SQL.Add('order by APELLIDO');
    ParamByName('parametro_ape').AsString:= ape;
    Open;
  end;
...

Saludos.

Nota: Por favor, hacele caso a Casimiro ;)

rogercito 03-10-2011 21:03:34

Me sigue saliendo un error de q no se encuentran las tablas. Y la direccion esta bien puesta . Tendre mal Las propiedades del datasource, query y dbgrid. Ya no se que hacer

ecfisa 03-10-2011 21:13:05

Hola rogercito.

Si probaste el código que te puse y te dá ese error, creo que hay dos opciones:
  1. El nombre de la tabla no es docentes.dbf
  2. La ruta donde declaras que está ubicado docentes.dbf es incorrecta

Un saludo.

rogercito 03-10-2011 21:38:32

es que la ruta es la misma que utilizo todo el trabajo . .. por eso no entiendo porque me sale el error de la direccion si en todo el trabajo utilizo la misma direccion...

No sera que las propiedades del dbgrid, del datasource y del query estan mal?

ecfisa 03-10-2011 21:45:02

Cita:

Empezado por rogercito (Mensaje 414426)
es que la ruta es la misma que utilizo todo el trabajo . .. por eso no entiendo porque me sale el error de la direccion si en todo el trabajo utilizo la misma direccion...

No sera que las propiedades del dbgrid, del datasource y del query estan mal?

Y exáctamente, ¿ Cuál es el error que te arroja ?

Un saludo.

rogercito 03-10-2011 22:12:26

me dice invalid directory. Pero lo raro como te decia q ese directorio lo estoy usando y en los otros procesos q hago me toma el directorio perfectamente no me sale ningun error

ecfisa 03-10-2011 23:10:57

Para sacarte toda duda, podrías probar lo siguiente:
.Create una carpeta cualquiera, C:\Temp por ejemplo.
.Copiá desde C:\Documents and Settings\Administrador\Escritorio\taf\tablas, todos los archivos cuyo nombre sea docentes (docentes.*).

Echo esto tendrías que tener docentes.* en C:\Temp.

Luego probá con este código:
Código Delphi [-]
...
var
  ape: string;
begin
  with Query do
  begin
    DatabaseName:= 'C:\Temp';  // <- Aqui indicas la nueva ruta a la BD
    Close;
    SQL.Clear;
    SQL.Add('select APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN ');
    SQL.Add('from docentes ');
    SQL.Add('where APPELLIDO = :parametro_ape');
    SQL.Add('order by APELLIDO');
    ParamByName('parametro_ape').AsString:= ape;
    Open;
  end;
...
Tendría que funcionar sin ningún problema.

Un saludo.

Edito: Me faltó poner la asignación que orginalmente haces en tu código [ ape:=edit1.text; ].

rogercito 03-10-2011 23:58:11

me sigue saliendo el mismo error, ya no se q hacer, probe un monton de cosas y nada funciona, necesito resolver esto urgente, Si hay alguna otra sugerencia la acepto. Gracias

Casimiro Noteví 04-10-2011 00:21:10

Pues pon tu código que lo veamos, no podemos adivininar, no vemos tu pantalla ;)

rogercito 04-10-2011 00:27:25

paso el codigo que tengo

Código SQL [-]
select  APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN

from tabla_docentes

where APELLIDO=:parametro_ape

order by APELLIDO

el codigo del boton es

Código Delphi [-]
procedure TForm38.Button1Click(Sender: TObject);
var
ape:string;
begin
 with Query1 do
  begin
    DatabaseName:= 'C:\Documents and Settings\Administrador\Escritorio\docentes';  // <- Aqui indicas la nueva ruta a la BD
    Close;
    ape:=edit1.text;
    SQL.Clear;
    SQL.Add('select APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN ');
    SQL.Add('from docentes ');
    SQL.Add('where APPELLIDO = :parametro_ape');
    SQL.Add('order by APELLIDO');
    ParamByName('parametro_ape').AsString:= ape;
    Open;
  end;
 end;

en la propiedad del QUERY tengo

en databasename vacio
y en datasource vacio

la propiedad de DATASOURCE tengo

en dataset ---> query1

la propiedad del DBGRID tengo

datasource---> datasource1

no entiendo cual es problema .. lo que tambien pasa es que el dbgrid esta vacio no sale absolutamente nada .. y me tendrian que aparecer los nombres de los campos o estoy equivocado?

oscarac 04-10-2011 00:38:27

lee la respuesta de ecfisa
copia esas tablas docente.* a otra carpeta
y has la prueba como él te sugiere

ahora si no te sale error y el dbgrid esta vacio puede tratarse que el apellido que colocas en el edit no figure en la tabla o que sea parcial, entonces deberias modificar la consulta en la parte del where

Código Delphi [-]
where apellido = :Apellido
por
Código Delphi [-]
where Apellido like :Apellido

no olvides agregar el simbolo '%' al final en el like

rogercito 04-10-2011 04:40:25

muchas gracias por su ayuda. Ya pude hacer la consulta. El unico problema que tengo es que solamente me busca en la primer palabra guardada en el campo nombre de la tabla..

por ejemplo si yo pongo el apellido me lo busca perfectamente, pero si yo pongo el nombre no me muestra nada... Si me podrian ayudar con eso seria barbaro. Muchas Gracias.

ecfisa 04-10-2011 08:35:29

Cita:

Empezado por rogercito (Mensaje 414464)
por ejemplo si yo pongo el apellido me lo busca perfectamente, pero si yo pongo el nombre no me muestra nada... Si me podrian ayudar con eso seria barbaro. Muchas Gracias.

Bueno, ese comportamiento pareciera lógico ¿ No ? Si estas consultando por el nombre sobre el campo APPELLIDO... :rolleyes:

Ahora, si tenés la unión de apellido + nombre en el campo APELLIDO una forma de 'atajar' lo que te tiren en el Edit sería:
Código Delphi [-]
procedure TForm38.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    DatabaseName:= 'C:\Documents and Settings\Administrador\Escritorio\docentes';  // <- Aqui indicas la nueva ruta a la BD
    Close;
    SQL.Clear;
    SQL.Add('select APELLIDO,DNI,DIRECCION1,DIRECCION2,CPL,CPN,CPP,TELEFONO,E_MAIL1,E_MAIL2,A_MAIL3,E_MAIL4,ORIGEN ');
    SQL.Add('from docentes ');
    SQL.Add('where APPELLIDO like :parametro_ape');
    SQL.Add('order by APELLIDO');
    ParamByName('parametro_ape').AsString:= '%' + Edit1.Text + '%';
    Open;
  end;
end;

Un saludo. :)


La franja horaria es GMT +2. Ahora son las 07:49:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi