Ver Mensaje Individual
  #2  
Antiguo 07-07-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Reputación: 19
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