Firebird 2.0 ve Delphi7 kullanıyorum. Veri Tabanına bağlanmak için de InterBase bileşen paletindeki bileşenleri kullanıyorum;
"DEMIRBAS_CESITLERI" adında 2 alanlı bir tablom var... Alanlar şunlar;
"DEMIRBAS_CESIDI_NO integer, DEMIRBAS_CESIDI_ADI varchar(50)"
Şimdi bu tabloma primary key olan"DEMIRBAS_CESIDI_NO" alanını şu şekilde yazdığım bir generator ve trigger ile arttırmak istedim;
Kod: Tümünü seç
CREATE TRIGGER TRG_DEMIRBAS_CESIDI_NO FOR DEMIRBAS_CESITLERI
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.DEMIRBAS_CESIDI_NO=gen_id(gen_demirbas_cesidi_no,1);
end
Problemim şu; DBGrid üzerinden yeni bir kayıt girdiğim zaman grid'in en alt satırında yeni girdiğim satır değil de bir önceden girmiş olduğum satır görünüyor. Başka bir kayıt girdiğim zaman bir önceden girmiş olduğum kayıt görünüyor. Yani girdiğim kaydı görmek için yeni bir kayıt girmem gerekiyor (veya IBDataSet'i kapatıp açmam gerekiyor -ki bu pek de teknik bir çözüm değil gibi geldi-).
Fakat IBDataSet'in GeneratorField'indeki "increment by" özelliğini 1 yaptığım zaman DEMIRBAS_CESIDI_NO 2şer 2şer artmasına rağmen yukarıdaki problem meydana gelmiyor, herşey normal çalışıyor... Bütün bunların sebebi ne olabilir? Yardım ederseniz sevinirim... Saygılar...
Not: ibdataset.selectSQL=select * from DEMIRBAS_CESITLERI
ibdataset.ModifySQL=update DEMIRBAS_CESITLERI
set
DEMIRBAS_CESIDI_NO =

DEMIRBAS_CESIDI_ADI =

where
DEMIRBAS_CESIDI_NO = :OLD_DEMIRBAS_CESIDI_NO
ibdataset.insertSQL=insert into DEMIRBAS_CESITLERI
(DEMIRBAS_CESIDI_NO, DEMIRBAS_CESIDI_ADI)
values
(:DEMIRBAS_CESIDI_NO,

ibdataset.refreshSQL=Select
DEMIRBAS_CESIDI_NO,
DEMIRBAS_CESIDI_ADI
from DEMIRBAS_CESITLERI
where
DEMIRBAS_CESIDI_NO =
