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)
-   -   Importar datos de excel (.xls) a Interbase (.gdb) (https://www.clubdelphi.com/foros/showthread.php?t=92168)

Casimiro Notevi 18-08-2017 10:11:10

Desde Delphi puedes leer directamente la hoja de cálculo, y guardar la información en la base de datos.
Desde Delphi puedes leer un fichero de texto que hayas exportado desde la hoja de cálculo.
Con IBexpert puedes leer un fichero de texto que hayas exportado desde la hoja de cálculo (mi vieja versión de ibexpert no tiene esa opción).

Lo de Access no tengo ni idea para qué lo usas, es un paso intermedio inútil y pérdida de tiempo.

ClaraMaria 18-08-2017 22:35:09

Buenas tardes nuevamente, mire los datos que tenia en Excel los pase a ibexpert pero en una tabla nueva (Clientes2), entonces lo que hice fue crear una aplicación con esos campos y para que se muestre los datos en la aplicación he utilizado IBDatabase1, IbTransaction1 para la conexión y ademas (IBQuery1, DataSetProvider1, ClientDataSet1 y DataSource1) de esta manera los datos que están en la tabla nueva clientes 2 ya se pueden visualizar en la aplicación, ahora lo que quiero es como puedo hacer para que cuando la aplicación cumpla la función de guardar, lo pueda guardar en mi tabla existente que se llama Clientes1.

Estaba pensando algo así como este código
Código Delphi [-]
procedure TMantenimientodeClientes.GrabarClick(Sender: TObject);
begin
   DataModule1.ClientDataSet1.ApplyUpdates (0);
end;

end.

pero eso creo que lo guardaría en el mismo lugar donde esta supongo, y lo que quiero es pasar a mi tabla existente nose si se pueda darle una ubicación en el código hacia la tabla en donde quiero que se guarde.

Casimiro Notevi 18-08-2017 22:51:15

Sigues con las preguntas ambiguas, nosotros no vemos ni sabemos cómo es tu aplicación, lo que hace o lo que muestra.
Pero parece que das a entender que has importado los datos de la hoja de cálculo a una tabla de tu base de datos.
Si es así, entonces lo que tienes que hacer es pasarlos a la otra tabla.
Si las tablas son iguales:
Código SQL [-]
insert into tabla2 select * from tabla1
Si no son iguales:
Código SQL [-]
insert into tabla2 (campo1,campo2,campo3,...) values (select campo1,campo2,campo3,... from tabla1)
La sintaxis dependerá del nombre de tus tablas y campos.

ClaraMaria 18-08-2017 23:14:26

El problema esta que la tabla existente esta enlazada a otras 3 tablas mas y cuando se ingresa los registros manualmente y damos guardar automáticamente se crean en las 3 tablas, es por eso para no hacer muchos problemas decidí en crear las mismas tablas en una aplicacion con todos los campos iguales usando estos componentes (IBDatabase1, IbTransaction1 para la conexión y ademas (IBQuery1, DataSetProvider1, ClientDataSet1 y DataSource1) ahora todos los campos que puse en la aplicacion son estos:
Cita:

Nombre:Fecha Contrato / (Tipo del campo es un Edit) Este Edit muestra la fecha actual como default pero también se puede editar a cualquier fecha
Nombre:Tipo Persona / (Tipo del campo es un Combobox)
Nombre: Documento Identificación / (Tipo del campo es un Combobox)
Nombre: Apellido Paterno / (Tipo del campo es un Edit)
Nombre:Apellido Materno / (Tipo del campo es un Edit)
Nombre:Primer Nombre / (Tipo del campo es un Edit)
Nombre:Segundo Nombre / (Tipo del campo es un Edit)
Nombre:Estado Civil / (Tipo del campo es un Combobox)
Nombre:Zona / (Tipo del campo es un Combobox)
Nombre:Departamento / (Tipo del campo es un Combobox)
Nombre:Provincia / (Tipo del campo es un Combobox)
Nombre:Distrito / (Tipo del campo es un Combobox)
Nombre:Lugar / (Tipo del campo es un Combobox)
Nombre:Referencia / (Tipo del campo es un Edit)
entonces al tener todos esos campos enlazados a (IBQuery1, DataSetProvider1, ClientDataSet1 y DataSource1) con el codigo
Cita:

procedure TMantenimientodeClientes.GrabarClick(Sender: TObject);
begin
DataModule1.ClientDataSet1.ApplyUpdates (0);
end;

end.
hago que se registre nuevamente pero en la tabla existente de esa forma en las otras 3 tablas que están enlazadas también se registrara pero el unico problema es en estos campos
Cita:

Nombre:Fecha Contrato
Nombre: Numero de Documento Identificación
Nombre: Apellido Paterno
Nombre:Apellido Materno
Nombre:Primer Nombre
Nombre:Segundo Nombre
Nombre:Referencia
que están en la tabla clientes 2 y al usar el codigo de arriba DataModule1.ClientDataSet1.ApplyUpdates (0); me lo volverá registrar en esa misma tabla clientes 2, en este caso como puedo decirle al código que estos campos de la tabla clientes 2 me lo vuelva a registrar pero en clientes 1 con el siguiente codigo
Código Delphi [-]
DataModule1.ClientDataSet1.ApplyUpdates (0);
:(

Casimiro Notevi 19-08-2017 11:03:28

Lees todos los registros de la tabla importada (select * from tabla)
Cita:

Recorres los registros desde el 1 hasta el último
..Guardas el campo1, campo2, campo3 en la tabla1
..Guardas el campo4, campo5, campo6 en la tabla2
..Guardas el campo7, campo8, campo9 en la tabla3
..Pasas al siguiente registro
Fin


La franja horaria es GMT +2. Ahora son las 10:42:56.

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