PDA

Ver la Versión Completa : copia de seguridad


azaagh
08-06-2004, 05:02:13
como se podria hacer una copia de seguridad a una base de datos....unicamente usando codigo

jachguate
08-06-2004, 07:38:19
Hola azaagh.

Bienvenido(a) a los foros del Clubdelphi.

Ya que veo que sos un usuario nuevo/a de los foros, te recomiendo la lectura de la guia de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php), que contiene las reglas básicas de convivencia de este lugar.

Dado que tu pregunta, en este caso, resulta ser bastante escueta, también te voy a recomendar la lectura del hilo de la calidad de las preguntas, donde se encuentra un debate que puede crearte una idea muy clara de los datos que debieras incluir al formular una pregunta.

Al menos en este caso resulta evidente la falta de información sobre el motor de datos que usas (no es lo mismo hacer un backup de una bd oracle, que de una bd en firebird), asi como los componentes de conexión que usas, quizas pueda ser relevante el sistema operativo del servidor y del cliente, asi como el nivel de acceso del usuario de la aplicación a los recursos del servidor....

En fin... mejor lee el hilo y vos mismo sabras cuales de estos (y otros) datos hagan falta.

Hasta luego.

;)

weke
08-06-2004, 07:44:25
Buenos dias!!
Esta es una cuestión que tenía pendiente para cuando acabara mi apilcación, pero aprovechando que ya han realizado la pregunta, preguntaré como se haría con mi aplicación.
Yo estoy utilizando un base de datos Access, y para la conexión estoy empezando a utilizar ADO. De momento no lo tengo todo modificado, ya que antes utilizaba BDE, pero como había un par de cosillas que no podía solucionarlas me he pasado a ADO a ver que tal.

Muchas gracias y si falta algún dato más no dudeis en preguntarlo.

Saludos.

azaagh
08-06-2004, 09:05:58
joder, jachguate, supongo que tienes razon..:confused:

bueno, el problema es que tengo varias bases de datos DBE en paradox 7... cada tabla con + de 200 registros que en el programa se veran manipulados por el usuario, asi que estoy intentando que al crear un nuevo usuario te cree una copia de la base de datos en una carpeta con el mismo nombre que el usuario, y al hacer login, cambiar a la base de datos de cada individuo.

Subrayado lo que no se hacer y os pido una ayudita :p

espero vuestras respuestas :D

__cadetill
08-06-2004, 09:35:58
Para weke:

Una base de datos Access se compone sólo de un archivo, por lo que puedes hacer el backup como más gustes, es decir, puedes copiar el archivo tal cual en otro dispositivo, en otro PC de la red o... incluso comprimir el archivo.
En mi web tienes una demo de como hacer una copia de archivos (mediante compresión con los ZLib) y como copiar archivos de una carpeta a otra

Para azaagh

Lo dicho, para copiar archivos de una carpeta a otra (y sus subdirectorios si tubiera) en mi web tienes un algoritmo que te lo hace (y que os puede servir de guía para hacer lo que queréis).
Para crear una carpeta nueva, mírate la función CreateDir

Espero que os sirva

weke
08-06-2004, 09:40:00
Muchas gracias, me lo apunto y cuando acabe la aplicación ya decidiré como hacerlo. Aun no se lo que será más conveniente.

Muchas gracias y saludos!!!:)

azaagh
08-06-2004, 09:48:58
supongo que es este del que me hablas:

si no te resulta muy molesto....podrias comentarlo? es que no solo me quiero limitar a copiar...tambien habra que aprender...(digo yo)


procedure CopyDirectory(Origen, Destino: string);
var
Files : integer;
FOrigen : string;
FDestino : string;
ok : boolean;
Search : TSearchRec;
begin
Files := FindFirst(Origen + '\*.*', faAnyFile, Search);
while Files = 0 do
begin
if Search.Attr <> faDirectory then
begin
FOrigen := Origen + '\' + Search.Name;
FDestino := Destino + '\' + Search.Name;
ok := CopyFile(PChar(FOrigen), PChar(FDestino), false);
if not ok then ShowMessage('No se pudo copiar el fichero: ' + Search.Name);
end
else
begin
if (Search.Name <> '.') and (Search.Name <> '..') then
begin
ok := CreateDir(Destino + '\' + Search.Name);
if not ok then ShowMessage('No se pudo crear el directorio: ' + Search.Name)
else CopyDirectory(Origen + '\' + Search.Name, Destino + '\' + Search.Name);
end;
end;
Files := FindNext(Search);
end;
FindClose(Search);
end;


pues lo dicho, hay muchas funciones que desconozco...haber si comentas que hace exactamente cada cosa....

jachguate
08-06-2004, 09:57:57
Te recomiendo que utilices la ayuda del propio Delphi. El algoritmo es bastante sencillo y aprovechas la oportunidad para aprender a explotar la (buena) ayuda de la herramienta.

Basta que ubiques el cursor sobre cualquier función o procedimiento en el editor, y pulses F1, para ir directo a la ayuda de esa rutina.

Hasta luego.

;)

__cadetill
08-06-2004, 10:08:13
Veamos

Te explico a grandes rasgos lo que hace la función. Luego buscamos en la ayuda las funciones de Delphi que no conozcamos (como dice el amigo Juan Antonio) y, si te queda alguna duda, lo volvemos a hablar

Básicamente es una función recursiva, es decir, es una función que se llama a si misma si fuera necesario.

Qué es lo que hace? Bien, es sencillo. Lo que hace es leer todos los archivos que hay en una carpeta (directorio) mediante un bucle (while). Si el archivo leido es otra carpeta (exceptualdo el '.' (que es el propio directorio) y '..' (que es el directorio padre)), vuelve a hacer la llamada a la función pasándole como parámetro la nueva carpeta

Si es un archivo normal, simplemente copia el archivo de la carpeta origen a la destino.

Es así de sencillo. Te aconsejo que mires en la ayuda sobre TSearchRect, FindFirst, FindNext y FindClose y si tienes más dudas..... vuelve por aquí ;)

Espero te sirva la explicación