Aynı numarayı kaydetmeme!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Aynı numarayı kaydetmeme!

Mesaj gönderen yokname »

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

Kod: Tümünü seç

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

Kod: Tümünü seç

 bolumno must have a value
hatası alıyorum.
Teşekkürler...
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

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.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Beforepost olayından post kaldırdım ve donguye abort ekledim ama sorun yine devam ediyor.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kodlarını buraya atarsan bakabiliriz. Bu kadar bilgi ile sorunun nerede olduğunu anlamak kolay değil.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

Kod: Tümünü seç

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); 
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

Kod: Tümünü seç

dset_ogrenci.selectSql.Add('Select * from ogrenci where ogr_no='+#39+dm.dset_ogrenci.fieldbyname('ogr_no').AsString+#39+''); 
bu kodda where den sonra yazdığın

ogr_no='+#39+dm.dset_ogrenci.fieldbyname('ogr_no').AsString+#39+'');

karşılaştırılan kısımda bir hata var galiba
burda tablodaki mevcut veriyi tablodaki veriyle karşılaştırıyorsun.

= den sonra hangi veriyi karşılaştıracaksan onu yazmalısın..
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Kod: Tümünü seç

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;
Kayıt formundada sadece

Kod: Tümünü seç

dm.dset_ogrenci.post 
var
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Senin söylediğin gibi denedim Selimr ama sorun yine devam ediyor kodlar aşağıda...

Kod: Tümünü seç

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;
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

BolumNo not null bir alansa olabilir.

Değilse alanın RequiredField özelliği True kalmış olabilir. Onu False yap.

Kolay gelsin.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

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...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.

Bilmiyorum belki benim gözümden kaçan bişey var ama kodlarınıza baktığımda;

- "dset_ogrenci" ile sorgulama yapıp "IBDataSet1"'in "Empty" olup olmadığını kontrol ediyorsunuz..Acaba benim kaçırdığım bişey mi var :?:
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Evet aynen oyle dunden beri bende bununla uğraşıyorum sormadan yapmak istedim ama başaramadım :shock:
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

Kod: Tümünü seç

validation error for column bolum_no,value "****null****"
hatası veriyor kaydıda gerçekleştirmiyor.
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

f_ogrkayit.DBEdit1.text;

yerine

kontrol edeceğin veri için dbedit yerine normal bir edit kullanmayı denermisin.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kodlarını atsan da millet onda mı bunda mı diye her seferinde sormasa diyorum hala.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Gerekli kodları yukarıda defalarca verdim arkadaşım onlardan başka istediğin varsa ve neyin lazım olduğunu belirtirsen seve seve atarım.
Cevapla