AdoQueryden bilgileri sildiğim halde dosya boyutu aynı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

AdoQueryden bilgileri sildiğim halde dosya boyutu aynı

Mesaj gönderen FXERKAN »

AdoQuery'den verileri silmek için

query.delete;

komutunu kullanıyorum

normalde bu kayıtları veri tabanından siliyor.

ancak veri tabanından bu kayıtları silmesine karşın .mdb dosyam halen
eski dolu boyutunda oluyor. yani verileri silmeden önce 5 Mb ise 2-3 Mb'lik bilgi sildikten sonra bile halen 5 Mb olarak duruyor.

bunun sebebi nedir ve nasıl çözüm bulabilirim?
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Veritabanından silinen verilerin Pack Table olarak da tabir edilen Replication işlemine tabi tutulması gerekir. Araştırırsan çabucak bulacağına eminim.

- Bulamadığın taktirde arkadaşlar yardımcı olurlar zaten, gerekirse Ankara'ya döndüğümde fonksiyon halinde (VeritabanıTamirEt(DosyaAdi:String) şeklinde) kod da yazarım.
Resim
Resim ....Resim
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Merhaba.
Bildiğim kadarıyla, veritabanınız Access ise veritabanını Access ile açıp "Araçlar" menüsünden "Veritabanı Hizmet Programları"nı ve oradan da "Veritabanı Düzenle ve Onar" seçeneğini seçerek "Pack" işlemini manuel olarak yapabilirsiniz.
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Mesaj gönderen FXERKAN »

evet bende accessdan bunu yapabilceğim biliyorum ancak delphiden bunu kod ile nasıl yaparım
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

Selam FXERKAN (sana kaç kere hemşo dedik bir selam bile söylemedin)
valla dökümanlarım arasında böyle bir olay vardı yani access *.mdb dosyalarını repair eden bir kod ama şu an aklımda değil bir dökümanlarımı karıştırayım (cdler arasında) bulduğumda buraya yazıcam veya yolu söyliyeyim kim önce bulursa o yazsın buraya :))
google dan
delphi +access +mdb +repair +free +code diye aratmıştım sanırım öyle bulmuştum :)
Saygılar... (ama kodu bulayım arşivimden hemen yazıcam söz)
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

selam hemşo cd çantam iş yerinde
ama sana bir component buldum :)

http://www.torry.net/db/direct/ms_access/msautil.zip[/url]
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- Halen İstanbul'dayım. @Admin'i ziyaret etmeyi düşünürken component linki görünce dayanamayıp, ActiveX ile bunu halletmeniz için internetten araştırarak bulduğum, aslında Ankara'ya döndüğümde göndermek istediğim hazır fonksiyona benzer bir kodu ve yöntemi sunuyorum.

- Delphi IDEnin Project/Import Type Library seçeneğiyle ActiveX eklentisi yapabildiğimizi sanıyorum biliyorsunuz veya şimdi öğrendik.

- Buradan Microsoft Jet and Replication Objects 2.1 başlığını bulup eklediğinizde, Delphi Bileşen Paletinde ActiveX kısmında iki ekelnti yapıldığını göreceksiniz. İşimizi oluşan TLB dosyayı uses'a eklemek ile çözeceğiz.

- Aşağıdaki örnekte dbSource değişkenine connected edilmemiş halde bulunan MDB veritabanınızı verin, dbDest değişkenine de yeni ismini verin. Sonuçta paketlenmiş ve sadeleşmiş yeni bir veritabanına sahip olacaksınız.

- Bundan sonra basit disk işlemleri ile eski veritabanını silip, yenisinin adını değiştireceksiniz ve kullanmaya başlayacaksınız.

Kod: Tümünü seç

uses
    JRO_tlb;

var
  JetEngine: IJetEngine;
begin
  JetEngine := CoJetEngine.Create();
  JetEngine.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + dbSource,  'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + dbDest);
  JetEngine := nil;
end;
Resim
Resim ....Resim
MAydinli
Üye
Mesajlar: 32
Kayıt: 19 Eki 2006 08:55
Konum: Kayseri

Re: AdoQueryden bilgileri sildiğim halde dosya boyutu aynı

Mesaj gönderen MAydinli »

[Hint] msaUtility.pas(47): Value assigned to 'TmsaUtility.SelectMDBFile' never used
[Warning] msaUtility.pas(58): Variable 't' might not have been initialized
[Error] msaUtility.pas(72): Undeclared identifier: 'null'
[Error] msaUtility.pas(112): Undeclared identifier: 'Unassigned'
[Error] msaUtility.pas(140): Undeclared identifier: 'Unassigned'
[Hint] msaUtility.pas(19): Private symbol 'mdbTempFileOK' declared but never used
[Fatal Error] AccessUtility.dpk(34): Could not compile used unit 'msaUtility.pas'


bu companenti kuramıyorum hatalar var diyor ama çözemedim
yardım edermisiniz
MAydinli
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: AdoQueryden bilgileri sildiğim halde dosya boyutu aynı

Mesaj gönderen sabanakman »

uses satırına Variants unit ini de ekle.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
MAydinli
Üye
Mesajlar: 32
Kayıt: 19 Eki 2006 08:55
Konum: Kayseri

Re: AdoQueryden bilgileri sildiğim halde dosya boyutu aynı

Mesaj gönderen MAydinli »

sabanakman yazdı:uses satırına Variants unit ini de ekle.
:bravo:
tşk
MAydinli
Cevapla