Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Datos de una tabla a otra (https://www.clubdelphi.com/foros/showthread.php?t=42237)

alcides 09-04-2007 15:19:44

Datos de una tabla a otra
 
Hola para todos,

utilizo delphi 7 y mis tablas estan en access
resulta que tengo dos tablas, Tbl_Encabezado y Tbl_encabezado_cheques y todos los meses paso todos los datos de mi tabla Tbl_Encabezado_cheques a la tabla Tbl_Encabezado, utilizo parametro de fecha: el caso es que paso enero bien, cuando paso a febrero se supone que como utilizo parametro de fecha debe obviar a enero pero entonces me duplica la informacion de enero. Esto es lo que tengo.

Código SQL [-]
         Tbl_Encabezado.Insert;
          qry_Encabezado_cheques.Close;
          qry_Encabezado_cheques.Parameters.ParamByName('pfecha_inicial').Value := strtodate(fecha_inicial.Text);
          qry_Encabezado_cheques.Parameters.ParamByName('pfecha_final').Value   := strtodate(fecha_final.Text);
          qry_Encabezado_cheques.Open;
    While not qry_Encabezado_cheques.eof do begin
          Tbl_Encabezado.FieldByName('numero_transacion').Value := qry_encabezado_chequesnumero_cheques.Value;
          Tbl_Encabezado.FieldByName('fecha_transacion').Value  := qry_encabezado_chequesfecha_cheques.Value;
          Tbl_Encabezado.FieldByName('concepto').Value          := qry_encabezado_chequesconcepto_cheques1.Value;
          Tbl_Encabezado.FieldByName('valor_transacion').Value  := qry_encabezado_chequesvalor_cheques.Value;
          Tbl_Encabezado.FieldByName('debito').Value            := qry_encabezado_chequesdebito.Value;
          Tbl_Encabezado.FieldByName('credito').Value           := qry_encabezado_chequescredito.Value;
          Tbl_Encabezado.FieldByName('beneficiario').Value      := qry_encabezado_chequesbeneficiario_cheques.Value;
          Tbl_Encabezado.FieldByName('nulo').Value              := qry_encabezado_chequesnulo_cheques.Value;
          Tbl_Encabezado.Post;
          Tbl_Encabezado.Close;
          Tbl_Encabezado.Open;
          Tbl_Encabezado.Insert;
          qry_Encabezado_cheques.next
end

Gracias mil,


Alcides
Rep.Dom.

Lepe 09-04-2007 15:43:39

Tbl_Encabezado.Insert;

debe ser la primera línea dentro del bucle while, si Tbl_Encabezado no está en modo edición, debería lanzar un error. Aparte de ese error, estarías "machacando" un registro que ya existe en Tbl_Encabezado al asignar los valores de los campos.

- Como consejo, no uses un Edit para las fechas, en su lugar usa un TDateTimePicker. Quizás haya problemas con el formato de fecha dd/mm/yyyy o mm/dd/yyyy y por eso interpreta las fechas mal.

- Sin el SQL de qry_Encabezado_cheques, poco podemos adivinar.

Saludos

alcides 09-04-2007 16:55:28

Gracias Lepe por las recomendaciones,

la tabla Tbl_Encabezados debo manejarla en insert porque los registros que llevo a ella son nuevo, y tu me dices que debo tenerla en edit, de todas maneras voy hacer unos ajustes dentro del bucle.


Gracias mil,


Alcides
Rep.Dom.

Lepe 09-04-2007 19:35:36

Lo que yo digo es esto:
Código Delphi [-]
        
// Tbl_Encabezado.Insert; aqui esto sobra.
          qry_Encabezado_cheques.Close;
          qry_Encabezado_cheques.Parameters.ParamByName('pfecha_inicial').Value := strtodate(fecha_inicial.Text);
          qry_Encabezado_cheques.Parameters.ParamByName('pfecha_final').Value   := strtodate(fecha_final.Text);
          qry_Encabezado_cheques.Open;
    While not qry_Encabezado_cheques.eof do begin
          Tbl_Encabezado.Insert; 
// ahora si, antes de dar valores, y sabiendo
// que hay un registro en qry_encabezado, pues hacemos el insert.


          Tbl_Encabezado.FieldByName('numero_transacion').Value := qry_encabezado_chequesnumero_cheques.Value;
          Tbl_Encabezado.FieldByName('fecha_transacion').Value  := qry_encabezado_chequesfecha_cheques.Value;
          Tbl_Encabezado.FieldByName('concepto').Value          := qry_encabezado_chequesconcepto_cheques1.Value;
          Tbl_Encabezado.FieldByName('valor_transacion').Value  := qry_encabezado_chequesvalor_cheques.Value;
          Tbl_Encabezado.FieldByName('debito').Value            := qry_encabezado_chequesdebito.Value;
          Tbl_Encabezado.FieldByName('credito').Value           := qry_encabezado_chequescredito.Value;
          Tbl_Encabezado.FieldByName('beneficiario').Value      := qry_encabezado_chequesbeneficiario_cheques.Value;
          Tbl_Encabezado.FieldByName('nulo').Value              := qry_encabezado_chequesnulo_cheques.Value;
          Tbl_Encabezado.Post;
          Tbl_Encabezado.Close;
          Tbl_Encabezado.Open;
//          Tbl_Encabezado.Insert; esto provocaría que al terminar el bucle
// quede un registro en blanco en la tabla Encabezado, es decir,
// siempre que se ejecute el bucle, dejará un registro en blanco.
          qry_Encabezado_cheques.next
end

Saludos

alcides 09-04-2007 20:22:22

Gracias Lepe, se ejecuto perfectamente bien.


Gracias mil,


Alcides
Rep.Dom.


La franja horaria es GMT +2. Ahora son las 20:58:43.

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