queryi progress bar a baglamak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozturkfa
Üye
Mesajlar: 8
Kayıt: 09 Eyl 2003 05:58

queryi progress bar a baglamak

Mesaj gönderen ozturkfa »

Diyelimki elimizde zorlu bir arama isini yapan query var.
bu arama surecini son kullaniciya gortermek istiyoruz(progress bar kullanarak).
ornek
'select * from personel where ...'


nasil yapabiliriz

ben baya düsündüm bi yol bulamadim
bir yolunun var olduguna bile emin degilim.

orjinal fikirler bekliyorum
('ayni isi table kullanarak yap' demeyin!)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam bir arama işlemi progressbar gösterecek kadar uzun sürmemesi lazım. Ben genelde arama işlemlerinde fareyi kum saati şeklinde gösterme yöntemini kullanıyorum.

http://www.delphiturkiye.com/ipobjpas.htm#fareyi_mesgul

Eğer arama işlemi çok uzun sürüyor ise yapını gözden geçirmeni tavsiye ederim.

Kolay gelsin.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

TAnimate nesnesini de kullanabilirsin arama işlemi için güzel olur bence. Ben progress barı insert yapması gereken durumlarda kullanıyorum. Tek tek insert yaptırıyorum progress barı her insert de bir arttırtıyorum.
ozturkfa
Üye
Mesajlar: 8
Kayıt: 09 Eyl 2003 05:58

kum saati iyi ama progress bar gibisi yokkk

Mesaj gönderen ozturkfa »

kum saati icin
'
Fareyi meşgul şekilde göstermek

Bir işlem yaparken makinenin meşgul olduğunu göstermek için fareyi kum saati şeklinde gösterip sonra eski haline getirmek için aşağıdaki gibi bir kod kullanabilirsiniz.

try
Screen.Cursor := crHourGlass;
{buraya kodunuzu yazın...}
finally
Screen.Cursor := crDefault;
end;


'

bu iyi ama benim merak ettigim bu degil. bu kacak dövüs gibi birsey.
aslinda ne kadar zaman alacagini bilmiyoruz. sadece process in basinda ve sonunda cursor un sekli degisiyor.


query.open dedigimiz zaman uzun (5-10 saniye) bir surecin icine girebiliyor. progressbar kullanmak cok guzel olur. mesala access de query sürerken pencerenin sol assagisinda statusbar üzerinde
bi progress cubugu gorunuyor.(access kendisi queryi yuruttugu icin bunu rahat yapabilir) ben buna benzer birseyi projelerimde kullanmak istiyorum.


not :querynin performansi kodla yakından ilgili oldugu gibi bilgisayarin islemci gücüyle vs ... alakalida olabilir. devlet dairelerinde müzelik bilgisayarlarin database uygulamalari calistirdigini düsünürsek querynin uzun zaman almasini bekleyebiliriz.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Bu işle epeydir uğraştığına gore bılırsın. Progressbar larda bır MAx değer vermen gerekır, Bunu nerden bıleceksın ? query acıp recordcount dan bulucaksın dıımı ? yada herhangı bır seyle DataBase erişip kayıt sayısını bulucaksın, bu işlemde open işleminden farklı olmıycak yanı senınde bildiğin gibi bu bir işe yaramıycak. Senin dediğin gibi kaçak dövüşeceksin biraz, M$ da aslında oyle yapıyor yada dıgerleri sonunu bilmediğin bir işlemin nekadarı kaldığını nerden bilebilirsinki? bunu ekrana bir bar koyuyorlar ve bunu bir timera bağlayım aslında burda thread kullanmak çok daha iyi makinaya göre bazen timer dusgun çalışmıyor.belli zaman aralıklarında bar ı sen ilerleteceksin. %100 olduğunda ve hala işlem birmediyse 0 layıp devam ettireceksin.
Birde eğer aramalarda bunu yapmak istiyorsan kayıt sonunu bilebilirsin,query kullanıyorsan mesala toplam almak için tüm queryyi baştan sona taratıp toplam alacaksan ozaman kayıt nodan bar ı ilerletebilirsin, ama bu adamları öldürür tabiki, onun yerine sum kullanırsın sonuç hemen gelir ama bu sonuçun bıtım zamanı belli olmadığından gene yukarıda yazdığım mantığı kullanman gerekir
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ozturkfa
Üye
Mesajlar: 8
Kayıt: 09 Eyl 2003 05:58

İşte...

Mesaj gönderen ozturkfa »

ben buna cevap derim. coookkk tesekkür ettim

not: cevabınızın sonundaki bolum (signiture deniyo galiba)
'...imkansız zaman alır'
çok hoşuma gitti. 8)
Cevapla