Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   insertar registro de otra tabla diferentes base de datos (https://www.clubdelphi.com/foros/showthread.php?t=94560)

igamerpc 01-04-2020 10:20:52

insertar registro de otra tabla diferentes base de datos
 
Buenos dias, como insertar registro de otra tabla diferentes base de datos.



Código Delphi [-]
    CFG.MyQuery1.SQL.Clear;
    CFG.MyQuery1.SQL.Add('INSERT INTO '+bbdd+'.'+tabla2+');
    CFG.MyQuery1.SQL.Add('SELECT * FROM '+tabla1+' where CODIGO:=codigo);


Me parece eso no funciona.

Casimiro Notevi 01-04-2020 12:13:53

Conectas a DB1
Lees registro de DB1
Conectas a DB2
Guardas registro en DB2
Cierras DB2
Cierras DB1

igamerpc 01-04-2020 12:28:50

Ese es mas facil de hacer. Gracias. Pense funcionar como SQL pero no salio.

Lo unico tu metodo es facilisimo.

movorack 01-04-2020 15:49:54

Hacer la inserción como quieres también es posible y es hasta mas rápida. la sintaxis depende de cada motor.

MSSQL
Código SQL [-]
INSERT INTO DB2.DBO.TABLE1
SELECT * FROM TABLE1 --Acá está apuntando a la DB conectada actualmente

para esto, el usuario debe tener permisos en ambas DB

oscarac 01-04-2020 17:43:21

Cita:

Empezado por igamerpc (Mensaje 536577)
Buenos dias, como insertar registro de otra tabla diferentes base de datos.



Código Delphi [-]
    CFG.MyQuery1.SQL.Clear;
    CFG.MyQuery1.SQL.Add('INSERT INTO '+bbdd+'.'+tabla2+');
    CFG.MyQuery1.SQL.Add('SELECT * FROM '+tabla1+' where CODIGO:=codigo);


Me parece eso no funciona.


a que te refieres con tablas planas?
a tablas libres?

o que motor de base de datos estas usando?

si usas algun motor el error podria estar en que en el segundo query no hacer referencia a la base de datos donde se aloja la tabla1

('SELECT * FROM [servidor.database.dbo.]'+tabla1+' where CODIGO:=codigo)

igamerpc 02-04-2020 11:21:53

Código Delphi [-]
 CFG.MyTable2.Active:=True;
 CFG.MyTable2.Append;
 CFG.MyTable2.FieldByName('IDCODIGO').Value:=CFG.MyTable1.FieldByName('IDCODIGO').Value;
 CFG.MyTable2.FieldByName('NOMBRE').Value:= CFG.MyTable1.FieldByName('NOMBRE').Value;
 CFG.MyTable2.Post;


A ver ese dicen que son mas lento que Insert. El problema que sin pongo insert me da mas error y tampoco query.

igamerpc 02-04-2020 13:30:13

funciona insert, primero leer tabla1, y luego insertar tabla2.

igamerpc 16-04-2020 11:11:29

Lo intente con recorcount pero no funciono
 
Para pasar de mysql a otro mysql de otra base de datos, para que no se repita revisar. Solo insertan los nuevos.
La misma estructura pero diferente base de datos.



Código Delphi [-]
procedure TForm1.Insertar_Pueblo(Tabla_Pueblo:string; codigo:integer; codigonombre:string; pueblo:string; numeroHab:integer; Sender:TObject);
begin

  if MOD.MyConnection2.Connected=FALSE then
  MOD.MyConnection2.Connected:=TRUE;

  if MOD.MyConnection1.Connected=FALSE then
  MOD.MyConnection1.Connected:=TRUE; 

  MOD.MyTable2.TableName:=Tabla_Pueblo;
  MOD.MyTable2.Active:=True;

  MOD.MyTable1.TableName:=Tabla_Pueblo;
  MOD.MyTable1.Active:=True;

  MOD.MyQuery1.SQL.Clear;
  MOD.MyQuery1.SQL.Add('SELECT * FROM '+Tabla_Pueblo+'');
  MOD.MyQuery1.Active:=True;

  If MOD.MyQuery1.RecordCount = 0 then
  Begin

    MOD.MyCommand2.SQL.Clear;
    MOD.MyCommand2.SQL.Add('INSERT INTO '+Tabla_Pueblo+'(codigo, codigonombre, pueblo, numeroHab) VALUES(:codigo, :codigonombre, :pueblo, :numeroHab)');
    MOD.MyCommand2.ParamByName('codigo').Value:=codigo;
    MOD.MyCommand2.ParamByName('codigonombre').Value:=codigonombre;
    MOD.MyCommand2.ParamByName('pueblo').Value:=pueblo;
    MOD.MyCommand2.ParamByName('numeroHab').Value:=numeroHab;

    Try
      MOD.MyCommand2.Execute;

    Except

    end;
  end;
  MOD.MyTable2.Active:=False;
  
end;


No insertan, sin select, se insertan pero revisar volver de principio. Tengo 600 registro


La franja horaria es GMT +2. Ahora son las 04:45:15.

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