Ådriano 9 Denunciar post Postado Outubro 15, 2006 Ola Gente....Gostaria que em um form o usuario coloque uma data entre o dia primeiro e o dia trinta e um e Ai todo o dia 15 por exemplo de qualquer mes o programa execute aquela função.EStou querendo colocar para compactar o banco sempre nesta data.... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 O que você pode fazer é criar uma tela para o usuário informar o dia em que deseja q seja efetuado o backup, e no OnCreate do form principal você poderia verificar o dia atual se é igual ao dia informado, e então executar o processo de backup... Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 entendi ....até que ai ta tudo bem o problema maior aqui agora é que eu achei na net como compactar e corrigir as tabelas o código segue abaixo:procedure TForm1.Button2Click(Sender: TObject);varArquivoMDB: string;DB: OLEVariant;Temp: string;BEGINDB := CreateOLEObject('DAO.DBEngine.35');// reparar DB.RepairDataBase(arquivoMDB);// compactar Temp := ExtractFilePath(ArquivoMDB) + 'Temp.mdb'; DB.CompactDataBase(ArquivoMDB, Temp);end;Só que toda vez ta dando falta de memoria... não tenho ideia do que acontece....este form é só um teste....para ver se fununcia no programa em que estou usando.... Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 Fiz algumas alterações, testa desta forma: procedure TForm1.BitBtn1Click(Sender: TObject);var db: OleVariant; BDFull, BDBackup: string;beginBDFull:=ExtractFilePath(Application.ExeName) + 'bd1.mdb';BDBackup:=ExtractFilePath(Application.ExeName) + 'bdBackup.mdb';if FileExists(BDBackup) then DeleteFile(BDBackup);try db:=CreateOLEObject('JRO.JetEngine'); db.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + BDFull + ';Jet OLEDB:Database Password="";', 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + BDBackup + ';Jet OLEDB:Database Password=""' + ';Jet OLEDB:Engine Type=5'); DeleteFile(BDFull); RenameFile(BDBackup,BDFull); CopyFile(PChar(BDFull),PChar(BDBackup),False);except on E:Exception do ShowMessage(E.Message); end;end; Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 Isto serve para qualquer versão do office pois aqui eu uso neste banco no caso o 97 e testei e deu certo o código o que é estranho é que geralmente ele diminui o tamanho do banco e neste caso ele aumentou ele é de 33megas o q estou testando e foi parar em 42 o q sera???? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 Para a versão 97 do access altere a ultima linha do arquivo Type=5 para Type=4 Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 Alterei e escreveu Isto:Não foi Possivel executar esta operação;Os recursos desta versão não estão disponiveis em bancos de dados com formatos antigos...Esta mensagem só apareceu quando troquei o 5 pelo 4 Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 Então relamente teria de ser com o tipo 5, mais links se quiser: http://www.delphifaq.com/faq/delphi/database/f7.shtml http://delphi.about.com/od/sqlservermsdeac...l/aa091801a.htm http://www.swissdelphicenter.ch/torry/showcode.php?id=2115 http://www.efg2.com/Lab/Library/Delphi/ADO...x.html#ADOX_TLB Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 Vou olhar estranho não????? Mas qualquer coisa fica assim mesmo.....se ele não crescer muito quando tiver maior.....rsrsrsr.....desde ja agradeço....E a função de data programada pode ser assim segue abaixo:if tblCAMPODATA.Value = Date then//Mensagemisto você mesmo me passou para outra função neste Banco..será que este exemplo que você me deu serve ???? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 No caso você somente ira guardar o dia no BD, certo ? Então poderia ser algo do tipo: if tblCAMPODIA.AsString = FormatDateTime('dd',date) then \\executa backup Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 Poxa vida estava vendo aqui e pensei(até q enfim...rsrsrs)posso colocar quando fecho o form para fazer esta função só que ai ele tem que desconectar o programa primeiro para depois fazer e ai ???eu sei que tem de ser o programa fechado então como faço para fazer este procedimento no mesmo programa....lembro que não uso datamodule..é pequeno então uso as tabelas conectadas direto...e ai o que você sugere faço um programa por fora ? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 15, 2006 Fecha a conexão principal com o BD, deve de funcionar... Compartilhar este post Link para o post Compartilhar em outros sites
Ådriano 9 Denunciar post Postado Outubro 15, 2006 ENTÃO EU AQUI TENHO UM FORME SÓ COM UM ADOCONECTION QUE ESTOU USANDO PARA TESTE,MAS ATÉ ESTE TA DANDO PAU EU COLOQUEI A LINHA CONEXAO.CONECT:=FALSE; DEPOIS DO PRIMEIRO BEGIN DAQUELE CODIGO QUE você ME MANDOU NESTE TOPICO...MESMO ASSIM NÃO VAI...rsrsrsrs Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Outubro 16, 2006 Nunca fiz um programa de Backup deste tipo, mas pq você não cria um pequeno programa de backup ? No caso quando for sair do seu programa, e for dia de backup, no momento de fechar o form ele dispara este outro programinha, que somente ira fazer o backup dos dados... Assim o programa já tera sido fechado, cortando a conexão com o BD... Compartilhar este post Link para o post Compartilhar em outros sites