Table da döngü

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hasan
Üye
Mesajlar: 129
Kayıt: 16 Oca 2004 10:01
Konum: Bursa
İletişim:

Table da döngü

Mesaj gönderen hasan »

Merhaba arkadaşlar.Programımda uygulama başlatıldığında yani from açıldığında "bugüne ait taksit tahsilatlarınız var,çek ödemeleriniz var, " şeklinde MSN deki gibi ileti penceresi çıkarmak istiyorum.Normalde bunu yapabiliyyorum ama form Showuna kodu yazdığımda tabii olarak table 'ı baştan sona taratarak arama yaptırıyorum.
Sorun şu : bu arama malesef 100 kayıtta bile bayağı bekletiyor.10.000 veya daha üstü kayıtta bunu en uygun oalarak nasıl yapabilirim.en hızlı bi şekilde.IBDataset ile bunu yapıyorum.acaba IBQuery mi kullanmalı ve döngüyü "While Not IBDataset.EOF do" ile yapıyorum.en hızlı bi şekilde table' ı baştan sona nasıl taratabiliirim ve bunu formun açılışında nasıl gösterebilirim.Bi fikir verebilir misiniz?
Yardımlarınız için şimdiden Teşekkürler.
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Queryy kullanmanda fayda var, daha hızlı olur.

Kod: Tümünü seç

select * from tablo where tarih='08/04/2005''
gibi query + tarih diye aratırsan oldukça detaylı bilgi bulursun.
Kolay gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Hdayının da dediği gibi sadece o günün tarihine uygun kayıtları aratarabilirsin.bunun içinde query kullanman daha hızlı ve sağlıklı olur.bende senin dediğini program açılırken bana haber vermesi için yapmıştım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
hasan
Üye
Mesajlar: 129
Kayıt: 16 Oca 2004 10:01
Konum: Bursa
İletişim:

Table da döngü

Mesaj gönderen hasan »

Kod: Tümünü seç

CREATE PROCEDURE UYARI_VER 
RETURNS (
    KALAN_TUTAR FLOAT,
    VADE_TARIHI DATE)
AS
begin
SELECT VADE_TARIHI,KALAN_TUTAR FROM TAKSIT_TAKIP
    WHERE (VADE_TARIHI = :VADE_TARIHI) AND (KALAN_TUTAR = :KALAN_TUTAR)
     INTO :VADE_TARIHI, :KALAN_TUTAR;
end
Arkadaşlar şöle bir procedure yazdım ama delphi tarafına kayıt getiremedim.Şöyle bişey yazmaya çalıştım ama geriye değer döndürmüyor.

Kod: Tümünü seç

var
Kalan_tutar:Real;
Vade_tarihi:TDateTime;
begin

  Kalan_tutar:=IBDataSet1KALAN_TUTAR.AsFloat;
  Vade_tarihi:=IBDataSet1VADE_TARIHI.AsDateTime;

  UYARI_VER_PROC.ParamByName('KALAN_TUTAR').AsFloat:=Kalan_tutar;
  UYARI_VER_PROC.ParamByName('VADE_TARIHI').AsFloat:=Vade_tarihi;
  
  If (Kalan_tutar>0) And (Vade_tarihi=Date) Then
   Begin
      Alarm.Execute;
      UYARI_VER_PROC.ExecProc;

//   Except
    End;
Bu Konuda yardımcı olabilirmisiniz?bu procedure konusuna daha alışamadım da :)
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Sanırım @mussimsek bahsetmişti, ib'nin sp'i ile sonuc dönmüyor, query kullanmak gerekiyor diye.

Bi araştır istersen.

Bir de sp sonuc döndürecekse suspend kullanman gerekiyor (firebird kullandığını tahmin ediyorum). For ile dönen her bir kayıt için çalıştırman gerekiyor. Örneği var aşağıda

viewtopic.php?t=7859

Kolay gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Cevapla