Şifreli access databaseni sıkıştırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
yuksel2004
Üye
Mesajlar: 61
Kayıt: 26 May 2005 08:55
Konum: Bursa

Şifreli access databaseni sıkıştırmak

Mesaj gönderen yuksel2004 »

Arkadaşlar aşağıdaki kodlarla bir access databaseni sıkıştırabiliyorum.Ama bu db şifreli olunca işlem olmuyor haliyle.Bir türlüğ bu fonksiyonun yada procedürün içine şifre olayını dahil edemedim.Bu konuda bilgisi olan arkadaşlar yardım ederlerse sevinirim.
eddest ve edsource mdblerin yollarını yazdığım editlerin adı.
Teşekkürler.

function DatabaseCompact
(const sdbName: WideString) : boolean;
var
JE : TJetEngine; //Jet Engine
sdbTemp : WideString; //TEMP database
sdbTempConn : WideString; //Connection string
const
SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
begin
Result:=False;
sdbTemp := ExtractFileDir(sdbName) +
'TEMP' +
ExtractFileName(sdbName);
sdbTempConn := SProvider + sdbtemp;
if FileExists(sdbTemp) then
DeleteFile(sdbTemp);
JE:= TJetEngine.Create(Application);
try
try
JE.CompactDatabase(SProvider + sdbName, sdbTempConn);
DeleteFile(sdbName);
RenameFile(sdbTemp, sdbName);
except
on E:Exception do
ShowMessage(E.Message);
end;
finally
JE.FreeOnRelease;
Result:=True;
end;
end;


procedure Tfrmhastakayit.Button1Click(Sender: TObject);
var
dbSrc : WideString;
dbDest : WideString;
const
SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=';
begin
dbSrc := SProvider + edSource.Text;
dbDest := SProvider + edDest.Text;

if FileExists(edDest.Text) then
DeleteFile(edDest.Text);

JE.CompactDatabase(dbSrc,dbDest);

end;
Unutmayalım ki bu hayat bir demodur ve tam sürüm kullanabilmek için lisans ücreti ödemememiz düşünülemez.
Firarist
Üye
Mesajlar: 129
Kayıt: 13 Eki 2003 06:41
Konum: Antalya
İletişim:

Mesaj gönderen Firarist »

sProvider := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXXXX.mdb;Jet OLEDB:Database Password='+Edit2.Text+';';

şeklinde yapıyorum. Problemsiz çalışıyor. Edit2 ye eğer *.mdb dosyası şifrelenmişse şifreyi giriyorum.
Cevapla