Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Pasar una tabla o base de dato a otra (https://www.clubdelphi.com/foros/showthread.php?t=87457)

maxzama 08-01-2015 16:46:30

Pasar una tabla o base de dato a otra
 
-Hola, necesito pasar unos datos de una tabla a otra tabla, que octiene los mismo campos.

-Me pueden decir, que me hace falta o que ecolocado demas...


Error que muestra el sistema:

Código Delphi [-]
access violation at address 006D3BE5 in module Asistencia.exe write of address 0000000.

utilizo:

Delphi xe2, IBDataset. Firebird...

-IBDataset: ASISTENCIA_MADRE1.

El Codigo que se esta utilizando:

Código Delphi [-]
procedure TForm4.BitBtn1Click(Sender: TObject);
begin
    if application.MessageBox('DESEA GUARDAR?','guardar un Registro',
     MB_ICONQUESTION OR MB_YESNO) = ID_YES then
       begin
           Dmodulo.ASISTENCIA_MADRE1.Close;
           Dmodulo.ASISTENCIA_MADRE1.SelectSQL.Text:=Dmodulo.ASISTENCIA_MADRE1.InsertSQL.Text;
           DMODULO.ASISTENCIA_MADRE1.Open;
           Dmodulo.ASISTENCIA_MADRE1.First;
           while not Dmodulo.ASISTENCIA_MADRE1.Eof do
           begin
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('TIPO_DOCUMENTO').Value:=Dmodulo.Asistencia.FieldByName('TIPO_  DOCUMENTO').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('CEDULA').Value:=Dmodulo.Asistencia.FieldByName('CEDULA').Valu  e;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('NOMBRE').Value:=Dmodulo.Asistencia.FieldByName('NOMBRE').Valu  e;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('APELLIDO').Value:=Dmodulo.Asistencia.FieldByName('APELLIDO').  Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('CODIGO_COLEGUIO').Value:=Dmodulo.Asistencia.FieldByName('CODI  GO_COLEGUIO').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('COLEGUIO').Value:=Dmodulo.Asistencia.FieldByName('COLEGUIO').  Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO').Value:=Dmodulo.Asistencia.FieldByName('DIAS_  TRABAJADO').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('TLF_FIJO').Value:=Dmodulo.Asistencia.FieldByName('TLF_FIJO').  Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('TLF_CELULAR').Value:=Dmodulo.Asistencia.FieldByName('TLF_CELU  LAR').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('CORREO').Value:=Dmodulo.Asistencia.FieldByName('CORREO').Valu  e;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('MUNICIPIO').Value:=Dmodulo.Asistencia.FieldByName('MUNICIPIO'  ).Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('PARROQUIA').Value:=Dmodulo.Asistencia.FieldByName('PARROQUIA'  ).Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO1').Value:=Dmodulo.Asistencia.FieldByName('DIAS  _TRABAJADO1').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO2').Value:=Dmodulo.Asistencia.FieldByName('DIAS  _TRABAJADO2').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO3').Value:=Dmodulo.Asistencia.FieldByName('DIAS  _TRABAJADO3').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO4').Value:=Dmodulo.Asistencia.FieldByName('DIAS  _TRABAJADO4').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('DIAS_TRABAJADO5').Value:=Dmodulo.Asistencia.FieldByName('DIAS  _TRABAJADO5').Value;
               Dmodulo.ASISTENCIA_MADRE1.ParamByName('Monto').Value:=Dmodulo.Asistencia.FieldByName('Monto').Value;

               Dmodulo.ASISTENCIA_MADRE1.Next;

               Dmodulo.ASISTENCIA_MADRE1.ExecSQL;
               Dmodulo.ibt.Commit;  // ibt ibtrasaction
               Dmodulo.ASISTENCIA_MADRE1.selectSQL.Clear ;
               Dmodulo.ASISTENCIA_MADRE1.selectSQL.Add('select * from ASISTENCIA_MADRE ');
               Dmodulo.ASISTENCIA_MADRE1.Open;

           SHOWMESSAGE('El Monto a sido Insertado');
       END;
     end;
end;


Espero sus respuesta, Por favor y gracias...

Casimiro Noteví 08-01-2015 16:49:18

Como ya supongo que lo sabes, pero aquí lo vuelvo a poner:
Código SQL [-]
insert into tabladestino select * from tablaorigen

Pregunta si tienes alguna duda :)

maxzama 08-01-2015 17:05:10

Pasar una tabla o base de dato a otra
 
tambien ise esta modificación, en el codigo que tengo en el IBDataset.(y hago llamado en el codigo) Y me da el siguiente error.

Error que muestra el sistema:

Código Delphi [-]
Dynamic SQL error
SQL error code=-104
Token unknown - line 5, column 1
values.


Codigo en el IBDataset:

Código Delphi [-]
insert into ASISTENCIA_MADRE select * from DIASMADRE
  (CEDULA,APELLIDO, CODIGO_COLEGUIO, COLEGUIO, CORREO, DIAS_TRABAJADO, DIAS_TRABAJADO1, 
   DIAS_TRABAJADO2, DIAS_TRABAJADO3, DIAS_TRABAJADO4, DIAS_TRABAJADO5, 
   MONTO, MUNICIPIO, NOMBRE, PARROQUIA, TIPO_DOCUMENTO, TLF_CELULAR, TLF_FIJO)
values
  (:CEDULA,:APELLIDO, :CODIGO_COLEGUIO, :COLEGUIO, :CORREO, :DIAS_TRABAJADO, :DIAS_TRABAJADO1, 
   :DIAS_TRABAJADO2, :DIAS_TRABAJADO3, :DIAS_TRABAJADO4, :DIAS_TRABAJADO5, 
   :MONTO, :MUNICIPIO, :NOMBRE, :PARROQUIA, :TIPO_DOCUMENTO, :TLF_CELULAR, 
   :TLF_FIJO)

Casimiro Noteví 08-01-2015 17:07:32

Claro, es una sentencia sql no válida.
Pero ¿eso tiene algo que ver con lo anterior?

maxzama 08-01-2015 17:38:59

Pasar una tabla o base de dato a otra
 
Si tiene que ver. estoy asiendo el llamado aqui:

IBdataset:ASISTENCIA_MADRE1.

Código Delphi [-]
// Dmodulo.ASISTENCIA_MADRE1.InsertSQL.Text;

Código Delphi [-]
Dmodulo.ASISTENCIA_MADRE1.Close;
Dmodulo.ASISTENCIA_MADRE1.SelectSQL.Text:=Dmodulo.ASISTENCIA_MADRE1.InsertSQL.Text;
DMODULO.ASISTENCIA_MADRE1.Open;

___________________________________________________

este es mi nuevo codigo, y tambien me da error:

Código Delphi [-]
insert into ASISTENCIA_MADRE  
  (CEDULA,APELLIDO, APELLIDO, CODIGO_COLEGUIO, CODIGO_COLEGUIO, COLEGUIO, COLEGUIO, 
   CORREO, CORREO, DIAS_TRABAJADO, DIAS_TRABAJADO1, DIAS_TRABAJADO1, 
   DIAS_TRABAJADO2, DIAS_TRABAJADO2, DIAS_TRABAJADO3, DIAS_TRABAJADO3, 
   DIAS_TRABAJADO4, DIAS_TRABAJADO4, DIAS_TRABAJADO5, DIAS_TRABAJADO5, 
   DIAS_TRABAJADO, MONTO, MONTO, MUNICIPIO, MUNICIPIO, NOMBRE, NOMBRE, 
   PARROQUIA, PARROQUIA, TIPO_DOCUMENTO, TIPO_DOCUMENTO, TLF_CELULAR, 
   TLF_CELULAR, TLF_FIJO, TLF_FIJO)
values
  (:CEDULA,:APELLIDO, :APELLIDO, :CODIGO_COLEGUIO, :CODIGO_COLEGUIO, :COLEGUIO, 
   :COLEGUIO, :CORREO, :CORREO, : DIAS_TRABAJADO, : DIAS_TRABAJADO1, : DIAS_TRABAJADO1, 
   : DIAS_TRABAJADO2, : DIAS_TRABAJADO2, : DIAS_TRABAJADO3, : DIAS_TRABAJADO3, 
   : DIAS_TRABAJADO4, : DIAS_TRABAJADO4, : DIAS_TRABAJADO5, : DIAS_TRABAJADO5, 
   : DIAS_TRABAJADO, :MONTO, :MONTO1, :MUNICIPIO, :MUNICIPIO1, :NOMBRE, 
   :NOMBRE, :PARROQUIA, :PARROQUIA, :TIPO_DOCUMENTO, :TIPO_DOCUMENTO, 
   :TLF_CELULAR, :TLF_CELULAR, :TLF_FIJO, :TLF_FIJO)

Casimiro Noteví 08-01-2015 17:42:19

Creo que no nos estamos entendiendo :D

Tú quieres pasar todos los registros de una tabla a otra tabla que tiene los mismo campos, ¿es eso?

maxzama 08-01-2015 17:43:34

Si, quiero pasar una tabla a otra, con los mismo campos...

Casimiro Noteví 08-01-2015 17:49:29

Cita:

Empezado por maxzama (Mensaje 487448)
Si, quiero pasar una tabla a otra, con los mismo campos...

Bien, pues entonces solamente tienes que hacer lo que te he indicado al principio.
Te sobra todo ese código que has puesto.
Unicamente:
Código SQL [-]
insert into tabladestino select * from tablafuente
Pon ese código en un ibquery y lo ejecutas, nada más.

maxzama 08-01-2015 18:31:10

Aver si te entiendo ese codigo lo coloco Donde:

En el IBQuery(donde hago el llamado a la tabla): insert into tabladestino select * from tablafuente

y

En el boton donde le Doy la Acción. De pasar de una tabla a otra:

Dmodulo.ASISTENCIA_MADRE.Close;
Dmodulo.ASISTENCIA_MADRE.SQL.Text:='insert into ASISTENCIA_MADRE Select * from DiasMadres (APELLIDO, APELLIDO, CEDULA, CEDULA,CODIGO_COLEGUIO,CODIGO_COLEGUIO,COLEGUIO, COLEGUIO, CORREO, CORREO, DIAS_TRABAJADO, DIAS_TRABAJADO1,DIAS_TRABAJADO1, DIAS_TRABAJADO2, DIAS_TRABAJADO2, DIAS_TRABAJADO3,DIAS_TRABAJADO3, DIAS_TRABAJADO4, DIAS_TRABAJADO4, DIAS_TRABAJADO5, DIAS_TRABAJADO5, DIAS_TRABAJADO, MONTO, MONTO, MUNICIPIO, MUNICIPIO, NOMBRE, NOMBRE, PARROQUIA, PARROQUIA, TIPO_DOCUMENTO, TIPO_DOCUMENTO, TLF_CELULAR, TLF_CELULAR, TLF_FIJO, TLF_FIJO) values (:APELLIDO, :APELLIDO, :CEDULA, :CEDULA, :CODIGO_COLEGUIO, :CODIGO_COLEGUIO, :COLEGUIO, :COLEGUIO,:CORREO, :CORREO, : DIAS_TRABAJADO, : DIAS_TRABAJADO1, : DIAS_TRABAJADO1, : DIAS_TRABAJADO2, : DIAS_TRABAJADO2, : DIAS_TRABAJADO3,
: DIAS_TRABAJADO3, : DIAS_TRABAJADO4, : DIAS_TRABAJADO4, : DIAS_TRABAJADO5, : DIAS_TRABAJADO5, : DIAS_TRABAJADO, :MONTO, :MONTO, :MUNICIPIO, :MUNICIPIO,:NOMBRE, :NOMBRE, :PARROQUIA, :PARROQUIA, :TIPO_DOCUMENTO, :TIPO_DOCUMENTO, :TLF_CELULAR, :TLF_CELULAR, :TLF_FIJO, :TLF_FIJO)';

DMODULO.ASISTENCIA_MADRE.Open;


O no es asi en ninguna de las dos?...

Casimiro Noteví 08-01-2015 18:37:35

Si quieres pasar todos los registros de una tabla a otra tabla.
Código SQL [-]
insert into tabladestino select * from tablafuente
Nada más.

Pero si quieres hacer otra cosa, entonces no te has explicado bien.

maxzama 08-01-2015 18:51:26

No quiero hacer otra funcion, solo quiero pasar los datos de una tabla a otra.

Por eso te preguntaba en el comentario anterior, si era asi. como lo tengo que hacer.

Ya que tengo un IBQuery donde llamo la base de dato.

Y un boton Donde le doy la Acción o le digo que haga. // que al precionarlo me pasa los datos de una tabla a otra.

Disculpas las molestias. Pero no se, si es que me hago entender...

Casimiro Noteví 08-01-2015 19:01:30

Pues no sé, creo que está bastante claro. Tú dices que quieres pasar TODOS los registros de una tabla o otra tabla.
Yo te contesto que solamente has de ejecutar la siguiente sentencia: insert into tabladestino select * from tablaorigen
Eso es todo, no tienes nada más que hacer, sobra todo tu código, bórralo, elimínalo, no sirve para nada, no hace falta. Así de simple.

maxzama 08-01-2015 19:07:15

Disculpa que moleste nuevamente.

Bueno creo que no me hecho entender ese codigo, Que me estas dando.

Lo tengo que colocar en el boton donde estoy dando la accion o en el IBQUERY(donde hago el llamado de la base de dato).

Casimiro Noteví 08-01-2015 19:20:13

Si tienes un botón, al pulsarlo, por ejemplo
Código SQL [-]
ibquery.close;
ibquery.selectsql.text := "insert into tabledestino select * from tablafuente";
ibquery.execsql;

maxzama 08-01-2015 19:49:04

Aun me sigue dando error:

Error del sistema:

Código Delphi [-]
access violation at address 006D3BE5 in module Asistencia.exe write of address 0000000.

Este es el codigo que se tiene en el boton:

Código Delphi [-]
if application.MessageBox('DESEA GUARDAR?','guardar un Registro',
     MB_ICONQUESTION OR MB_YESNO) = ID_YES then
       begin
           Dmodulo.ASISTENCIA_MADRE.Close;
           Dmodulo.ASISTENCIA_MADRE.SQL.Text:='insert into ASISTENCIA_MADRE select * from DiasMadre';
           DMODULO.ASISTENCIA_MADRE.Open;
           Dmodulo.ASISTENCIA_MADRE.First;

           Dmodulo.ASISTENCIA_MADRE.ExecSQL;
               Dmodulo.ibt.Commit;  // ibt ibtrasaction
               Dmodulo.ASISTENCIA_MADRE.SQL.Clear ;
               Dmodulo.ASISTENCIA_MADRE.SQL.Add('select * from ASISTENCIA_MADRE ');
               Dmodulo.ASISTENCIA_MADRE.Open;

           SHOWMESSAGE('El Monto a sido Insertado');
       end;


Y en el IBQuery tengo el siguiente codigo:

Select * from ASISTENCIA_MADRE

Casimiro Noteví 08-01-2015 20:05:04

¿Y eso qué tiene que ver con lo que te he escrito una cuantas veces? :confused:

Casimiro Noteví 08-01-2015 20:07:26

En ese Data Module llamado Dmodulo, pon un ibquery.
Luego copias este código al pulsar el botón (y borra todo lo que tienes escrito)
Código SQL [-]
ibquery.close;
ibquery.selectsql.text := "insert into tabledestino select * from tablafuente";
ibquery.execsql;

maxzama 08-01-2015 20:32:46

El Error que tenia en todo el codigo era:

Código Delphi [-]
DMODULO.ASISTENCIA_MADRE.Open;

Código Delphi [-]
if application.MessageBox('DESEA GUARDAR?','guardar un Registro',
     MB_ICONQUESTION OR MB_YESNO) = ID_YES then
       begin
           Dmodulo.ASISTENCIA_MADRE.Close;
           Dmodulo.ASISTENCIA_MADRE.SQL.Text:='insert into ASISTENCIA_MADRE select * from DiasMadre';
           DMODULO.ASISTENCIA_MADRE.Open;

           Dmodulo.ASISTENCIA_MADRE.ExecSQL;
               Dmodulo.ibt.Commit;  // ibt ibtrasaction
               Dmodulo.ASISTENCIA_MADRE.SQL.Clear ;
               Dmodulo.ASISTENCIA_MADRE.SQL.Add('select * from ASISTENCIA_MADRE ');
               Dmodulo.ASISTENCIA_MADRE.Open;

           SHOWMESSAGE('El Monto a sido Insertado');
       end;

// era por algo tonto(que no corria), y lo tenia en mis narices y no lo vi.

Gracias por la Ayuda panal. y la pasiencia...


La franja horaria es GMT +2. Ahora son las 04:27:56.

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