[ inherited @ 12.12.2006. 21:58 ] @
| Napravio sam jedan mali program sa Access bazom i hteo bih napraviti neki backup podataka. Posto to nisam radio do sad, iskoristio sam proceduru iz helpa:
Code: procedure CopyFile(SourceName, TargetName: String);
var S1,S2: TFileStream;
begin
S1:= TFileStream.Create(SourceName, fmOpenRead);
try
S2:= TFileStream.Create(TargetName, fmOpenWrite or fmCreate);
try
S2.CopyFrom(S1, S1.Size);
finally
S2.Free;
end;
finally
S1.Free;
end;
end;
pa je pozvao:
Code: procedure TForm1.Button1Click(Sender: TObject);
begin
try
CopyFile('C:\Program\baza.mdb','D:\Program\baza.mdb');
finally
ShowMessage('Finished');
end;
end;
E, sad, kad je program aktivan, nakacen je na bazu i ne mogu prekopirati na ovaj nacin bazu s C na D particiju. Pojavljuje se win poruka kako je nemoguce kopirati faj jer ga koristi drugi program, sto je i istina jer sam nakacen na bazu. Na bazu sam se nakacio prvo s TADOConnection, pa na tu komponentu sa TADOQuery. Pre kopiranja sam pokusao konekciju zatvoriti, pa po kopiranju ponovo je otvoriti ali bez uspeha?
Na kraju, bih vas zamolio da mi pomognete ispravno odraditi backup u ovom slucaju?
|
[ morlic @ 12.12.2006. 22:16 ] @
Da li si siguran da je zatvorena konekcija?
i izmenio bih malo:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFile('C:\Program\baza.mdb','D:\Program\baza.mdb');
ShowMessage('Finished');
end;
malo je ispravnije jer ti onako ispisuje istu poruku kako god zavrsio kopiranje, a u slucaju da ne uspe uhvatices je na globalnom nivou. Jel tako? To imas u programu? Nadam se :)
[ inherited @ 12.12.2006. 22:47 ] @
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection.Connected:= false;
CopyFile('C:\Program\baza.mdb','D:\Program\baza.mdb');
ShowMessage('Finished');
ADOConnection.Connected:= true;
end;
Probao sam ovako, ali nije uspelo!!! Tako da nisam siguran u zatvorenost konekcije.
Help, please...
[ inherited @ 13.12.2006. 23:19 ] @
Hoce li biti neke pomoci?
[ Srki_82 @ 13.12.2006. 23:36 ] @
Bilo bi lakse pronaci broblem kada bi rekao koja je greska u pitanju... ako ti nije dozvoljen pristup, nesto vec drzi otvoren taj fajl, ako ne moze da se pronadje putanja, onda fajl nije tamo gde ga trazis, ako ne postoji folder u koji zelis da kopiras, izaberi drugi ili ga kreiraj, ako nemas mesta na ciljnoj lokaciji, oslobodi mesto... daj gresku pa da znamo sta da trazimo.
[ inherited @ 14.12.2006. 15:46 ] @
Citat:
Error
Cannot open file "D:\Neki_Folder\data.mdb" . The process cannot access the file because it being used by another process!
Nesto drzi fajl otvoren. Access je zatvoren, gore sam naveo da sam sa ADOConnection.Connected:=false odradio, pa posle kopiranja ADOConnection.Connected:=true. Ali nije uspelo. Treba se u momentu pre kopiranja raskaciti sa baze, kao da je program zatvoren, pa posle kopiranja obnoviti konekciju?
[ aleksandarpopov @ 14.12.2006. 16:03 ] @
Mozda da zatvoris konekciju sacekas nekoliko sekundi pa da probas tada da kopiras?
[ Srki_82 @ 14.12.2006. 16:08 ] @
Da li si siguran da je to jedina konekcija na tu bazu? Mozda neka od tabela/query koristi connection string, a ne connection da bi se konektovala na bazu, mozda instanca objekat koji se povezuje na bazu u Delphi IDE konstantno drzi otvorenu konekciju... probaj da pokrenes program van Delphi IDE, mozda database engineu treba malo vremena da zatvori sve fajlove... pokusaj da napravis malu pauzu izmedju zatvaranja konekcije i kopiranja.
Trenutno mi to pada na pamet.
[ _deran_ @ 15.12.2006. 11:29 ] @
kopiranje radi sa 'copyfile' i kad je baza otvorena -provereno. pogledaj dozvole na disku
meni CopyFile trazi 3 parametra a ti si dao 2. da nije u tome problem?
[Ovu poruku je menjao _deran_ dana 15.12.2006. u 14:26 GMT+1]
[ badam @ 15.12.2006. 13:00 ] @
Svakako. Mozda target file nije slobodan za overwrite. U primeru kopira sa c na d, a greska je na fajlu na d disku. Slucajnost?
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.