for-select

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

for-select

Mesaj gönderen andronoid »

slm.
cari ve carihar diye iki tablom var. cari tablosunda carinin kodu ve bakiyesi var. carihar tablosunda cariye ait işlemler var. amacım her cari için; carinin bakiyesini, carihar tablosundaki acilis işlemine aktarmak. aşağıdaki kodla bunu deniyorum fakat sadece ilk cari için bunu yapıyor.
Hatam nerede? kolay gelsin, iyi çalışmalar. (Vtab:FB 1.5)

Kod: Tümünü seç

  for
     select kod,bakiye from cari group by kod, bakiye into :SECKOD,:SECBAKIYE
  do
  begin
    update carihar set durum='Giriş',tutar=:SECBAKIYE 
             where kod=:SECKOD and turu='Açılış';
    suspend;
  end
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Eğer fetchall yapmazsan tablodan kayıtları çekerken tüm kayıtları çekmediği için sadece çektiği kayıtlarda güncelleme yapar. tabloyu son kayıdakadar okutursan (fetchall yaparsan) tüm kayıtları günceller.
Benimde başıma böle bişi gelmişti. son kayda kadara okutunca tüm kayıtları güncellemişti.
Kolay Gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Mesaj gönderen andronoid »

hocam bu kod sp`nin içinde ama..
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Sanırım tam anlatamadım. Sen sp yi çağırdığın zaman tüm ib/fb tüm kayıtları okuyup geri döndürmüyor sadece ekranda gördüğün kayıtları okuyor. dolayısı ile senin yazdığın sp sadece ilk kayıt (veya ekranda gördüğün kayıtlar) için çalışıyor. diğer kayıtlarda bir güncelleme olmuyor.
bunun içinde (tüm kayıtların güncellenmesi için tüm kayıtları okutman gerekiyor).
eğer delphiden ibtable kullanarak çağırıyorsan

Kod: Tümünü seç

ibtable1.FetchAll;
clientdataset ve dataset de fetchall varmı bilmiyorum ama

Kod: Tümünü seç

mydataset.last;
dersen sanırım aynı işlemi yapar.
eğer ibconsole veya ibexpert gibi bi araç kullanıyorsan ordada listenin en sonuna gidersen liste seçili iken ctrl+end tablonun sonuna kadar tüm kayıtları okuyacağından tüm kayıtların güncellenir.
Kolay gelsin..
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kodda bi anormallik yok gibi
normal bir sekilde calısması lazım
IbExpert yada DbWorkbench uzerinde denermisiniz?
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

for
     select kod,bakiye from cari group by kod, bakiye into :SECKOD,:SECBAKIYE
  do
  begin
    update carihar set durum='Giriş',tutar=:SECBAKIYE
             where kod=:SECKOD and turu='Açılış';
    suspend;
  end 
yanılmıyorsam burda suspend e gerek yok çünkü dışarı sonuç çıkmıyor.

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 !!!
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Mesaj gönderen andronoid »

slm.
fetchall yöntemini denedim ama bir değişiklik olmadı.
ibexpert`te sorun çıkarmadan çalıştı.(her kayıdı güncelliyordu) fakat delphi tarafında sadece ilk kayıdı güncelliyordu. suspend`i kaldırınca düzgün olarak delphi`de de çalışmaya başladı.

yardımlarınız için herkese çok teşekkür ediyorum.

iyi çalışmalar, kolay gelsin.
Cevapla