Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problemas con cargar los registro de una tabla en un TDBgrid (https://www.clubdelphi.com/foros/showthread.php?t=83767)

edufg 25-07-2013 13:00:13

problemas con cargar los registro de una tabla en un TDBgrid
 
Hola, lo primero agradecer a la gente que hace este foro y los que colaboran en el.
Soy novato en programación y sobre todo en DELPHI, estoy creando un programa asociado a un bases de datos con tres tablas que van unidas entre si por un numero de registro, al inicial el programa aparece una pantalla con un TDBgrid (y varios menus he iconos) en el que aparecen todos los registros de una tabla en concreto, el problema es que no se me cargan los registros.
He creado una ventana con un módulo de bases de datos TDataModule y he creado la tres tablas con correspondientes tdatasource, asocio cada tabla con su tdatasource y con la TDBgrid de la pantalla inicial pero los datos guardados en la tabla no aparecen al ejecutar el programa.
He asociado todas la columnas del tadatasource al TDBgrid y nada.
Necesito vuestro consejo gracias de antemano

Casimiro Notevi 25-07-2013 13:20:49

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Con este libro no tendrás ninguna duda en delphi con bases de datos, además es gratis.

oscarac 25-07-2013 19:30:32

Cita:

Empezado por edufg (Mensaje 464495)
Hola, lo primero agradecer a la gente que hace este foro y los que colaboran en el.
Soy novato en programación y sobre todo en DELPHI, estoy creando un programa asociado a un bases de datos con tres tablas que van unidas entre si por un numero de registro, al inicial el programa aparece una pantalla con un TDBgrid (y varios menus he iconos) en el que aparecen todos los registros de una tabla en concreto, el problema es que no se me cargan los registros.
He creado una ventana con un módulo de bases de datos TDataModule y he creado la tres tablas con correspondientes tdatasource, asocio cada tabla con su tdatasource y con la TDBgrid de la pantalla inicial pero los datos guardados en la tabla no aparecen al ejecutar el programa.
He asociado todas la columnas del tadatasource al TDBgrid y nada.
Necesito vuestro consejo gracias de antemano

solo por curiosidad, las tablas las abres?
en tiempo de diseño? en ejecucion?
coloca el codigo

edufg 26-07-2013 11:45:27

Creo que ahí esta el problema ya que las tablas las guardo en la carpeta del proyecto, desconozco como cargarlas.
las tengo que cargar desde el programa principal o desde el modulo de base de datos.
He probado creando el alias en el proyecto y no se cargan las tablas.

ozsWizzard 26-07-2013 12:48:47

¿Qué base de datos usas, paradox?

¿Cómo esperas ver lo datos si no has configurado la conexión?

¿Qué tipo de conexión con base de datos usas?

edufg 26-07-2013 16:17:48

Hola ozsWizzard, gracias por tu interés.

La base de datos es dbase IV.
la conexión es dentro de object inspector de la tabla en elapartado databasename tiene el nombre del Alias, en tablename el nombre de las tabla creada y en tablatype la opcion ttbase.
la tabla la he creado con dbd32.exe

oscarac 26-07-2013 19:06:44

Cita:

Empezado por edufg (Mensaje 464546)
Hola ozsWizzard, gracias por tu interés.

La base de datos es dbase IV.
la conexión es dentro de object inspector de la tabla en elapartado databasename tiene el nombre del Alias, en tablename el nombre de las tabla creada y en tablatype la opcion ttbase.
la tabla la he creado con dbd32.exe

coloca codigo de como lo estas haciendo

ozsWizzard 28-07-2013 19:22:46

¿Estás usando TTable con BDE??

El databasename debe ser el nombre del componente TDatabase, que es el que tiene el aliasName de la base de datos del BDE.

edufg 29-07-2013 13:13:34

hola chicos gracias por ayudarme, el problema creo que está en que el data module aparece como no declarado, al llamar al data module me da ese error "undeclared identifier".
También he visto otro problema en el dataset que no estaba activo :eek:, ahora veo TBGRID los datos pero al ejecutar el programa no aparecen.

Casimiro Notevi 29-07-2013 13:20:47

Cita:

Empezado por Casimiro Notevi (Mensaje 464499)
Con este libro no tendrás ninguna duda en delphi con bases de datos, además es gratis.

Y no somos adivinos, pon el código ;)

edufg 29-07-2013 13:45:35

Perdonar por lo del código:
Código Delphi [-]
rogram Project1_diligencias;

uses
  Vcl.Forms,
  Windows,
  Dialogs,
  Unit1_diligencias in 'Unit1_diligencias.pas' {Ventana},
  Unit_diligencias in 'Unit_diligencias.pas' {Ventana_diligencias},
  DB in 'DB.pas' {B: TDataModule},
  Unit_filiaciones in 'Unit_filiaciones.pas' {Ventana_Filiaciones},
  Unit_datos in 'Unit_datos.pas' {Ventana_Datos},
  Unit_ayuda in 'Unit_ayuda.pas' {ventana_ayuda};

{$R *.res}

begin
  Application.Title := 'Diligencias 1.0';
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TVentana, Ventana);
  Application.CreateForm(TB, B); {aqui me da el problema del udeclared indentifier}
  Application.Run;
end.

edufg 29-07-2013 13:49:22

el codigo del data module:
Código Delphi [-]
  private
    { Private declarations }
    function abrir(var tabla:TTable):boolean;
  public
    { Public declarations }
  end;

var
  B: TB;

implementation
uses Unit1_diligencias;
{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

procedure TB.DataModuleCreate(Sender: TObject);
begin

     Diligen.DataBaseName:= Ventana.path_aplicacion;
     Filiaciones.DataBaseName:=Diligen.DataBaseName;
     solicitarDatos.DataBaseName:=Diligen.DataBaseName;
     if (not abrir(Diligen)) or (not abrir(Filiaciones)) or (not abrir(solicitarDatos))  then Halt;


end;

function TB.abrir(var tabla:TTable):boolean;
begin
     try     // Se intenta activar la tabla.
        Diligen.active:=True;
     except  {Si no se ha podido, no se produce ningún error, sino
              que el flujo del programa salta a esta cláusula y
              se muestra un mensaje.}
        Messagedlg('No se puede abrir la base de datos: '
                                +tabla.tablename, mtError, [mbOK], 0);
     end;
    // abrir devuelve True si la tabla se ha podido abrir y False si no.
     abrir := (Diligen.active);

end;
end.

ozsWizzard 29-07-2013 17:49:59

Creo que tienes un lío que pa qué.

Aún no nos has dicho con que componentes quieres conectar a base de datos (y si lo has dicho, perdona, pero no lo he visto).

Viendo el lío que tienes y que encima los componentes, por lo que parece, intentas crearlos en tiempo de ejecución (porque están en la unidad "Unit1_diligencias", no?) aunque no veo donde se crean porque cuando va al create del DataModule no se ha ejecutado nada que tenga que ver con eso (que supongo que estará en el create del formulario TVentana).

Pero lo dicho, no sé ni como quieres hacer las cosas.

edufg 29-07-2013 23:10:18

Hola de nuevo.
Perdonar mi ignorancia, el ser novato en esto es lo que tiene.
Lo primero, se trata de un trabajo final para un curso que estoy realizando de DELPHI, estoy utilizando DELPHI XE2.
Para el trabajo he creado con DATABASE DES

edufg 29-07-2013 23:40:19

Hola de nuevo.
Perdonar mi ignorancia, el ser novato en esto es lo que tiene.
Lo primero, se trata de un trabajo final para un curso que estoy realizando de DELPHI, estoy utilizando DELPHI XE2.
Para el trabajo he creado con DATABASE DESkTOP tres tablas dbaseVI y las he guardado en la carpeta del proyecto, es de señalar que me descargado el programa DATABASE DESkTOP y desde ahi las he creado y he introducido datos de ejemplo para probarlo.
He iniciado delphi y he creado una venta principal con TMAINMENU y TTOOBAR con varios iconos y un TPAGECONTRON con tres hojas donde se encuentran en cada una en TBDGRID donde apareceran los datos de registro de las tablas.
También he creado tres ventanas hijas donde se introducen y modifican los datos de las tablas, dentro de ellas se encuentran los DBEDIT, DBMEMO., etc..., y varios botones aceptar y cerrar.
Para controlar mejor las datos de las tablas he creado un DATA MODULO donde se encuentran los tres TTABLE con sus respectivos TDATASOURCE, cada tablas asociada a su datasource.
Desconozco como puedo hacer que la tabla sea leída desde la carpeta donde guardo el ejecutable.
Lo que he hecho es crear un alias dentro de la carpeta del proyecto y configuro los databasename de las tablas con el alias, el TABLENAME con el nombre de la tabla creada por mi y el TABLETYPE con ttdbase.
Una vez configurado el DATA MODULE me voy a los DBGRID de la ventana Principal y los asocio a las TDATASOURCE pero no me aparecen los datos.
La pregunta de momento es ¿Cómo cargo los datos de las tablas, desde el ejecutable, al iniciar el programa?.

Casimiro Notevi 29-07-2013 23:56:55

Bueno, una vez más te recomiendo este libro. Si quieres aprender todo sobre delphi y bases de datos, ese es tu libro.
Cita:

Empezado por Casimiro Notevi (Mensaje 464623)
Con este libro no tendrás ninguna duda en delphi con bases de datos, además es gratis.


edufg 30-07-2013 00:15:23

Gracias, en eso estoy

edufg 31-07-2013 11:27:14

Hola he encontrado el problema y es que el data module se cargaba al iniciar el programa, y al llamara a las datasource no los detectaba.
Ahora me ha surgido un nuevo problema en el TOOL PALETTE del date module no aparecen las BDE.

edufg 31-07-2013 11:28:29

predonar pero quise decir que el data module NO se cargaba al iniciar el programa.

edufg 31-07-2013 12:37:35

-- Perdonar chicos, pero he resuelto el problema al ejecutar el programa ya me detecta los registros en el tBGRID, el problema estaba que el data module no se cargaba desde el principio, he tenido que eliminar el que había creado y crear uno nuevo, instalar los componentes TTABLA, TDATASOURCE y enlazarlos, para que se cargara desde el principio en la ventana principal me voy al meno PROJECT/VIEW SOURCE y he modificado el data module y lo he puesto por encima de la ventana principal
Código Delphi [-]
program Project1_diligencias;

uses
  Vcl.Forms,
  Windows,
  Dialogs,
  Unit1_diligencias in 'Unit1_diligencias.pas' {Ventana},
  Unit_diligencias in 'Unit_diligencias.pas' {Ventana_diligencias},
  Unit_filiaciones in 'Unit_filiaciones.pas' {Ventana_Filiaciones},
  Unit_datos in 'Unit_datos.pas' {Ventana_Datos},
  Unit_ayuda in 'Unit_ayuda.pas' {ventana_ayuda},
  bd in 'bd.pas' {B: TDataModule};

{$R *.res}

begin
  Application.Title := 'Diligencias 1.0';
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TB, B); 
  {lo que he cambiado es esto TB, que al crear el data module aparecía por debajo de TVentana, consiguiendo así que se inicie desde el principio }
  Application.CreateForm(TVentana, Ventana);
  Application.Run;
end.
Bueno continuo con mi proyecto espero no tener problemas nuevamente.
De todas formas gracias por vuestra ayuda y atención.


La franja horaria es GMT +2. Ahora son las 07:45:21.

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