tekrarsız kayıt
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
tekrarsız kayıt
merhaba arkadaşlar ....
şimdi bir tablom var örnek
Ürün kodu
150
154
158
122
Ben buna adoquerynin post metodu ile kayıt ekliyorum.
Benim amacım 150 nolu ürün kodundan başka kayıt girilmesin. Primary key ile yapmak istemiyorum bunu.
yardımlarınız için saolun
şimdi bir tablom var örnek
Ürün kodu
150
154
158
122
Ben buna adoquerynin post metodu ile kayıt ekliyorum.
Benim amacım 150 nolu ürün kodundan başka kayıt girilmesin. Primary key ile yapmak istemiyorum bunu.
yardımlarınız için saolun
Şöyle yapabilirsin.Diyelimki bu kayıt(post) işlemini Query1 ile yapıyorsun.
Başka bir Query oluşturup yada runtime create ederek örn.Query2 bununlada bir SQL sorgusu yazarak bu post edeceğin kayıt numarasını içeren kayıtı ararsın.Eğer kayıt bulunursa
eğer bulunamazsa
Hatta bunu bir fonksiyon olarak ta yazıp True False durumuna göre
yada
Yapabilirsin.
Kolay gelsin.
Başka bir Query oluşturup yada runtime create ederek örn.Query2 bununlada bir SQL sorgusu yazarak bu post edeceğin kayıt numarasını içeren kayıtı ararsın.Eğer kayıt bulunursa
Kod: Tümünü seç
ShowMessage('Bu Kayıt Zaten Var');
exit;
Kod: Tümünü seç
Query1.post;
Kod: Tümünü seç
Query1.Post;
Kod: Tümünü seç
Query1.Cancel;
Kolay gelsin.
NewMember hocama selam bende bir ilave yapayım acizane olarak.
Önce ADOQuery ile post işlemini pek tavsiye etmem tabi bu benim düşüncem.
Ürün table adı: urun olsun
içindede id,urunkodu olsun daha olurda ben örnek için iki tane alan yazayım.
ürünlerin listelendiği bir form olsun.
DBGridle listelensin.
Burada yeni - Düzelt - Sil Çıkış butonları olsun.
Yeni butonuna tıklayalım;
Yeni Kayıt için açılan pencerede;
Ürün Kodu : Edit1.Text
Kaydet butonu ve çıkış butonu olsun.
Şimdi ürünü kaydedelim kaydet butonuna tıklayarak.
Her forma ADOQuery koymaktansa Datamodule açıp oraya koyduğunuz ADOQuery i usese tanıttıktan sonra kullanabilirsiniz. DataModule1.ADOQuery1 gibi
Eğer Düzeltme için işlem yaptırıp yine urunkodunu kullanıcı değiştirdiğinde değiştirilen de kontrol edilsin diyorsan. Ben şöyle yapıyorum.
form2 ye visible özelliği olan bir Edit.Text yerleştiriyorum. Bunu fieldin özelliğine göre global bir değişken le de yapabilirsin.
Düzeltilecek veriler listelenirken buraya da kontrol edeceğim veriyi koyuyorum. Daha sonra düzelt butonuna tıklandığında önce Edit1.Text le Edit.Text i karşılaştırıyorum. Eğer kullanıcı kodu değiştirmemişse sorun yok işleme devam. Diğer kayıtları değiştirecek belki. Eğer visible özelliği olan edit.text le verinin listelendiği Edit1.Text birbirini tutmuyorsa demekki urunkodunu da değiştirmiş. O zaman değiştirilen kodu kontrol ediyorum Daha önce kayıtı varmı diye.
Umarım faydalı olabilmişimdir. Kolay gelsin......
Önce ADOQuery ile post işlemini pek tavsiye etmem tabi bu benim düşüncem.
Ürün table adı: urun olsun
içindede id,urunkodu olsun daha olurda ben örnek için iki tane alan yazayım.
ürünlerin listelendiği bir form olsun.
DBGridle listelensin.
Burada yeni - Düzelt - Sil Çıkış butonları olsun.
Yeni butonuna tıklayalım;
Yeni Kayıt için açılan pencerede;
Ürün Kodu : Edit1.Text
Kaydet butonu ve çıkış butonu olsun.
Şimdi ürünü kaydedelim kaydet butonuna tıklayarak.
Kod: Tümünü seç
Procedure TForm2.kaydetclick(Sender:TObject);
var
K:string;
begin// önce editlerin boş geçmemesi için kontrol edelim
if Trim(Edit1.Text)<>'' then
begin
// if not ADOTable1.Locate('urunkodu',Trim(Edit1.Text),[]) then gibi de olabilir
ADOQuery1.Close;
ADOQuery1.Sql.Clear;
ADOQuery1.Sql.Add('select * from urun');
ADOQuery1.sql.Add('where urunkodu="'+Trim(Edit1.Text)+'"');
ADOQuery1.prepared:=True;
ADOQuery1.Open;
if not ADOQuery1.IsEmpty then //Eğer boş dönerse
begin
K:='INSERT into urun(urunkodu)Values( " '+Trim(Edit1.Text)+'")';
//ADOCommand1.CommandText:=K;
//ADOCommand1.Execute;
//veya
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(K);
ADOQuery1.ExecSQL;
//Eğer Form1 deki DBGrid1 ADOQuerye bağlı ise
Form1.ADOQuery1.Close;
Form1.ADOQuery1.Sql.Clear;
Form1.ADOQuery1.Sql.Add('select * from urun');
Form1.ADOQuery1.Open;
Form1.ADOQuery1.Locate('urunkodu',Edit1.Text,[]);// geri döndüğümüzde yeni kayıt seçili olsun.
Close;
end
else
begin //kayıt varsa uyar
ShowMessage('Tekrarlı Kayıt Girişi');
Edit1.Text;
Abort;
end;
end
else
begin
ShowMessage('Eksik Bilgi Girişi');
Edit1.Text;
Abort;
end;
end;
Eğer Düzeltme için işlem yaptırıp yine urunkodunu kullanıcı değiştirdiğinde değiştirilen de kontrol edilsin diyorsan. Ben şöyle yapıyorum.
form2 ye visible özelliği olan bir Edit.Text yerleştiriyorum. Bunu fieldin özelliğine göre global bir değişken le de yapabilirsin.
Düzeltilecek veriler listelenirken buraya da kontrol edeceğim veriyi koyuyorum. Daha sonra düzelt butonuna tıklandığında önce Edit1.Text le Edit.Text i karşılaştırıyorum. Eğer kullanıcı kodu değiştirmemişse sorun yok işleme devam. Diğer kayıtları değiştirecek belki. Eğer visible özelliği olan edit.text le verinin listelendiği Edit1.Text birbirini tutmuyorsa demekki urunkodunu da değiştirmiş. O zaman değiştirilen kodu kontrol ediyorum Daha önce kayıtı varmı diye.
Umarım faydalı olabilmişimdir. Kolay gelsin......
selam
basit bir şekilde bu şekilde de yapılabilir
basit bir şekilde bu şekilde de yapılabilir
if adoquery1 .recordcount=150 then begin
showmessage('Bu kayıt zaten var');
end
else
if adoquery1.recordcount<>'' then begin
//Kaydet işlemlerini''
end;
end;Kod: Tümünü seç
kolay gelsin
Hocammenderes yazdı:mussimsek hocam unique indeks tanımlayıpta nasıl bir kod yazmak gerekir ki ingilizce hata mesajı vermesin. Bir de yazdığım kod da veritabanı şişme olayı nasıl olur. Bilgilenme açısından soruyorum. Eğer cevaplandırırsanız bizi memnun edersiniz.



pek çok kez konuştuk bunları.
Kolay gelsin.
Bu sitenin ilk zamanlarında öyle mutlu oldumki, sizleri tanıdığım için,mussimsek yazdı:Hocammenderes yazdı:mussimsek hocam unique indeks tanımlayıpta nasıl bir kod yazmak gerekir ki ingilizce hata mesajı vermesin. Bir de yazdığım kod da veritabanı şişme olayı nasıl olur. Bilgilenme açısından soruyorum. Eğer cevaplandırırsanız bizi memnun edersiniz.Arama,
Arama,
Arama
pek çok kez konuştuk bunları.
Kolay gelsin.
bir şey sorulduğu zaman şevkle bir cevap verme hevesi vardı. Hatta konuşmalarınızda programcı arkadaşlar hafta sonu biraraya geliyor çay içiyor diye yazılmıştı forumda. Şimdi nerde hatırlamıyorum. 3 sene önce hala hafızamdan gitmemiş. Şimdi ne oldu ki sadece siz değil diğer bazı admin ve yöneticiler de kısa bir yazı ile arama diye tutturuyor. Kısa bir cevap sorum aslında veya kısa bir cevap yazıp bu konu ile ilgili arama yapabilirsiniz denilirdi.
Forumda bir konu için arama yapıyorum. Bulduğum konuda da arama yap kelimeleri çıkıyor.
Eleştirimi okurken, hizmetleriniz için dualarımız olduğunu unutmayın. .
Tekrar dualarımızla başarılarınızın devamını arzu ederken ölümden sonra amel defterimizin açık olması dileğiyle saygılar.
Hocam haklısın ama olaya bir de şurdan bakmanı rica ediyorum. Yöneticiler başta olmak üzere cevap yazan arkadaşların çoğunluğu çok yoğun çalışan arkadaşlar. İnanın biz molalarımızı forumda değerlendiriyoruz.
Bazen öyle sorular oluyorki ben biliyorum forumda onlarca, yüzlerce kez konuşuldu. Revamı bunu 11. veya 101. kez yazmak
Eğer reva derseniz ben 15-20 dakikamı size verip ilgili cevapları bulup yollayacağım.
Kolay gelsin.
Bazen öyle sorular oluyorki ben biliyorum forumda onlarca, yüzlerce kez konuşuldu. Revamı bunu 11. veya 101. kez yazmak

Kolay gelsin.
merhaba,
errorpost eventine sadece çıkmasını istediğiniz mesajı exception olarak yazıyorsunuz işlem tamam. post olayında hata oluşursa bu mesaj dönüyor
viewtopic.php?t=334&highlight=posterror
viewtopic.php?t=274&highlight=posterror
kolay gelsin
errorpost eventine sadece çıkmasını istediğiniz mesajı exception olarak yazıyorsunuz işlem tamam. post olayında hata oluşursa bu mesaj dönüyor
viewtopic.php?t=334&highlight=posterror
viewtopic.php?t=274&highlight=posterror
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.

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.

Kod: Tümünü seç
ad:=inputbox('Öğrenci Numarası Sorgulama Ekranı','Lütfen Öğrenci Numarasını Giriniz','');
if adoTABLE1.locate('ogrno',ad,[]) then //no files i edit1 den kontrol ediyor.
begin
showmessage('Bu Numaralı Başka Bir Kayıt Var'+#13+'Öğrenci Numaraları Aynı Olamaz');
end
else
BEGIN
adoTABLE1.Insert;
adoTABLE2.Insert;
adoTABLE3.Insert;
dbedit7.SetFocus;
dbedit7.Text:=ad;
end;
end;