Merhaba
Bu soru daha önce sorulmuştu ama ben bir yerde yanlış yapıyorum galiba.kayıt formunda kaydet dediğimde bastıgımda ogrenci formunu post ediyor.daha sonra beforepost olayında şu kontrolü yapıyorum
dset_ogrenci.Active:=false;
dset_ogrenci.selectSql.Clear;
dset_ogrenci.selectSql.Add('Select * from ogrenci where ogr_no='+#39+dm.dset_ogrenci.fieldbyname('ogr_no').AsString+#39+'');
dset_ogrenci.Active:=true;
if not dm.IBDataSet1.IsEmpty then
begin
Application.MessageBox('Bu Öğrenci numaralı kayıt zaten kayıtlı lütfen numarayı kontrol ediniz!','Uyarı',0+4);
end
else
begin
dset_ogrenci.edit;
dset_ogrenci.post;
showmessage('Kayıt Başarılı...');
end;
Ama burada tahminimce kaydı gercekleştirip kontrol ediyor.Çünkü tablo daki
Kaydetmemesi için Hata mesajından sonra Abort; komutu vermelisin. Bu sayede Post işlemi iptal edilecektir. Bu arada BeforePost içinde Post; komutu kullanma, döngüye sokar. Bırak geçsin, kendisi Post edecektir.
En son fduman tarafından 04 May 2005 10:20 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
dset_ogrenci.Active:=false;
dset_ogrenci.selectSql.Clear;
dset_ogrenci.selectSql.Add('Select * from ogrenci where
ogr_no = :A0'
dset_ogrenci.params[0].AsString := edit1.text;
dset_ogrenci.active:=true;
if dset_ogrenci.recordcount>0 then
Application.MessageBox('Bu Öğrenci numaralı kayıt zaten kayıtlı lütfen numarayı kontrol ediniz!','Uyarı',0+4);
procedure Tdm.dset_ogrenciBeforePost(DataSet: TDataSet);
begin
dset_ogrenci.Active:=false;
dset_ogrenci.selectSql.Clear;
dset_ogrenci.selectSql.Add('Select * from ogrenci where ogr_no='+#39+dm.dset_ogrenci.fieldbyname('ogr_no').AsString+#39+'');
dset_ogrenci.Active:=true;
if not dm.IBDataSet1.IsEmpty then
begin
Application.MessageBox('Bu Öğrenci numaralı kayıt zaten kayıtlı lütfen numarayı kontrol ediniz!','Uyarı',0+4);
abort;
end
else
begin
dset_ogrenci.edit;
dset_ogrenci.post;
showmessage('Kayıt Başarılı...');
end;
end;
dset_ogrenci.Active:=false;
dset_ogrenci.selectSql.Clear;
dset_ogrenci.selectSql.Add('Select * from ogrenci where ogr_no=:A0');
dset_ogrenci.params[0].AsString := f_ogrkayit.DBEdit1.text;
dset_ogrenci.Active:=true;
if not dm.IBDataSet1.IsEmpty then
begin
Application.MessageBox('Bu Öğrenci numaralı kayıt zaten kayıtlı lütfen numarayı kontrol ediniz!','Uyarı',0+4);
abort;
end
else
begin
dset_ogrenci.edit;
//dset_ogrenci.post;
showmessage('Kayıt Başarılı...');
end;
Bölüm no not null bir alan Mustafa hocam ama ben o alana kayıt giriyorum.Orda bir problem var veritabanınada aynı yada farklı numara girsem bile hiç bir şey kaydetmiyor.Sorunu bir türlü çözemedim.
Yardımlarınız için çok teşekkürler...
Evet aynen oyle dunden beri bende bununla uğraşıyorum sormadan yapmak istedim ama başaramadım
en son yazdığım kodda kaydet dedikten (tabloda hem olan hemde olmayan bir numara girdim)sonra kayıt başarılı mesajı veriyor ve ardından