AYNI KAYIT KONTROLÜ

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

Merhaba

data bileşeni olarak firedac kullanmaktayım

data yapısı aşağıdaki gibi olup

id = integer
kullanıcı adı = varchar

kullanıcı adı satırına girilen bilgiyi kontrol edip eğer kayıt var ise kayıt etmek istemiyorum.

post işlemi öncesinde nasıl bir kod kullanma gerekiyor bu konuda yardımlarınızı beklemekteyim. locate metodu olur farklı bir query den sorgulama olur ama lütfen bana data kısmında unique alan kullanımı ile ilgili bahsetmeyin bu fonksiyonu kullanmak istemiyorum, Açıklayıcı bir kod ile bahsederseniz sevinirim. Bu konudan dolayı kafayı yemek üzereyim delphi forumlarında tam anlamı ile açıklayıcı bir kod bulamadım ister kendi beceriksizliğin deyin ister doğru şekilde arama yapmamışsın deyin. Lütfen delphiyi öğrenmeye çalışan arkadaşlar ve bana daha açıklayıcı şekilde kodları belirtip yardım etmenizi bekliyorum.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen greenegitim »

Şuan girdiğin id den farklı olan ve kullaniciadı şuan girdiğin olan bir kayıt varmı diye before post unda kontrol edebilirsin.
Mücadele güzelleştirir!
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

kontrol edebilirsin kısmını bende biliyorum ama hangi kodla ????? Lütfen onu bunu yapabilirsinle gelmeyin bana açıklayıcı bir kod yazın

procedure TDm1.QrKullaniciBeforePost(DataSet: TDataSet);
begin

end;

nedir nası bir koda yazma gerek buraya açıklaycsı bir cevap lütfen
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen greenegitim »

Aslında uslubuna bakılınca cevap vermemek daha doğru geliyor ama neyse kimse sana kod yazmak zorunda değil onu bunu yapabilirsinle gelinmesin istiyorsan eleman arayanlar kısmına bakabilirsin.

Kod: Tümünü seç

var
cumle:string;
begin
cumle:='';
cumle:=cumle+' and id <>'+quotedstr(datasetinId.text);
cumle:=cumle+'and kullaniciadi='+quotedstr(datasetkullaniciadi.text);
dataset2.close;
dataset2.sql.text:='';
dataset2.sql.tet:='select * from tablon where 1=1'+cumle+'';
dataset2.open;
dataset2.fetchall;

if dataset2.recordcount>0 then showmessage('Bu Kayıt Zaten Var');
Mücadele güzelleştirir!
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

Bu konu üslup ile alakalı değil delphi kullanıcıları sanki öğrenmeye çalışan arkadaşlardan kodları kıskanır gibi karmaşık kodlar yazıyorlar. C# forumlarına bakıyorum açıklayıcı kodlar var ama burda tam anlamıyla şu kod bu işi görür gibi bir açıklama göremiyorum.
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

Tam olarak verdiğiniz kodu uyarlayıp aşağıdaki gibi yazdım konu benim verdiğim uslup değil bakı yukarıda qurery kullandığımı belirttim ben burda bunaldığım bir konuyu geçmeye uğraştığım için yazıyorum yoksa kimse bana kod yazmak zorunda değil. Burası bir yardım platformu ise gönüllü arkadaşların yardımlarını bekliyorum.


implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

procedure TDm1.QrKullaniciBeforePost(DataSet: TDataSet);
var
cumle:string;
begin
cumle:='';
cumle:=cumle+' and id <>'+quotedstr(dm1.QrKullanici.text);
cumle:=cumle+'and kullaniciadi='+quotedstr(dm1.QrKullaniciKULLANICIAD.text);
dm1.qrkullanici.close;
dm1.qrkullanici.sql.text:='';
dm1.qrkullanici.sql.text:='select * from kullanici where 1=1'+cumle+'';
dm1.qrkullanici.open;
dm1.qrkullanici.fetchall;

if dm1.qrkullanici.recordcount>0 then showmessage('Bu Kayıt Zaten Var');
end;

end.

fakat if dm1.qrkullanici.recordcount>0 then showmessage('Bu Kayıt Zaten Var'); showmessage altını kırmızı çizgi ile çizip hata veriyor
En son quake16 tarafından 23 Mar 2016 02:16 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen greenegitim »

farklı bir query de bu kontrolu yap başka bir query koy adı query1 olsun

Kod: Tümünü seç

dm1.query1.close;
dm1.query1.sql.text:='';
dm1.query1.sql.text:='select * from kullanici where 1=1'+cumle+'';
dm1.query1.open;
dm1.query1.fetchall;

if query1.recordcount > 0 then
begin
Showmessage ('Bu kayıt var');
end;

Mücadele güzelleştirir!
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

Aynı sorun yine devam ediyor show message altını kırmızı çiziyor
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen greenegitim »

hata kodunu yazsan ne hata veriyor bide bu dm1.query1.fetchall; satırı sil belki yanlış yazmış olabilirim fetchingall de olabilir.
Mücadele güzelleştirir!
quake16
Üye
Mesajlar: 10
Kayıt: 04 Eyl 2014 02:38

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen quake16 »

greenegitim adlı arkadaşımızın vermiş olduğu destek için teşekkür ederim
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen erdogan_ozkaya »

sorgu basit ve net, çözemediysen yardımcı olayım ?
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: AYNI KAYIT KONTROLÜ

Mesaj gönderen mustafasoy »

Greeneğitim sabrına gerçekten hayran kaldim tebrik ederim
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Cevapla