Blob alana dosya gönderme durumu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Blob alana dosya gönderme durumu

Mesaj gönderen fesiharslan »

blob alana büyük dosyaları gönderirken gönderme durumunu nasıl hesaplayabiliriz?

Yani bir progressbar ile dosyanın ne kadar sürede gönderileceğini hesaplayıp gönderme durumunu göstermek istiyorum..
Yardımcı olursanız sevinirim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Callback fonksiyonları terimi bu istediğin işlemi kapsıyor. Bir işlem için tabiri doğruysa sazı eline alan veritabanı fonksiyonu, işlem süresince mesaj yayını yapar. Bir nevi OnProgressChange diye bir event varmış da bu tetikleniyormuş gibi.

- Veritabanı belirtmediğin için kullandığım ADO için cevap vereyim.

- AdoQuery'de bir OnFetchProgress diye bir event vardır. Minik bir ön hazırlıkla bunu aktifleştirebilirsin.

- Örnek Form OnCreate olayında veya direkt AdoQuery üzerinde Property Editor'den şunları yap.

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdoQuery1.CursorLocation := clUseClient;
  AdoQuery1.CursorType     := ctStatic;
  AdoQuery1.ExecuteOptions := [eoAsyncFetchNonBlocking];
end;
- Artık işlem hazır... Şimdi AdoQuery'nin OnFetchProgress olayına ilişkin procedure aç ve aşağıdaki gibi yaz.

Kod: Tümünü seç

procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
  Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
  Caption := 'Percent complete: ' +
    IntToStr(Trunc(Progress / MaxProgress * 100)) + '%';

// Hatta bir progressbar varsa formunda aşağıdaki gibi yap güzel olur...
  ProgressBar1.Min := 0;
  ProgressBar1.Max := MaxProgress;
  ProgressBar1.Position := Progress;
  Application.ProcessMessages;
end;
- Veritabanı işlemini bir button'a koy ve yap. İşlem boyunca % olarak gelişmeler gözler önüne serilecektir.

- Başarılar...
Resim
Resim ....Resim
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Mesaj gönderen fesiharslan »

mrmarman Bey;
Teşekkür ederim.

Fakat ben oracle veritabanında ODAC komponentleri ile yapmak istiyorum.
Odac ta afterfatch ve beforefetch olayları var. Bu olayları kullanarak
yapamayız heralde.
Odac ta nasıl yapabilirim?
Yardımınız için şimdiden teşekkürler.
Cevapla