
copiar registros de tablas DBF de visual fox pro con ADO
#1
Escrito 06 junio 2013 - 12:18
Tengo ahora un programa entre manos, que debe realizar lo siguiente:
Copiar los registros de una tabla a otra (las tablas son iguales, los mismos campos), las cuales son de visual fox pro.
las logre abrir con TDBF, pero ese no es el punto.
Las tablas estan en distintas rutas de la computadora y lo que busco es que se copien los registros de una a otra automaticamente y sin que se repitan.
¿se puede hacer con una ADOQuery?
#2
Escrito 06 junio 2013 - 04:38
¿se puede hacer con una ADOQuery?
Es posible, para ello debes hacer referencia a la ruta del objeto. Nunca lo he hecho con foxpro pero con access podría ser algo así:
AdoQuery.sql.text := 'INSERT INTO 'c:\dirtodabatase'.tabladestino SELECT * FROM origen";
quiero pensar que con foxpro podría hacerse así:
AdoQuery.sql.text := 'INSERT INTO tabla IN 'RUTA AL ARCHIVO destino' SELECT * FROM origen";
#3
Escrito 07 junio 2013 - 10:28
INSERT INTO datos SELECT * FROM datos In 'C:\Consii\12000000_12821001\'
#4
Escrito 07 junio 2013 - 10:54
No sé, se me ocurre...




Saludox !

#5
Escrito 07 junio 2013 - 11:11

#6
Escrito 07 junio 2013 - 12:08
Conexion1: TADOConnection; //Conectado a Base1 Conexion2: TADOConnection; //Conectado a Base2 QueryConsulta: TADOQuery; //con conexión a Conexion1 QueryInserta: TADOQuery; //con conexión a Conexion2
Y tal vez en un botón, en su evento OnClick:
var i: Integer; begin QueryConsulta.Close; // Consulta que obtiene valores de la base de datos 1 QueryConsulta.sql.Text := 'select campo1, campo2, campo3 from tabla where condiciones'; QueryConsulta.Open; QueryConsulta.First; for i := 0 to QueryConsulta.RecordCount - 1 do begin QueryInserta.sql.Text := 'insert into tabla (campo1, campo2, campo3) values ('+QueryConsulta.Fields[0].AsString+','+QueryConsulta.Fields[1].AsString+','+QueryConsulta.Fields[2].AsString+')'; QueryInserta.ExecSQL; // Query que inserta en la tabla de la base de datos 2 QueryConsulta.Next; // Siguiente registro end; end;
Saludox !

#7
Escrito 07 junio 2013 - 12:21
Gracias por el aporte pero no funciono, a lo mejor y estoy haciendo algo mal, cale las dos, esta es una:
delphi
INSERT INTO datos SELECT * FROM datos In 'C:\Consii\12000000_12821001\'
que error lanza...
#8
Escrito 10 junio 2013 - 10:27
Saludos!!
http://gfernando.blo...mpirulando.html
#9
Escrito 10 junio 2013 - 10:37
Por si te interesa, tengo en mi blog algo de abrir DBFs con CDX desde delphi
Saludos!!
http://gfernando.blo...mpirulando.html


#10
Escrito 10 junio 2013 - 12:02
Por si te interesa, tengo en mi blog algo de abrir DBFs con CDX desde delphi
Saludos!!
http://gfernando.blo...mpirulando.html
Orale, de nuevo a las andanzas mi buen Mapache, un gustazo ver tu blog en linea de nuevo

Saludos
#11
Escrito 10 junio 2013 - 01:28
me conecto con adoquerys
tome como base el modelo que publico Fenareth para la consulta.
procedure TForm1.Buscar(Lista: TStringList; Path, Mascara: String); var SR: TSearchRec; direccionbd:String; i : integer; begin modulodatos.TDataModule4.Create(Self); Path:= IncludeTrailingPathDelimiter(Path); if FindFirst(Path + '*.*', faAnyfile, SR) = 0 then repeat if (SR.Name <> '.') and (SR.Name <> '..') then if (SR.Attr and faDirectory) = faDirectory then Buscar(Lista,Path+SR.Name,Mascara); until FindNext(SR) <> 0; FindClose(SR); if FindFirst(Path + Mascara, faAnyfile, SR) = 0 then repeat if (SR.Name <> '.') and (SR.Name <> '..') then if (SR.Attr and faDirectory) <> faDirectory then //(Path + SR.Name); modulodatos.DataModule4.ADOQuery1.Close; modulodatos.DataModule4.ADOQuery1.sql.Text := 'select * from datos'; modulodatos.DataModule4.ADOQuery1.Open; modulodatos.DataModule4.ADOQuery1.First; modulodatos.DataModule4.queryinserta.Active:=False; modulodatos.DataModule4.queryinserta.ConnectionString:='Provider=VFPOLEDB.1;Data Source='+Path+SR.Name+';Mode=ReadWrite|Share Deny None;Password="";Collating Sequence=MACHINE'; modulodatos.DataModule4.queryinserta.Active:=True; for i := 0 to modulodatos.DataModule4.ADOQuery1.RecordCount - 1 do begin modulodatos.DataModule4.queryinserta.sql.Text:= 'insert into datos ('+modulodatos.DataModule4.queryinserta.Fields[0].AsString+','+modulodatos.DataModule4.queryinserta.Fields[1].AsString+','+modulodatos.DataModule4.queryinserta.Fields[2].AsString+','+modulodatos.DataModule4.queryinserta.Fields[3].AsString+','+modulodatos.DataModule4.queryinserta.Fields[4].AsString+','+modulodatos.DataModule4.queryinserta.Fields[5].AsString+','+modulodatos.DataModule4.queryinserta.Fields[6].AsString+','+modulodatos.DataModule4.queryinserta.Fields[7].AsString+','+modulodatos.DataModule4.queryinserta.Fields[8].AsString+','+modulodatos.DataModule4.queryinserta.Fields[9].AsString+','+modulodatos.DataModule4.queryinserta.Fields[10].AsString+','+modulodatos.DataModule4.queryinserta.Fields[11].AsString+','+modulodatos.DataModule4.queryinserta.Fields[12].AsString+',' +modulodatos.DataModule4.queryinserta.Fields[13].AsString+','+modulodatos.DataModule4.queryinserta.Fields[14].AsString+','+modulodatos.DataModule4.queryinserta.Fields[15].AsString+','+modulodatos.DataModule4.queryinserta.Fields[16].AsString+','+modulodatos.DataModule4.queryinserta.Fields[17].AsString+','+modulodatos.DataModule4.queryinserta.Fields[18].AsString+','+modulodatos.DataModule4.queryinserta.Fields[19].AsString+','+modulodatos.DataModule4.queryinserta.Fields[20].AsString+','+modulodatos.DataModule4.queryinserta.Fields[21].AsString+','+modulodatos.DataModule4.queryinserta.Fields[22].AsString+',' +modulodatos.DataModule4.queryinserta.Fields[23].AsString+','+modulodatos.DataModule4.queryinserta.Fields[24].AsString+','+modulodatos.DataModule4.queryinserta.Fields[25].AsString+','+modulodatos.DataModule4.queryinserta.Fields[26].AsString+','+modulodatos.DataModule4.queryinserta.Fields[27].AsString+','+modulodatos.DataModule4.queryinserta.Fields[28].AsString+','+modulodatos.DataModule4.queryinserta.Fields[29].AsString+','+modulodatos.DataModule4.queryinserta.Fields[30].AsString+','+modulodatos.DataModule4.queryinserta.Fields[31].AsString+','+modulodatos.DataModule4.queryinserta.Fields[32].AsString+',' +modulodatos.DataModule4.queryinserta.Fields[33].AsString+','+modulodatos.DataModule4.queryinserta.Fields[34].AsString+','+modulodatos.DataModule4.queryinserta.Fields[35].AsString+','+modulodatos.DataModule4.queryinserta.Fields[36].AsString+')'; //DataModule1.IBQueryInsertarClientes.ParamByName('cli_id').Value:=DataModule1.IBQueryCargaClientes2.FieldByName('cli_id').Value; modulodatos.DataModule4.queryinserta.ExecSQL; // Query que inserta en la tabla de la base de datos 2 modulodatos.DataModule4.ADOQuery1.Next; // Siguiente registro //modulodatos.DataModule4.Dbf1.InsertRecord(); end; // aqui la consol until FindNext(SR) <> 0; FindClose(SR); ShowMessage('Se han concluido la consolidacion'); end;
Buscar(Lista2,'C:\consii\','SII.BDC');
no me marca ningun error pero no copia los registros.
gracias de antemano por sus sugerencias y ayuda.