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)
-   -   pasar de una tabla1 a una tabla2 la misma info (https://www.clubdelphi.com/foros/showthread.php?t=23729)

el_barto 26-07-2005 23:15:28

pasar de una tabla1 a una tabla2 la misma info
 
Buenas tardes:

Tengo una tabla1 que tiene campos campo1, campo2
Tengo otra tabla que tienen campos campo1, campo2, campo3

donde para la tabla1 y la tabla2 los campos campo1 y campo2 son exactamente iguales. lo unico que cambia es que la tabla2 tiene un campo que se llama campo3.

como se hace para pasar toda la informacion de la tabla 1 a la tabla2 :confused: :confused: :confused: :confused:

ContraVeneno 26-07-2005 23:37:52

Código SQL [-]
insert into tabla2(campo1, campo2)
select campo1, campo2 from tabla1

el_barto 26-07-2005 23:47:42

esto lo coloco en mi dataset1.insertsql??

Código Delphi [-]
 
insert into tabla2(campo1, campo2)
select campo1, campo2from tabla1

y mi pregunta es donde queda mi campo3 de la tabla2

ContraVeneno 27-07-2005 00:07:55

mmmmm, si los quieres pasar todos de una vez desde delphi
Código Delphi [-]
with TuDataset do begin
SQL.Clear;
SQL.Add('insert into tabla2(campo1, campo2)');
SQL.Add('select campo1, campo2 from tabla1');
ExecSQL;
end; //Fin with

en este caso Campo3 quedaría vacio....

si lo que queires es ir pasando campo1 y campo2 y tambien asignar un valor a campo3, lo que tendrías que hacer es un ciclo que recorra todo tu dataset y luego asignar T1.campo1=T2.campo1 y asignarle el valor a campo3.... de uno por uno... a menos que campo 3 se pueda calcular con campo1 y campo 2.....

el_barto 27-07-2005 16:45:04

Pues en realidad campo3 es un trigger en interbase creado como before insert, entonces el campo no quedara vacio

dmagui 31-08-2005 17:59:14

Hola estoy intentando hacer la instruccion propuesta por Contraveneno, pero tengo un inconveniente:

Código Delphi [-]
 
procedure TForm1.Button3Click(Sender: TObject);
 begin
   with ibdataset1 do begin
     Close;
     selectsql.Clear;
     selectsql.Add('insert into cotizacion(codigo_comp, item_subcomp)');
     selectsql.Add('select codigo_comp, item_subcomp from prod_comp where codigo_prod ='
       + Quotedstr(DBlookupcombobox4.Field.Value)+'and item_subprod ='
       + Quotedstr(Dblookupcombobox5.field.Value));
     execsql;
     open;
   end;
 end;
y no me esta guardando nada en la base de datos, debo agregarle algo mas??, gracias por la ayuda :D

ContraVeneno 31-08-2005 18:06:11

Hay una ligera diferencia entre tu ejemplo y el mio.
Código Delphi [-]
selectsql.Add('insert ...
//Notas la diferencia?
SQL.Add('insert .....


Además de eso, la instrucción Open no debería estar despues de un ExecSQL, de hecho, Open se utiliza solo cuando son consultas (select) y ExecSQL se utiliza cuando se van a realizar cambios (Update, insert, delete, etc) Pero no debes usar las dos juntas. Y creo que falta un espacio antes del and

el_barto 31-08-2005 18:58:44

Asi tambien
 
Código Delphi [-]
 

procedure TForm1.Button1Click(Sender: TObject);
begin
with ibdataset1 do begin
  open;
    while not EOF do begin
      IBdataset2.Append;
      Dbedit1.Text:=ibdataset1.fieldbyname('campo1').asstring;
      DBEdit2.Text:=ibdataset1.fieldbyname('campo2').asstring;
      DbEdit3.Text:=Ibdataset1.fieldbyname('campo3').asstring;
      next;
    end;
end;
ibdataset2.ApplyUpdates;
ibtransaction1.Commit;
end;

Asi tambien se puede hacer, pero es mas funcional como dice contraveneno ;)


La franja horaria es GMT +2. Ahora son las 22:09:37.

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