Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Añadir a un Grid campos de una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=95390)

Ralevi 11-09-2021 18:21:44

Añadir a un Grid campos de una base de datos
 
Hola de nuevo, seguimos probando cosas, ahora le toco a las bases de datos. ;)

He creado una aplicación Android con una base de datos SQLite.

Añado al Form un FDConnection y un FDTable, sin inicializarlos.

La BD se conecta en el evento OnCreate mediante

Código Delphi [-]

var
ruta:string;

begin

 ruta:=TPath.GetPublicPath()+'/Turnos_SSV.db';

 FDConnection1.DriverName:='SQLite';
 FDConnection1.Params.Database:=ruta;
 FDConnection1.Connected:=true;

 FDTable1.TableName:='01_MANUEL_LORA';
 FDTable1.IndexFieldNames:='idx';
Se conecta y funciona bien, asigno los valores a varios TEdit mediante:

Código Delphi [-]
Edit_fecha.Text:=FDtable1.FieldByName('fecha').Value;
Edit_turno.Text:=FDTable1.FieldByName('turno').Value;
Hasta aqui todo bien

Ahora quería añadir un TGrid para visualizar los datos, si lo hago mediante LiveBindings me añade
TBindSourceDB, TBindingsList y TLinkGridToDataSource, y funciona, pero me visualiza en el Grid todos los campos, y yo solo quería ver dos.

¿Hay forma de asignar al Grid solo las columnas que necesito?

Gracias de antemano

Casimiro Notevi 11-09-2021 20:09:29

No he usado ese componente, pero supongo que será "como toda la vida", haz doble click encima y aparecerán todos, quita los que no quieras.

Ralevi 11-09-2021 20:39:26

Gracias por la respuesta.

El problema es que si en el IDE conecto la base de datos al FDConnect y al FDTable la App no arranca, se queda en el logo de inicio y se cuelga, he conseguido que vaya dejando las conexiones sin definir, y en el evento OnCreate lo pongo todo "a mano" y asi funciona. Que ocurre entonces, que como el FDTable en el IDE esta sin activar no puedo acceder a los campos, la consulta es si se pueden enlazar en tiempo de ejecucion los campos al Grid, o a cualquier componente visual de rejilla.

Casimiro Notevi 11-09-2021 21:53:06

Claro, en modo diseño la conectas, haces lo que necesites y luego la desconectas para compilarla.

Ralevi 11-09-2021 23:44:59

Ya lo intente, pero en cuanto conecto a la base de datos, aunque luego la desconecte, al compilar ya no me carga en el movil, se queda colgada.

Creo en el FireDAC Explorer la connection definition, la cargo en el FDConnection, y lo enlazo al FDTable. En el Deployment del proyecto añado la base de datos y la pongo en destino assets\

Pero si compilo ya no funciona en el movil, aunque esten inactivos los dos componentes

Neftali [Germán.Estévez] 13-09-2021 08:52:42

Cita:

Empezado por Ralevi (Mensaje 542773)
¿Hay forma de asignar al Grid solo las columnas que necesito?

Puedes acceder en runtime a la lista de columnas del TGrid y ocultar las que no necesites.
Asignalas todas y oculta las que no quieras.

Código Delphi [-]
Grid1.Columns[0].Visible := False;
Grid1.Columns[1].Visible := False;
...

Otra opción es utilizar una Query (no directamente la tabla) para hacer el "binding".

Por último puedes crear una Vista sólo con los campos que quieres ver y utilizar la Vista en lugar de la Tabla.

Ralevi 14-09-2021 03:36:11

Muchas gracias.
Al final lo mas sencillo es siempre lo mas efectivo, cree las vistas, y funciona justo como quería.


La franja horaria es GMT +2. Ahora son las 04:59:52.

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