Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2007
Ariel03 Ariel03 is offline
Miembro
 
Registrado: oct 2006
Posts: 19
Poder: 0
Ariel03 Va por buen camino
como implementar un backup de access

hola les comento que tengo una aplicacion en delphi 7 y utilizo una base de datos realizada en access xp y queria saber si me podian ayudar a implementar algun codigo o algo para realizar un backup y una restauracion de la base de datos desde la aplicacion... se que copiando y reemplazando el archivo mdb funciona lo mas bien pero quiero que el backup se pueda hacer desde la aplicacion y quede mucho mas atractivo..gracias desde ya.
Ariel
Responder Con Cita
  #2  
Antiguo 07-07-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Aki va el backup

Hola nen, aqui va el backup de las tablas de access, recuperarlo no llegue a hacerlo, espero que si lo haces me lo mandes!!!, un saludo


Código Delphi [-]
 
procedure TFcarga.hacercopiaseg(nombrealias:string;carpetadestino:string);
var
  // todo esto es para los datos
  db1: TDatabase;
  hCursor: hDBICur;        // Cursor for table and query names
  ListDesc: TBLBaseDesc;   // Record of the cursor
  cont_tablas: integer;  // para saber por cual vamos de las tablas
  max_tablas: integer; // sacamos el numero de tablas que tenemos
  // todo esto es para sacar a fichero de texto
  fichdest:textfile;
  sep: string;
  sep_fin: string;
  rutadest: string;
  num_campos: integer;
  cont_campos: integer;
  texto: string;
  frase_act: string;
  num_reg: integer;
  reg_act: integer;
  ruta: string;
  Present: TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
  ruta_con_modo: string;
begin
      ListBox1.Clear;
      ListBox2.Clear;
      Database1 := nil;
      try
        Database1 := TDatabase.Create(nil);
        // Set the neccessary properties to open your database
        Database1.databasename := nombrealias;
        Database1.LoginPrompt := False;
      // database1.Params.Add('password=egacbo');
        Database1.Connected := True;
        // Generates a cursor with all table and query names
        Check(DbiOpenTableList(Database1.Handle, False, False, '*', hCursor));
        // Move thru the records of the cursor to get the names
        while (DbiGetNextRecord(hCursor, dbiNOLOCK, @ListDesc, nil)
              = dbiErr_None) do
        if ListDesc.bView then     // Is it a query?
          ListBox2.Items.Add(ListDesc.szName)
          else
            ListBox1.Items.Add(ListDesc.szName);
        // Close the cursor
        // cerramos la base de datos con la que sacamos las tablas
        dbiCloseCursor(hCursor);
        Database1.Connected := False;
        Database1.Free;
        Database2.Connected := false;
        // abrimos el otro database que va a ser con el que trabajemos
        Database2.AliasName := nombrealias;
        Database2.LoginPrompt := False;
     //   database2.Params.Add('password=egacbo');
        Database2.Connected := True;
        cont_tablas := 0;
        max_tablas := ListBox1.items.count;
        gauge1.MaxValue := max_tablas;
        gauge1.Progress := 0;

        //------- creamos la carpeta del dia que hacemos el backup
        crear_carp(carpetadestino);
        while (cont_tablas < max_tablas) do
          begin
            table1.Active := false; // cerramos la tabla para cambiarle el nombre
            Table1.TableName := ListBox1.Items[cont_tablas];
            table1.Active := true;
            num_reg := table1.RecordCount;
            gauge2.MaxValue := num_reg;
            gauge2.Progress := 0;
            // ----------------- Crea y rellena los txt
                sep := '|';
                Present:= Now;
                DecodeDate(Present, Year, Month, Day);
                ruta_con_modo := 'C:\albaranes\' + carpetadestino + '\';
                rutadest := (ruta_con_modo + inttostr(day) + '_' +  inttostr(month) + '_' + inttostr(year) + '\' + ListBox1.Items[cont_tablas] + '.txt' );
                assignfile(fichdest,rutadest);
                rewrite(fichdest);
                Table1.First;
                num_campos := table1.fields.Count - 1;
                frase_act := '';
                texto := '';
                while (table1.Eof <> true) do
                  begin
                    gauge2.Progress := gauge2.Progress + 1;
                    cont_campos := 0;
                    while (cont_campos <= num_campos) do
                      begin
                        if (cont_campos = 0) then
                          begin
                            texto := table1.Fields[cont_campos].asstring;
                          end
                        else
                          begin
                            texto := sep + table1.Fields[cont_campos].asstring;
                          end;
                        cont_campos := cont_campos + 1;
                        frase_act := frase_act + texto;
                      end;
                     frase_act := frase_act + ';';
                     Writeln(fichdest, frase_act);
                     flush(fichdest);
                     frase_act := '';
                     table1.next;
                  end;
                closefile(fichdest);
            // ---------------------------------------------------------------------
            cont_tablas := cont_tablas + 1;
            gauge1.Progress := gauge1.Progress + 1;
          //  showmessage ('aqui cambiamos de tabla');
          end;

//        dbiCloseCursor(hCursor);
//        Database1.Connected := False;  // no lo quiero cerrar todavia
      except
        Database1.Free;
        raise;
      end;
//      Database1.Free;
 
end;

PD: necesitas 2 databases, 1 table y 1 datasource
Responder Con Cita
  #3  
Antiguo 09-07-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Por que no haces una copia del archivo desde tu aplicación? o a que te refiers con que quede más "atractivo"?
Responder Con Cita
  #4  
Antiguo 09-07-2007
Ariel03 Ariel03 is offline
Miembro
 
Registrado: oct 2006
Posts: 19
Poder: 0
Ariel03 Va por buen camino
hola courtois tu idea me gusta mucho... ya la he implementado.. puedo realizar la copia del archivo en otro lugar de almacenamiento.. pero cuando quiero restaurarla con el mismo proceso... lo hace.. pero es como que no lo copiara.. estan todas las tablas en blanco.. en que le puedo estar errando.
gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda!!! como implementar sql en delphi diablorojo1886 SQL 3 04-12-2006 02:02:25
BackUp Automatico con Access Ceciliapiyuk Conexión con bases de datos 2 07-08-2006 12:45:03
Como implementar transformaciones con perfiles de color dim Gráficos 6 21-10-2005 17:53:05
Como implementar el excel en una aplicacion herodes Varios 2 18-04-2005 23:20:43
backup de bd access jfontane Varios 2 10-06-2003 19:50:25


La franja horaria es GMT +2. Ahora son las 10:35:36.


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
Copyright 1996-2007 Club Delphi