post işleminde aktif kaydın ilk kayda yönelmesi
post işleminde aktif kaydın ilk kayda yönelmesi
s.a.
arkadaşlar vt fb 1.5 bağlantı bil. ibx pro. d7
carikart ve carihareket şeklinde iki adet tablom var birbirine foreign key ile bağlı carihareket tablosundaki borc toplamlarını carikart kısmında bulunan toplamborc alanına yazdırıyorum. bu işlemi carihareket i bağladığım datasetin afterpost olayına yazıyorum. carihareket tablosunu DBgrid içerisinde gösterdikten sonra DBGrid ile exel usulü kayıt yaparken kayıttan hemen sonra aktif kayıt ilk kayda yöneliyor. yani gridde 10. satırı kaydederken kayıt işleminden hemen sonra toplam işlemi carikart tablosuna edit olduktan sonra normal olarak detail yani carihareket tablosunun ilk kaydına gidiyor. bu işlem belki normal olabilir ancak herseferinde ilk kayda yönelmesi DBGrid içerisinde sorun yaşatıyor. bunu önlemenin bir çaresi varmı. yani kayıt işleminden sonra ilk kayda gitmesin.
arkadaşlar vt fb 1.5 bağlantı bil. ibx pro. d7
carikart ve carihareket şeklinde iki adet tablom var birbirine foreign key ile bağlı carihareket tablosundaki borc toplamlarını carikart kısmında bulunan toplamborc alanına yazdırıyorum. bu işlemi carihareket i bağladığım datasetin afterpost olayına yazıyorum. carihareket tablosunu DBgrid içerisinde gösterdikten sonra DBGrid ile exel usulü kayıt yaparken kayıttan hemen sonra aktif kayıt ilk kayda yöneliyor. yani gridde 10. satırı kaydederken kayıt işleminden hemen sonra toplam işlemi carikart tablosuna edit olduktan sonra normal olarak detail yani carihareket tablosunun ilk kaydına gidiyor. bu işlem belki normal olabilir ancak herseferinde ilk kayda yönelmesi DBGrid içerisinde sorun yaşatıyor. bunu önlemenin bir çaresi varmı. yani kayıt işleminden sonra ilk kayda gitmesin.
Zengin
s.a
üstadım kullanmış oldugum kod örnegine bir bakın bakalım ben nerede
hata yapıyorum amacım hareket toplamını kart kısmına toplam alanına
yazdırmak istiyorum.
üstadım kullanmış oldugum kod örnegine bir bakın bakalım ben nerede
hata yapıyorum amacım hareket toplamını kart kısmına toplam alanına
yazdırmak istiyorum.
Kod: Tümünü seç
procedure TMUSHAREKL.HARDataSet1AfterPost(DataSet: TDataSet);
begin
With IBDataSet1 do
begin
IBDataSet1.Close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('select SUM(GENEL_TOPLAM) , SUM(ODEME_TUTAR) from CARIHAREKET where CARIKODU = :CARIKODU');
IBDataSet1.Prepare;
IBDataSet1.Open;
MUSKART.IBDataSet1.Edit;//Hatayı sanırım Burası Edit modunda Oldugu icin veriyor ve sekme yapıyor diye düşünüyorum fakat cözüm bulamadım?
MUSKART.IBDataSet1.FieldByName('BORC').Value:=IBDataSet1.FieldByName('SUM').Value;
MUSKART.IBDataSet1.FieldByName('ALACAK').Value:=IBDataSet1.FieldByName('SUM1').Value;
MUSKART.IBDataSet1.FieldByName('BAKIYE').Value:=IBDataSet1.FieldByName('SUM2').Value;
MUSKART.IBDataSet1.Post;
end;
Zengin
merhaba
Gördüğüm kadarıyla şunu diyebilirim.
Parametre kullanmışsın,ama parametre değerini vermemişsin;
Prepare komutundan önce;
demelisin...
+ birde;
demissin.Bu kodda da hata verecektir.Çünkü sorgunda SUM2 değerin yok..
iyi günler...
Gördüğüm kadarıyla şunu diyebilirim.
Kod: Tümünü seç
CARIKODU = :CARIKODU');
Parametre kullanmışsın,ama parametre değerini vermemişsin;
Prepare komutundan önce;
Kod: Tümünü seç
IBDataSet1.ParamByName('CARIKODU').Asstring:=ParametreDegerin;
+ birde;
Kod: Tümünü seç
MUSKART.IBDataSet1.FieldByName('BAKIYE').Value:=IBDataSet1.FieldByName('SUM2').Value;
iyi günler...
Ek olarak; CARIKOD numeric ise parametre geçirirken ;
yerine olarak vermelisin..
Bir de select içinde aldığın SUM lara alias atamalısın
Kolay gelsin.
Kod: Tümünü seç
IBDataSet1.ParamByName('CARIKODU').Asstring := ParametreDegerin;
Kod: Tümünü seç
IBDataSet1.ParamByName('CARIKODU').AsInteger := ParametreDegerin;
Bir de select içinde aldığın SUM lara alias atamalısın

Kod: Tümünü seç
IBDataSet1.SelectSQL.Add('select SUM(GENEL_TOPLAM) as "GenelToplam", SUM(ODEME_TUTAR) AS "OdemeToplami" from CARIHAREKET ...
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
s.a
Degerli üstadlarım önermiş oldugunuz hatalı Olan Kodları düzelttim fakat DBgrid icerisinde sekme işlemi hala devam ediyor
Buraya kadar Olan Kodlarda hata vermiyor proplem yok herşey normal fakat Aşagıdaki Kodla DBGrid icinde her bir kayıt veya kursiyer degiştiginde sekmeler başlıyor Örnegin On kayıt varsa İlk kayda üste gidiyor buda cok büyük bir sorun oluyor
Degerli üstadlarım önermiş oldugunuz hatalı Olan Kodları düzelttim fakat DBgrid icerisinde sekme işlemi hala devam ediyor
Kod: Tümünü seç
With IBDataSet1 do
begin
IBDataSet1.Close;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add('select SUM(GENEL_TOPLAM)AS TOPLAM , SUM(ODEME_TUTAR)AS ODEME from CARIHAREKET where CARIKODU = :CARIKODU');
IBDataSet1.ParamByName('CARIKODU').AsInteger := 0 ;
IBDataSet1.Prepare;
IBDataSet1.Open;
Kod: Tümünü seç
MUSKART.IBDataSet1.Edit;
MUSKART.IBDataSet1.FieldByName('BORC').Value:=IBDataSet1.FieldByName('TOPLAM').Value;
MUSKART.IBDataSet1.FieldByName('ALACAK').Value:=IBDataSet1.FieldByName('ODEME').Value;
MUSKART.IBDataSet1.FieldByName('BAKIYE').Value:=IBDataSet1.FieldByName('KALAN_BAKIYE').Value;
MUSKART.IBDataSet1.Post;
Zengin
başa dönmemesi için tbookmark kullanmalısın..
birinci kullanım şekli..
ikinci kullanım şekli ise d6 ve üstü için geçerlidir..
ikinci seçenek d6 ve üstü için geçerli.. bu metod ta bookmark ı free yapmaya gerek kalmıyor
birinci kullanım şekli..
Kod: Tümünü seç
var
yerimi : tbookmark;
begin
yerimi := sorgu.GetBookmark;
// işlemler ekleme, silme, vs vs
sorgu.GotoBookmark(yerimi);
sorgu.FreeBookmark(yerimi);
end;
ikinci kullanım şekli ise d6 ve üstü için geçerlidir..
Kod: Tümünü seç
var
yerimi : tbookmarkstr;
begin
yerimi := sorgu.Bookmark;
//işlemler ekleme, silme, vs vs
sorgu.Bookmark := yerimi;
end;
..
s.a.
tablolar master detail bağlı. (mantık olarak);
sen master tablonu kapatıp açtığın zaman (refresh olayı cariahareketin afterpost olayı)
detail tablonda kapanıp açılıyor. ve ilk kayıt seçiliyor.
bunu engellemek için
tablonun kapanıp açılmasını engellemen gerekiyor.
o zaman after post olayında carikart tablonu açıp kapama.
onun yerine toplam borcu normal bir editte göster.
şöyle bir genel yapı olabilir.
veya ikinci bir master tablo kullanabilirsin.
iki masterda aynı kaydı gösterir. birini carihareketleri seçmek için kullanırsın diğerinide carinin borçlarını göstermek için kullanabilirsin.
kolay gelsin.
tablolar master detail bağlı. (mantık olarak);
sen master tablonu kapatıp açtığın zaman (refresh olayı cariahareketin afterpost olayı)
detail tablonda kapanıp açılıyor. ve ilk kayıt seçiliyor.
bunu engellemek için
tablonun kapanıp açılmasını engellemen gerekiyor.
o zaman after post olayında carikart tablonu açıp kapama.
onun yerine toplam borcu normal bir editte göster.
şöyle bir genel yapı olabilir.
- 1. Vatandaş listeden seçtiği cari nin hareketlerini görmek ister.
2. Carihareketleri formu açılır formun onshow olayında carinin carihareketler tablosundaki borcu toplanır ve ekranda gösterilir.
3. vatandaş carihareketlerde değişiklik yapar carinin borcu tekrar hesaplanıp editte gösterilir.
veya ikinci bir master tablo kullanabilirsin.
iki masterda aynı kaydı gösterir. birini carihareketleri seçmek için kullanırsın diğerinide carinin borçlarını göstermek için kullanabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim