Ir al contenido


Foto

No carga los datos en el DbGrid.


  • Por favor identifícate para responder
3 respuestas en este tema

#1 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 274 mensajes

Escrito 30 marzo 2021 - 10:32

Puede alguien ayudarme por favor, porque sigo sin salir de este bucle, y ya no puede más, porque vuelvo al mismo punto. He tenido que retroceder ya que quiero aprender hacer un simple reporte con estos datos.

No consigo que cargue en un simple DBGRID lo datos de una tabla "clientes" de una base datos dbclientes.sqlite. Los datos los inserta bien en la tabla y tiene 2 registros, pero al sacarlos en la grilla, nada. La intención crear la tabla y visualizarla en el DbGrid directamente.

 

ZQuery1 -> Zconnection1, connected=true; Datasource vacío / DbGrid->Datasource=Datasource1; Datasource=Dataset  vacío. He probado a cambiar todo estos valores y nada. En otros simples reviews sobre este ejemplo, están configurados así inicialmente.


php
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3. ZConnection1.Database:= ExtractFilePath(Application.ExeName) + 'dbclientes.sqlite'; // BB.DD llamada dbclientes.sqlite
  4. ZConnection1.LibraryLocation:= ExtractFilePath(Application.ExeName) + 'sqlite3.dll';
  5. ZConnection1.Protocol:= 'sqlite-3';
  6.  
  7. ZQuery1.Close; //Por si acaso
  8.  
  9. ZQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS "Clientes" (codigo varchar(10) PRIMARY KEY NOT NULL, nombre varchar(10), apellidos varchar(10))'; // Tabla Clientes
  10. ZQuery1.ExecSQL;
  11.  
  12. ZConnection1.Connect; // = ZConnection1.Connected:=true;
  13. if Zconnection1.Connected = true then
  14. begin
  15. Showmessage('Conexion con BB.DD OK');
  16. ZQuery1.Close;
  17. ZQuery1.SQL.Text := 'INSERT INTO "clientes" (codigo, nombre, apellidos) VALUES ("1", "pepe", "garcia")';
  18. ZQuery1.ExecSQL;
  19. ZQuery1.Close;
  20. ZQuery1.SQL.Text:= 'INSERT INTO "clientes" (codigo, nombre, apellidos) VALUES ("2", "carmen", "Pérez")';
  21. ZQuery1.ExecSQL

ZQuery1.Close;
       ZQuery1.SQL.Text := 'SELECT * from "Clientes"';
       ZQuery1.ExecSQL;
       ZQuery1.Open;
end;
 
Mil gracias.

  • 0

#2 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.035 mensajes
  • LocationSanto Domingo

Escrito 30 marzo 2021 - 06:03

ZQuery1.Close;
       ZQuery1.SQL.Text := 'SELECT * from "Clientes"';
       ZQuery1.ExecSQL;
       ZQuery1.Open;
end;
 
 
en que evento llamas esto.
 
te sobra el zquery1.ExecSQL en esta parte.
 
el componente Tdatasource deberia tener en dataset   zquery1

  • 0

#3 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 274 mensajes

Escrito 31 marzo 2021 - 03:38

Hol luk,

 

Muchas gracias por responder compañero. Parece ser que acaba de funcionar, pero no lo entiendo, porque en el DBGRID le he indicado por enésima vez en DataSource=DataSource1, pero en ese caso ha visualizado los datos. He retrocedido porque me es imposible sacar un simple reporte con REPORT, me salta cuando compilo y ejecuto indicando "Error en depuración GBD....". El reporte lo tengo montado, pero al ejecutar el reporte solamente, me falla "SQL ERROR. SQL LOGI ERROR O MISSING DATABASE". Seguiré probando sino tendré que preguntar, pero me vengo abajo porque no avanzo, incluso visualizando reviews.

 

Si tengo en un formulario ZQUERY1, ZQUERY2 debo tener su DATASOURCE1, DATASOURCE2, o no es necesario....?

 

Form1 (zconnection, datasource1, Zquery1)

 

Para el reporte:

 

Añado a este Form1(frrreport1, frrdbdataset1,Datasource2,ZQuery2)

 

(frrreport1->DataSet->ZQuery2,

frrdbdataset1->DataSet->Zquery2 

DataSet->DataSource2 y Zquery2,) -> Sería necesario otro componente datasource2 o con el datasource1 valdría?->

 

Datasource2-> Zquery2/ Datasource->Datasource2 se lo incluyo y tampoco.

ZQuery2->

 

Montamos el reporte y le doy a vista previa del reporte y zass error "SQL ERROR. SQL LOGIC ERROR o MISSING DATABASE". 

 

- Si en propiedades Zquery2 SQL -> Select * from clientes, me indica "SQL ERROR. SQL LOGIC ERROR o MISSING DATABASE"

- Si no añado Zquery2 nada SQL, -> SQL EMPLY y si ejecuto aplicación, "ERROR en depuración GBD.exe" y ya es imposible salir de ahi al repetir ejecución.

 

Como ves en el código inserto y luego cargo, tengo un solo ZQUERY1 porque la insercción la tenga anulada. Podría usar un solo ZQuery1 para INSERT, cierro y luego volver a usar ZQUERY1 para el SELECT? o tendría que usar dos ZQUERY1, ZQUERY2 para cada instrucción? Me resulta abstracto el tema del uso de ZQUERY,s, cuando usar uno para varias instrucciones o cuando tengo que usar varios.

 

Mil gracias


  • 0

#4 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 274 mensajes

Escrito 13 abril 2021 - 03:21

Por qué si creo un Datamodule1 e inserto en él los componentes Zconnection1, ZQuery1 y Datasource1 ya no me carga el DBGrid? Si los tengo puestos en el form1 funciona. No lo entiendo, ni comprendo porque, por más que veo todo, está en regla o eso pienso. Imposible de unificar criterios para afianzar lo aprendido, con estos problemas.

 

No es mejor ponerlos en una Unidad de modulos de datos? 

 

http://wikisend.com/...8216/dbgrid.rar

 

No podrán ser problema de las versión 5.6 que dispongo? Alguna version para probar superior a la 5.6 compatible con .lpi, e inferior a la version 6.10 que ya no lo es.


  • 0