PDA

Ver la Versión Completa : Problema DBRGRid


jehemo
30-01-2012, 21:21:27
Alguien podria ayudarme, tengo el siguiente problema, estoy realizando una aplicacion con una base de datos en MySQL a traves de ADO y trato de mostrar los datos en un DBGRid pero cuando lo ejecuto el DBGRid me aparece vacio a continuacion el codigo


procedure TPrincipal.Consultar1Click(Sender: TObject);
var
FCEmpresas: TFCEmpresas;
begin
Datamodule2.AQEmpresas.SQL.Clear;
datamodule2.AQEmpresas.Active:= false;
Datamodule2.AQEmpresas.SQL.Text:= ('select id_empresa, empresa from empresas order by id_empresa');
FCEmpresas:= TFCEMpresas.Create(Application);
with FCEmpresas do
begin
DBGCEmpresas.DataSource:= Datamodule2.DSEmpresas;
datamodule2.AQEmpresas.Active:= true;
DBGCEmpresas.columns.add.fieldName:='id_empresa';
DBGCEmpresas.columns.Add.FieldName:= 'empresa';
DBGCEmpresas.Columns[0].Title.Caption:= 'Id';
DBGCEmpresas.Columns[1].Title.Caption:= 'Empresa';
Show();
end;

Casimiro Notevi
30-01-2012, 22:23:03
Recuerda poner etiquetas cuando muestres código, ejemplo:

http://neftali.clubdelphi.com/images/UtilizarTAGs.png


Tu código quedaría así:
procedure TPrincipal.Consultar1Click(Sender: TObject);
var
FCEmpresas: TFCEmpresas;
begin
Datamodule2.AQEmpresas.SQL.Clear;
datamodule2.AQEmpresas.Active:= false;
Datamodule2.AQEmpresas.SQL.Text:= ('select id_empresa, empresa from empresas order by id_empresa');
FCEmpresas:= TFCEMpresas.Create(Application);
with FCEmpresas do
begin
DBGCEmpresas.DataSource:= Datamodule2.DSEmpresas;
datamodule2.AQEmpresas.Active:= true;
DBGCEmpresas.columns.add.fieldName:='id_empresa';
DBGCEmpresas.columns.Add.FieldName:= 'empresa';
DBGCEmpresas.Columns[0].Title.Caption:= 'Id';
DBGCEmpresas.Columns[1].Title.Caption:= 'Empresa';
Show();
end;

Casimiro Notevi
30-01-2012, 23:01:47
Y no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración.

ecfisa
31-01-2012, 03:19:12
Hola.

Siempre trata de exponer con la mayor claridad lo que deseas realizar, aportando la mayor cantidad de detalles sobre la dificultad que tenes para conseguirlo.

Según entiendo, lo que deseas hacer es que, en el evento OnClick de un botón del form principal se abra otro form que contiene un TDBGrid que debe mostrar los campos id_empresa y empresa de la tabla empresas.

Como un ejemplo en el código:

var
FCEmpresas: TFCEmpresas;

no estás indicando de que componente desciende TFCEmpresas...

Entonces, suponiendo que AQEmpresas sea de tipo TADOQuery, TFCEmpresas de tipo TForm y DBGCEmpresas de tipo TDBGrid, creo que deberías probar de este modo:

procedure TTPrincipal.Consultar1Click(Sender: TObject);
begin
with Datamodule2.AQEmpresas do
begin
Close;
SQL.Text := 'select id_empresa, empresa from empresas order by id_empresa';
Open;
end;
FCEmpresas := TFCEmpresas.Create(Self);
with FCEmpresas do
begin
with DBGCEmpresas do
begin
Columns.Add.FieldName := 'id_empresa';
Columns.Add.FieldName := 'empresa';
Columns[0].Title.Caption := 'Id';
Columns[1].Title.Caption := 'Empresa';
DataSource := Datamodule2.DSEmpresas;
end;
Visible := True;
end;
end;

Eso si mi conjetura anterior hubiera sido acertada... :)

Un saludo.

jehemo
03-02-2012, 18:33:02
Gracias por la ayuda pero no he resuelto mi problema, el problema es que no me muestra la informacion de la base de datos en el dbgrid solo me aparece las columnas vacias supongo q me falta una instruccion para cargar los datos pero desconozco cual es

ecfisa
03-02-2012, 20:35:57
Hola jehemo.

El código que te puse anteriormente estaba previamente probado y muestra los campos correctamente en el DBGrid. Lo que me hace pensar que tabla 'empresas' pueda no tener datos...

Saludos.

jehemo
03-02-2012, 21:02:57
si tengo datos en la tabla, de hecho ejecuto el query tal cual en mysql y si me regresa informacion ya copie tu codigo tal cual y no me muestra datos

ecfisa
03-02-2012, 22:22:29
si tengo datos en la tabla, de hecho ejecuto el query tal cual en mysql y si me regresa informacion ya copie tu codigo tal cual y no me muestra datos
Hola jehemo.

Creo entonces que el problema no está en el planteo que has echo, tal vez se esté produciendo en otro lado.

Te adjunto una prueba muy simple con ADO y dbdemos.mbd que viene con Delphi por no tener acceso a tu bd obviamente. Pero funcionará sin problemas camiando los nombres de tabla y campos. La compilación del ejemplo se realizo en : C:\TEMP\jehemo\ (donde también está dbdemos.mbd)

Revisalo con tranquilidad y quizá te sirva para localizar el fallo.

Saludos.

jehemo
03-02-2012, 23:41:13
muchas gracias ya logre resolver el problema, este se encontraba en el datasource