Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Agregar registros a una tabla con datos (https://www.clubdelphi.com/foros/showthread.php?t=28927)

alcides 06-01-2006 20:51:48

Agregar registros a una tabla con datos
 
Hola a todos,

usando delphi 7 y mis tablas en access.
tengo lo siguiente:

tabla detalle
cns__detalle
numero_transacion
fecha_transacion
cuenta
descripcion
debito
credito


tabla detalle_cheques
cns_cheques
numero_cheques
fecha_cheques
cuenta_cheques
descripcion_cheques
debito_cheques
credito_cheques

lo que quiero es lo siguiente a mi tabla detalle agregarle los registros de
mi tabla detalle_cheques en un parametro de fecha.

mi tabla detalle tiene registros.

si me pueden dar una manito por fa.

gracias mil

Alcides
Rep.Dom.

delphi.com.ar 06-01-2006 20:57:48

Cita:

Empezado por alcides
lo que quiero es lo siguiente a mi tabla detalle agregarle los registros de mi tabla detalle_cheques en un parametro de fecha.

No entiendo esto de "en un parametro de fecha"... Quieres agregar en la tabla detalle los registros de detalle_cheques que tengan cierto valor en fecha??

Código SQL [-]
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3)
SELECT CAMPO1, CAMPO2, CAMPO3
FROM TABLA2
WHERE CAMPOX = :Parametro

alcides 06-01-2006 21:03:53

gracias delphi.com.ar,

parametro de fecha: los registros que esten contenido por ejemplo entre las fechas 01/02/2005 hasta 28/02/2005.


gracias mil

Alcides
Rep.Dom.

vtdeleon 07-01-2006 01:05:35

Saludos
Código SQL [-]
INSERT INTO TABLA1 (CAMPO1, CAMPO2, CAMPO3)
SELECT CAMPO1, CAMPO2, CAMPO3
FROM TABLA2
WHERE CAMPOX Between :Parametro1 and :Parametro2
Suerte

alcides 07-01-2006 13:40:06

Código:

INSERT INTO Detalle (numero_transacion, fecha_transacion, debito, credito)
SELECT numero_cheques, fecha_cheques, debito, credito
FROM detalle_cheques
WHERE fecha_cheques Between :PFECHA_INICIAL and :PFECHA_FINAL

esto es lo que tengo y presenta el error 'commandtext does not return a result set'

vtdeleon 07-01-2006 16:52:46

Saludos

Creo uqe estas usando Open en vez de ExecSql

alcides 10-01-2006 20:45:57

gracias vtdeleon,
una duda

esto es lo que tengo.
Código Delphi [-]
qry_detalle.SQL.Clear;
try
  qry_detalle.SQL.Add('INSERT INTO DETALLE(numero_transacion, fecha_transacion, cuenta, descripcion, debito, credito)');
  qry_detalle.SQL.Add('SELECT numero_cheques, fecha_cheques, cuenta, descripcion, debito, credito');
  QRY_DETALLE.SQL.Add('FROM detalle_cheques');
  qry_detalle.SQL.Add('WHERE fecha_cheques Between :PFECHA_INICIAL and :PFECHA_FINAL');
  qry_detalle.ExecSQL;

y mi adoquery, como lo defino en el form.

gracias mil

Alcides
Rep.Dom.

delphi.com.ar 10-01-2006 20:54:04

Te faltaría pasarle los valores a los parámetros

Código Delphi [-]
  ...
  qry_detalle.SQL.Add('WHERE fecha_cheques Between :PFECHA_INICIAL and :PFECHA_FINAL');

  qry_detalle.Params[0].AsDateTime := dtpFechaDesde.Date;
  qry_detalle.Params[1].AsDateTime := dtpFechaHasta.Date;

  qry_detalle.ExecSQL;

Saludos!

alcides 13-01-2006 13:08:10

Gracias Delphi.com.ar,

cambie y realice esta rutinita para agregar registro de una tabla a otra y resulta que solo me agrega un registro y finaliza.


Código PHP:

       Tbl_Detalle.Insert;
       
qry_detalle_cheques.Close;
       
qry_detalle_cheques.Parameters.ParamByName('pfecha_inicial').Value := strtodate(fecha_inicial.Text);
       
qry_detalle_cheques.Parameters.ParamByName('pfecha_final').Value   := strtodate(fecha_final.Text);
       
qry_detalle_cheques.open;
    if 
qry_detalle_cheques.RecordCount 0 then begin
       Tbl_detalle
.FieldByName('numero_transacion').Value := qry_detalle_chequesnumero_cheques.Value;
       
Tbl_detalle.FieldByName('fecha_transacion').Value  := qry_detalle_chequesfecha_cheques.Value;
       
Tbl_detalle.FieldByName('cuenta').Value            := qry_detalle_chequescuenta_cheques.Value;
       
Tbl_detalle.FieldByName('descripcion').Value       := qry_detalle_chequesdescripcion.Value;
       
Tbl_detalle.FieldByName('debito').Value            := qry_detalle_chequesdebito.Value;
       
Tbl_detalle.FieldByName('credito').Value           := qry_detalle_chequescredito.Value;
       
Tbl_detalle.FieldByName('ccdebito').Value          := 0;
       
Tbl_detalle.FieldByName('cccredito').Value         := 0;
       
Tbl_detalle.FieldByName('dia_transacion').Value    := 0;
       
Tbl_detalle.FieldByName('mes_transacion').Value    := 0;
       
Tbl_detalle.FieldByName('ano_transacion').Value    := 0;
       
Tbl_detalle.FieldByName('monto').Value             := 0;
       
Tbl_detalle.FieldByName('posteada').Value          := ' ';
       
Tbl_detalle.FieldByName('usuario').Value           := ' ';
       
Tbl_detalle.Post;
end


porque solo agrega uno? y luego finaliza

gracias mil,

Alcides
Rep. Dom.

vtdeleon 13-01-2006 13:17:21

Saludos

Chequiaste si el rango de fecha solo arroja un solo registro?

alcides 13-01-2006 13:20:30

gracias vtdeleon,

en el rango de fecha hay 18 registros.


Gracias mil,

Alcides
Rep.Dom.

vtdeleon 13-01-2006 13:29:06

Saludos

Bueeno, no se me ocurre mas nada, solo veo algo extra~o y que deberia darte error. Por que usas Open y no ExecSQL. Es una transaccion de insercion y no devolvera nada. No te da error?

cual es el rango de fecha?

alcides 13-01-2006 13:33:23

gracias vtdeleon,

el rango de fecha es desde 01/06/2005 hasta 30/06/2005
lee el primer registro y sale

no me da ningun error, sencillamente termina.


Gracias mil,

Alcides
Rep.Dom.

alcides 13-01-2006 13:36:43

el registro que me transfiere es el ultimo del rango de fecha,


Gracias mil,

Alcides
Rep. Dom.

vtdeleon 13-01-2006 13:58:01

Has una prueba

Conecta un Dbgrid a ese dataset, quita la linea de Insert, dejando el Select, eeh bueno, arreglalo de manera que puedas mostrarlo en un DBgrid y mira a ver que registros te salen

Saludos

alcides 13-01-2006 14:01:26

Gracias vtdeleon,

ok, voy hacer la prueba.



Gracias mil,

Alcides
Rep. Dom.

alcides 13-01-2006 19:01:29

gracias mil,
esta es la rutina que finalmente me funciono perfectamente,

Código PHP:

          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('tipo_documento').Value    := 1;
          
Tbl_Encabezado.FieldByName('concepto').Value          := qry_encabezado_chequesconcepto_cheques1.Value;
          
Tbl_Encabezado.FieldByName('valor_transacion').Value  := qry_encabezado_chequesvalor_cheques.Value;
          
Tbl_Encabezado.FieldByName('codigo_banco').Value      := 0;
          
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.FieldByName('posteada').Value          := ' ';
          
Tbl_Encabezado.Post;
          
Tbl_Encabezado.Close;
          
Tbl_Encabezado.Open;
          
Tbl_Encabezado.Insert;
          
qry_Encabezado_cheques.next
end 

Gracias mil,


Alcides
Rep.Dom.

vtdeleon 13-01-2006 22:17:13

Saludos

Por que Etiqueta [php]???

brandolin 18-01-2006 19:00:09

Pregunto? Se podra ejecutar la misma sentencia que el Insert pero para la sentencia UPDATE ????

Gracias

vtdeleon 18-01-2006 23:46:06

Saludos

Creo que no es posible, las sintaxis son diferentes.
Código SQL [-]
/*Update*/
update tabla1 set 
campo1=valor1,
campo2=valor2,
campo3=select count(*) from tabla2,
campo4=valor4
where campo5='tata'
/*Insert*/
Insert into tabla1 (campo1, campo2)
values ('tata',213)
/* o tambien insercion en masa */
Insert into tabla1 (campo1, campo2)
Select campo1, campo2 from tabla2


La franja horaria es GMT +2. Ahora son las 02:23:10.

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