

Merhabalar;
Ekle Butonuna Bastığımda Dbgriddeki kullanıcı adıyla aynı ise Kaydet butonuna bastığımda veri tabanına kayıt ekletmeyip uyarı vermem gerekiyor bana yardımcı olurmusunuz???
Saygılarımla;
Kod: Tümünü seç
begin
users.query.close;
users.query.sql.clear;
users.query.sql.text:='select * from USER where User_name='''+Kullanici_Adi.text+'''';
users.query.open;
if users.query.recordcount>0 then
begin
showmessage:=(Kullanici_Adi.Text+' '+'İSİMLİ KULLANICI ÖNCEDEN KAYDEDİLMİŞTİR');
Abort;
end;
users.query.close;
users.query.sql.clear;
users.query.sql.text:='select * from USER';
users.query.open;
end;
Kod: Tümünü seç
Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive]);/// Table1 tablosunun AD alanında Edit1 içindekini ara
IF Table1ad.AsString=Edit1.Text THEN begin /// eğer table1ad alanındaki edit1 de yazılı olan ile aynı ise
Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster
end else begin /// eğer aynı değilse yapacağı işlemler
Table1.Append; /// tabloyu kaydetme moduna alıyoruz
Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye
Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz.
Showmessage(''Kayıt Eklendi..)
end;
Kod: Tümünü seç
Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive]);/// Table1 tablosunun AD alanında Edit1 içindekini ara
IF Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive])=true THEN begin /// eğer table1ad alanındaki edit1 de yazılı olan ile aynı ise
Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster
end else begin /// eğer aynı değilse yapacağı işlemler
Table1.Append; /// tabloyu kaydetme moduna alıyoruz
Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye
Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz.
Showmessage(''Kayıt Eklendi..)
end;
Kod: Tümünü seç
IF Table1.LOCATE('AD; SOYAD',VarArrayOf([Edit1..Text,Edit2.text]),[loCaseInsensitive])THEN begin /// AD alanında Edit1 de yazılanı ve soyad alanında edit2 dekini ara
Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster
end else begin /// eğer aynı değilse yapacağı işlemler
Table1.Append; /// tabloyu kaydetme moduna alıyoruz
Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye
Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz.
Showmessage(''Kayıt Eklendi..)
end;
Lord_Ares yazdı:Paradox veritabınını oluşturduğunu düşünerek ,
1) Formuna bir tane table ve datasource bileşini koy
2)Datasource bileşeninin özellikler kısmındaki Dataset kısmını tıkla table1 seç
3)Table bileşeninin özellikler kısmındaki Database name kısmını tıklayarak oluşturduğun veritabanı dosyasını göster.
4) Table bileşeninin özelliklerindeki Table Name kısmında oluşturduğun data görünecektir onu seç.
5)Table bileşenini üzerini çift tıkla açılan pencerede CTRL A tuşları basarak tablondaki tüm alanları ekle.
6) Table Bileşeninin Active özelliğini true yap.
Kaydet buttonuna bastığında çalışacak kod. Bunu mantığını anlayabilmen için örnek olarak sadece adı alanını ekleyerek gösteriyorum. Diğerlerini sen eklersinLocate ile arama yaparsan, arama yapıldıktan sonra kayıt varsa kursör bulunan kaydın üzerine gider.Kod: Tümünü seç
Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive]);/// Table1 tablosunun AD alanında Edit1 içindekini ara IF Table1ad.AsString=Edit1.Text THEN begin /// eğer table1ad alanındaki edit1 de yazılı olan ile aynı ise Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster end else begin /// eğer aynı değilse yapacağı işlemler Table1.Append; /// tabloyu kaydetme moduna alıyoruz Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz. Showmessage(''Kayıt Eklendi..) end;
Locate ile arama yaptığında true veya false diye değer döner.Bu arama şeklini şöylede kullanabilirsin.
Arama yaparken sadece adı değilde adı, soyadı gibi her ikisi birden kullanarak arama yapmak istersen kod şöyle olacaktır.Kod: Tümünü seç
Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive]);/// Table1 tablosunun AD alanında Edit1 içindekini ara IF Table1.LOCATE('AD',edit1.Text ,[loCaseInsensitive])=true THEN begin /// eğer table1ad alanındaki edit1 de yazılı olan ile aynı ise Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster end else begin /// eğer aynı değilse yapacağı işlemler Table1.Append; /// tabloyu kaydetme moduna alıyoruz Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz. Showmessage(''Kayıt Eklendi..) end;
Burada IF Table1.LOCATE('AD; SOYAD',VarArrayOf([Edit1..Text,Edit2.text]),[loCaseInsensitive]) eşittir true kullanmadım fakat kullanmakla aynı anlama gelir. O yüzden ona takılma. Veritabanında çok kayıt varsa ( 10000 gibi..) bu arama şekli yavaş olur. O yüzden yukarıda arkadaşın gösterdiği şekilde Sql ile yaparsan aramaların daha hızlı olur.Kod: Tümünü seç
IF Table1.LOCATE('AD; SOYAD',VarArrayOf([Edit1..Text,Edit2.text]),[loCaseInsensitive])THEN begin /// AD alanında Edit1 de yazılanı ve soyad alanında edit2 dekini ara Showmessage(''Bu kayıt daha önce eklenmiş..) /// aynıysa bu hata mesajını göster end else begin /// eğer aynı değilse yapacağı işlemler Table1.Append; /// tabloyu kaydetme moduna alıyoruz Table1ADI.AsString:=Edit1.Text; ///table1 deki adı alanı eşittir edit1 içinde girilen bilgiye Table1.Refresh; ////Yapılan değişikliklerin görünmesi için tablomuzu yeniliyoruz. Showmessage(''Kayıt Eklendi..) end;
Tercih senin kolay gelsin
NOT: Kodları elle yazdım deneme şansım olmadı ufak tefek noktalama hataları olabilir.
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Table1.Append;
Form2.Show;
end;
Kod: Tümünü seç
var
ara:variant;
begin
ara:=Table1.Lookup('kullaniciadi',Edit1.Text,'kullaniciadi;sifre');
if VarIsNull(ara) Then //Eğer boş sa
ShowMessage(' Kayıt Bulunamadı ')
else
ShowMessage(' Kullanıcı Adı : '+ara[0]+#13#10+' Şifre : '+ara[1]);
Edit1.Text:='';
Edit1.SetFocus;
End;
Lord_Ares yazdı:Tamam işte, kaydet buttonuna benim verdiğim ilk kodu yazarsan göreceksin ki eğer aynı kayıt varsa hata verecek ve kaydı eklemeyecektir.
Bu arada Ekle buttonun da append etmen hata olur orada sadece show demelisin.
Table1.Append;
Form2.Show
Örneğini görmen için yaptım.
http://www.dosya.tc/server31/cHoFs2/kaydet.rar.html;
yusuf simsek yazdı:Sayın @kaan_karabey... ( Eğer tüm projelerinde Paradox kullanıyorsan ) hemen paradox veritabanını terket!!!!Hızlı bir şekilde Firebird geç... Max 1 ya da 2 gün adaptasyon sorunu yaşarsın... Formda istemediğin kadar bilgi var...