post işleminde aktif kaydın ilk kayda yönelmesi
zengin27.07.2005 - 19:34:16
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.
 
gkimirti28.07.2005 - 09:09:08
after post olayında tabloyu kapatıp acıyorsan ondandır
post isleminden onde Bookmark al islem sonrası o bookmarka giderek halledebilirsin
 
zengin28.07.2005 - 10:23:21
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.

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;
 
Uğur198228.07.2005 - 10:37:47
merhaba

Gördüğüm kadarıyla şunu diyebilirim.
CARIKODU = :CARIKODU');

Parametre kullanmışsın,ama parametre değerini vermemişsin;
Prepare komutundan önce;
IBDataSet1.ParamByName('CARIKODU').Asstring:=ParametreDegerin;

demelisin...

+ birde;
MUSKART.IBDataSet1.FieldByName('BAKIYE').Value:=IBDataSet1.FieldByName('SUM2').Value;

demissin.Bu kodda da hata verecektir.Çünkü sorgunda SUM2 değerin yok..

iyi günler...
 
rsimsek28.07.2005 - 11:03:47
Ek olarak; CARIKOD numeric ise parametre geçirirken ;

IBDataSet1.ParamByName('CARIKODU').Asstring := ParametreDegerin;
yerine
IBDataSet1.ParamByName('CARIKODU').AsInteger := ParametreDegerin;
olarak vermelisin..

Bir de select içinde aldığın SUM lara alias atamalısın Wink
IBDataSet1.SelectSQL.Add('select SUM(GENEL_TOPLAM) as "GenelToplam", SUM(ODEME_TUTAR) AS "OdemeToplami" from CARIHAREKET ...


Kolay gelsin.
 
zengin28.07.2005 - 13:08:51
s.a
Degerli üstadlarım önermiş oldugunuz hatalı Olan Kodları düzelttim fakat DBgrid icerisinde sekme işlemi hala devam ediyor


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;

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

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;
 
selimr28.07.2005 - 13:38:35
başa dönmemesi için tbookmark kullanmalısın..


birinci kullanım şekli..

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..


var
yerimi : tbookmarkstr;
begin
yerimi := sorgu.Bookmark;
//işlemler ekleme, silme, vs vs
sorgu.Bookmark := yerimi;
end;
..


ikinci seçenek d6 ve üstü için geçerli.. bu metod ta bookmark ı free yapmaya gerek kalmıyor
 
zengin29.07.2005 - 08:44:25
s.a


Degerli arkadaşlarım önermiş oldugunuz Bookmark ile yeterli bir sonuca varamadım ve AfterPost ? DBgrid ile burada sürekli işlem yapacagı icin
herdefasında sekmeye vede kasmaya musayit bir ortamı var ?
Daha Farklı bir yol veya bir öneri ile bu hatayı nasıl cözebilirim.
 
aslangeri29.07.2005 - 11:14:36
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.

  • 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.

  • böyle bir 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.
     
    NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
    1998-2006 www.delphiturkiye.com