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

Mesaj gönderen yokname »

selimr ogr_no yu edit e atıp denedim ama yine olmadı.sonuç olarak beforepost olayına ogr_no gitmiyor.ama ogr_no kontrolunu kaldırdığımda normal bir şekilde kaydediyor.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

yokname yazdı: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;
Bu kodla ne yapmak istiyorsun? Manası nedir? dset_ogrenci nedir? IBDataset1 nedir? BeforePost'ta neden dset_ogrenci.edit diyorsun? BeforePost'ta neden showmessage('Kayıt Başarılı...') yazıyorsun daha kayıt olmadı ki? Daha ne diyeyim. Açıklayıcı hiçbirşey yok milleti kıvrandırıyorsun.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Eğer Butun topiği baştan sona okusaydın aynı öğrenci numarası olan kayıtları kaydetmeyi engellemek istediğimi dset_ogrenci ile ibdataset in ne işe yaradığını görürdün kayıt başarılı mesajınıda sadece program çalışırken görmek için yazdım.

Kod: Tümünü seç

d_set_ogrenci.edit 
i de yazmazsam

Kod: Tümünü seç

not in edit mode 
hatası veriyor
Senden başka ne yapmak istediğini anlamadım diyende çıkmadı.Kırıcı olmak istemiyorum ama hitap şekline dikkate edin biraz.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Önceki yazımda size birkaç şey sormuştum.. Nedeni anlayamamaktı, üzgünüm..
Fikrimce kullandığınız bileşenler ve kurgularında ciddi bi hata var..
Kolay gelsin.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

evet ama cevabımda doğru anladığınızı onaylamıştım.Bir yerde saçma bir hata yapıyorum ama çözemedim bir türlü asıl ben özür dilerim zamanınızı aldım.
teşekkür ederim.
"dset_ogrenci" ile sorgulama yapıp "IBDataSet1"'in "Empty" olup olmadığını kontrol ediyorsunuz..Acaba benim kaçırdığım bişey mi var
Evet aynen oyle dunden beri bende bununla uğraşıyorum sormadan yapmak istedim ama başaramadım
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kullandığın IBDataSet in InsertSQL i ve diğer ayarlarının tam olup olmadığını kontrol etmeni, ayrıca if den önce ;

Kod: Tümünü seç

d_set_ogrenci.edit;
d_set_ogrenci.FieldByName('OGR_NO').AsInteger := 12345; //tipi her ne ise
d_set_ogrenci.FieldByName('Alan2').AsString := '12345';
d_set_ogrenci.Post;
bir kayıt kaydetmeye çalışıp, breakpoint (F5) koyup adım adım çalıştırıp hangi satırda ne hata verdiğini kontrol edebilirsin..
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

:) Kolay gelsin. Şu linkteki yazıyı da okumanı öneririm. http://belgeler.org/howto/smart-questions.html
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Bana harcadığınız zaman için çok teşekkürler arkadaşlar sonunda yaptım sql de hata varmış

Kod: Tümünü seç

dm.ibdataset1.Active:=false;
dm.ibdataset1.selectSql.Clear;
dm.ibdataset1.selectSql.Add('Select * from ogrenci where ogr_no='#39+f_ogrkayit.dbedit1.text+#39'');
dm.ibdataset1.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);
      abort;
      end
      else
        begin
          dm.dset_ogrenci.edit;
           showmessage('Kayıt Başarılı...');
end;
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

SQL'i en başta atsaydın daha çabuk çözecektin. Ama ben anlatamadım. Hayırlı olsun. :)
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Şakamı yapıyorsun :?

Kod: Tümünü seç

dset_ogrenci.selectSql.Add('Select * from ogrenci where ogr_no='+#39+dm.dset_ogrenci.fieldbyname('ogr_no').AsString+#39+''); 

Kod: Tümünü seç

dm.ibdataset1.selectSql.Add('Select * from ogrenci where ogr_no='#39+f_ogrkayit.dbedit1.text+#39''); 
Görmeden bakmayalım coderlord arkadaşım :!: defalarca sql i değiştirip değiştirip yazdım .
Hayırlı günler
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

İronik şeyler yazmak hoş olmuyor elbette ama bence hala kurguda sorun var..Günü kurtarsanız da ileride (büyük projelerde daha da önemlidir..) aynı sıkıntıyı değişik şekillerde yaşarsınız büyük ihtimalle..
Çalışmalarınızda başarılar..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

yokname yazdı:Şakamı yapıyorsun :?
Şaka yapıyorum tabii.. :D Bu kadar gerilme.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhabalar,

Acemiyim ama böle bi olayı bende çalışmamda uygulamak istedim ve oluyordu. Bazı hatalarım var düzenli çalışmamıştı ama yinede aynı kayıttan var ise uyarıyordu ve yapmıyordu.

çalışmamda ilçe no diye bi alanım var ve buranın benzersiz olması gerekiyor. gerçi programımda bu alan pk uniqe ama yinede yapmak istemiştim. izlediğim yol şöyle idi. ibquery kullanmıştım. dbedit1.exit olayına

Kod: Tümünü seç

ibquery1.close;
ibquery1.sql.clear;
ibquery1.sql.add('select*from ARSIVTESCIL');
ibquery1.sql.add('where ILCENO like '''+dbedit1.text'''');
ibquery1.open;

  if ibquery1.recordcount >0 then
  begin
      showmessage('Kayıttan var');
    end
    else
      next;
end;

şu an çalışan kodlar elimde olmadığı için tam olarak yazamamış olabilirim. ama yapı böyle idi. ve editten çıkınca uyrıyı vererek düzeltme yapılıyordu.

eğer alan pk uniqe ise zaten bunlara gerek kalmıyor. beforepost olayına raise except uygulanarak hata yakalanıp uyarı mesajı tr verilebiliyor. bunuda birkaç gün önce ustalarımda öğrenmiştim.

kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
gorecelik
Üye
Mesajlar: 23
Kayıt: 27 Nis 2005 02:59
Konum: İstanbul
İletişim:

Mesaj gönderen gorecelik »

yokname yazdı: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...
merhaba UpdateSQL kullanıyormusun eğer kullanıyorsan o field UpdateSQL de seçilimi belki sonradan eklemiş olabilirsin ve updatesqli güncellememişsindir çünkü bolumno boş olamaz diyor.
Kullanıcı avatarı
yokname
Üye
Mesajlar: 77
Kayıt: 17 Nis 2005 08:16
Konum: izmir

Mesaj gönderen yokname »

Dataset kullandım arkadaşım ilgin için teşekkür ederim.sorunu hallettim sorun sql deymiş.
kolay gelsin
Cevapla