PDA

Ver la Versión Completa : Copiar tabla Access


Tangela
12-03-2004, 00:03:00
:confused: Hola a todos: mi problema consiste en que quiero hacer una copia de seguridad de una tabla *.mdb desde un menú de la aplicación.
Bien, libero el DataModule en que se encuentra la Adotable y la AdoQuery con Datos.Free; y cierro también un formulario en el que hay activa otra tabla. No hay, en principio ningún componente de acceso a datos que no sea visual (un dbGrid y unos DBEdit a los que se les ajusta la propiedad Data Source en tiempo de ejecución.
Intento copiar con la función siguiente:
function CopiaTodo(Origen,Destino : String) :
LongInt;
var
F : TShFileOpStruct;
sOrigen, sDestino : String;
begin
Result := 0;
sOrigen := Origen + #0;
sDestino := Destino + #0;

with F do
begin
Wnd := Application.Handle;
wFunc := FO_COPY;
pFrom := @sOrigen[1];
pTo := @sDestino[1];
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
end;

Result := ShFileOperation(F);
end;

Invariablemente me aparece el mensaje de "Error al copiar archivo. No se pudo leer del disco o fichero". ¿Qué puedo hacer?

delphi.com.ar
12-03-2004, 14:00:20
¿Quieres hacer un Backup de una tabla o de toda la base de datos? ¿No te convence hacerlo por SQL?

Tangela
17-03-2004, 21:54:02
Bueno, la verdad es que ya encontré un modo de hacerlo mediante el comando CopyFile...
Pero ¿a qué te refieres con lo de hacerlo por SQL?

marcoszorrilla
17-03-2004, 22:32:33
Con CopyFile lo que copias es todo el archivo .Mdb, en este caso no te explicaste bien, porque se había entendido que querías respaldar una tabla no la base de datos entera.

Un Saludo.

delphi.com.ar
18-03-2004, 14:13:10
Claro, si se trata de una tabla puedes compiarla haciendo un SELECT INTO de la misma, y si quieres que este respaldo esté en otra MDB podrías agregar la instrucción IN al la sentencia.

Saludos!