Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2011
Avatar de Cañones
Cañones Cañones is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Paz Entre Ríos
Posts: 354
Poder: 20
Cañones Va por buen camino
Muchas gracias.
Cuando termine las modificaciones lo vuelvo a subir.
No se cuanto me llevará porque estoy con mucho trabajo.
Saludos.
Responder Con Cita
  #2  
Antiguo 09-04-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
No hay prisa, lo importante es el resultado
Responder Con Cita
  #3  
Antiguo 20-04-2011
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
Respaldo

Hola yo utilizo el gbak.exe q viene en Firebird:
Les paso un ejemplo:

Código:
sPassword := Data.IBConx.Password;
sFileDBF  := Data.GetShortName( Data.IBConx.Database );
sFileBAK  := sBAKPath + '\BAK' + FormatDateTime('yymmddHHmmss', Now) + '.fbk';
sParamet := ' -b -t -user sysdba -password ' + sPassword + ' ';

sFileEXE := sFIREPath + '\gbak.exe';
sFileEXE := Data.GetShortName( sFileEXE );
// sFIREPath es la carpeta bin de firebird q parametrizo porque nose donde lo instalan

Data.EjecutarExe( sFileEXE, sParamet + sFileDBF + ' ' + sFileBAK, true, false );
Y copio por las dudas la rutina EjecutarExe que tambien la encontré por ahí:

Código:
procedure TData.EjecutarExe( const ruta, args: string; bWait: boolean; bShow:boolean );
var
    salida: DWord;
    PSEI: PShellExecuteInfo;
    SEI: TShellExecuteInfo;
    iShow:integer;
begin
    iShow := SW_HIDE;
    if bShow then iShow := SW_NORMAL;

    if not FileExists( ruta ) then exit;
    with SEI do
    begin
        hInstApp := 0;
        lpVerb := nil;
        lpDirectory := nil;
        nShow := iShow;
        cbSize := SizeOf(SEI);
        lpFile := PChar(ruta);
        wnd := GetDesktopWindow;
        lpParameters := PChar(args + #0);
        fMask := SEE_MASK_NOCLOSEPROCESS;
    end;
    PSEI := @SEI;
    ShellExecuteEx( PSEI );
    if not bWait then exit;
    repeat
        salida := WaitforSingleObject( SEI.hProcess, 500 );
        Application.ProcessMessages;
    until ( salida <> WAIT_TIMEOUT );
end;
Nota: Ojo con los paths largos....

Y una vez al dia se copia la BD completa, este respaldo lo hago cada hora +/- donde tengo información critica y hasta ahora no tuve problemas. Inclusive zipeo el bak si es muy grande con el componente ZipMaster que es free.
Bueno nada de otro mundo, pero por ahí les sirve de algo. Saludos!
Walter

Última edición por waly2k1 fecha: 20-04-2011 a las 20:10:26.
Responder Con Cita
  #4  
Antiguo 11-05-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 24
JXJ Va por buen camino
Question

hola

waly2k1

// sFIREPath es la carpeta bin de firebird q parametrizo porque nose donde lo instalan


sFIREPath como obtienes ese parametro.

sFIREPath := ???(directorio de firebird)como lo obtienes?


otra cosa

como programas tu aplicacion para que se ejecute cada hora?

usas un timer?

o un timer con alguna rutina mas fina

lo dijo por que en ocaciones se pone lenta la pc y
no se de otra forma mas elegante que poner un timer y cada segundo
estar checando si ya es la hora minuto o segundo..

yo voy a hacer una aplicacion que me haga un respaldo de la base
de datos.
enuna hora en especifico.
digamos 8:30 pm
y a esa hora inicie.

no quiero poner un timer cada segundo reivsando si ya son las 8:30 pm
y detenerlo cuando empieze el respaldo y activarlo al terminar el respaldo.

gracias..
Responder Con Cita
  #5  
Antiguo 11-05-2011
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
Rta...

Hola!
La variable sFIREPath la cargo en un parametro en una tabla de configuraciones, o la puedes poner en un .ini o como mas te guste nose

Código:
sFIREPath := Data.ReadRegString( HKEY_LOCAL_MACHINE, '\Software\Microsoft\Windows\CurrentVersion\', 'ProgramFilesDir' ) + '\Firebird\Firebird_2_1\bin';
Ahí tienes por ej. de Firebird 2.1
Esa funcion lee del registro la key de firebird, hay varias por acá en el foro y nose si la misma la saqué de por acá también (cosa que no dudo hehe) y le agregué nada mas la key de Firebird

El timer lo pongo cada 30 segundos y voy incrementando un contador cuando sea la hora, lo vuelvo a 0 y ejecuto el backup. Lo pongo en 30 porque uso un reloj en la barra y se actualiza cada 30 seg.

El valor maximo del timer si no me equivoco es de 60000. De ahi vas contando la cantidad de veces que ingresa a la rutina timer_timer. O en tu caso que pregunte la hora nada mas y si está dentro de las 08-09 que se ejecute y guardas un flag de ejecutado, asi no lo hace nuevamente, cuando sale de tu rango de horas lo pones en falso el flag.

Hoy por hoy con la tecnología que tenemos no se nos puede achanchar una aplicación por un timer, sí por lo que se ejecute cada cierto tiempo si no fuera necesario o si es posible evitarse.

En fin, espero haberte sido util, y me avisas cualquier problema.
Saludos y éxitos!
Walter
Responder Con Cita
  #6  
Antiguo 13-05-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 24
JXJ Va por buen camino
una cosa mas.

Código Delphi [-]
Data.ReadRegString
o 
procedure TData.EjecutarExe( const ruta, args: string; bWait: boolean; bShow:boolean );
var

Data y Tdata es una clase. no un record.
¿verdad?

sFIREPath := Data.ReadRegString( HKEY_LOCAL_MACHINE,
gracias Walter.
Responder Con Cita
  #7  
Antiguo 14-05-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 24
JXJ Va por buen camino
Question

bueno ya voy avanzando algo.


una duda relacionada a esto.

¿se puede mostrar un progressbar
que muestre el avanze del backup
que esta haciendo gbak?

noten que no he revisado los codigos de casimiro ni el fibs.
no se si ellos lo hayan implementado el progressbar.

ando viendo eso

gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Administrador de base de datos para firebird pablonill Firebird e Interbase 3 03-01-2008 18:28:15
problema con logica de programacion en delphi y base de datos chelox OOP 6 05-10-2007 17:49:33
Código de verificación para prevenir envíos automáticos elcigarra PHP 2 04-05-2007 01:01:19
Herramienta case para diccionario de datos de base de datos firebird mcalmanovici Firebird e Interbase 1 11-02-2007 15:17:37
Instrucciones para utilizar los cajeros automáticos desde el auto delphi.com.ar Humor 6 01-04-2004 21:39:26


La franja horaria es GMT +2. Ahora son las 21:55:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi