dbedit

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit

Mesaj gönderen selman »

:lol: merhaba ben dbedite girdiğim bir kaydı bir daha girdiğimde hata
mesajını vermesini istiyorum. yalnız bunu table dan kontrol etmek isti
yorum nasıl yapabilirim. bana yardımcı olursanız sevinirim.

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7523
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

o alana primary veya tekil (unique) index yapman lazım.

Kolay gelsin.

Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Unique index secili iken Findkey ile bu kontrolu yaptirabilirsiniz..

Mutlaka table nesnesini kullanmak zorunda degilseniz de bu kod farkli bir kontrol icin fikir verecektir.

Kod: Tümünü seç

with TQuery.Create(Self) do
begin
  DatabaseName:='DATABASE_ADI'; //Database componentinizin DatabaseName ozelligi
  SQL.Add('Select count(*) as KAYIT_SAYISI from MUSTERI where MUSTERI_NO='+IntToStr(VAR_MUSTERI_NO));
  Open;
  if FieldByName('KAYIT_SAYISI').AsInteger>0 then
    ShowMessage('Kayıt var');
  Free;
end;

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit

Mesaj gönderen selman »

:oops: Hocam
unigie index nasıl oluşturulur.ve find key medodunu nasıl kullanabilirim. Kolay gelsin.

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7523
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

hangi veritabanını kullanıyorsun?

Kolay gelsin.

Kullanıcı avatarı
mpolat
Üye
Mesajlar: 96
Kayıt: 30 Ağu 2003 01:19
Konum: Malatya

Mesaj gönderen mpolat »

Primary key oluşturmak için (Paradox) kullandığınızı varsayarsak alanı tanımlarken "Key" sütununda * tuşuna veya SPACE tuşuna basmanız yeterli olacaktır. Unique Index oluşturmak içinse (Yine Paradox kullandığınız varsayıyorum) Tabloyu oluştururken sağ tarafta bulunan "Table Properties" açılır kutusundan "Secondary Indexes" seçin,ardından Define butonuna tıklayın açılan pencerede sol taraftan Unique olarak tanımlamak istediğiniz alana tıklayıp sağ ok tuşuyla sağ tarafa alın ve aşağıda bulunan "Index Options" kısmında "Unique" onay kutusunu işaretleyip OK'a basın bu işlemden sonra sizden İndex adını girmeniz istenecektir. İndex adını yazıp geçin.
Umarım fazla uzatmadan yardımcı olabilmişimdir.

Kolay Gelsin

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit sorunu ile ilgili

Mesaj gönderen selman »

:( mustafa hocam dbase for windows kullanıyorum.datalarımı buna göre
hazırladım.ne yapmam gerekiyor. İyi çaloşmalar

Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Database desktop ile ilgili tablonuzun yapısını acarsaniz. (Restructure) sag tarafta table properties kisminda indexes secili iken alt tarfta define deyip index tanimlarken indexin unique olmasin icin options'ta ilgili check box'i isaretlemeniz gerekiyor.... Findkey'in kullanımı ise su sekilde ornegin primary key iki alandan olusuyorsa

Kod: Tümünü seç

if Findkey([Deger1,Deger2]) then
.....
tek alan var ise ve de primary key numeric ise ...

Kod: Tümünü seç

if Findkey([StrToInt(Edit1.Text)]) then
.....

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit

Mesaj gönderen selman »

:( fahrettin hocam unigie index yaptım fakat bu seferde daha önce silmiş olduğum kayıtları bir daha giremiyorum.
benim esas sorunum dbgridde ikinci bir kaydım gözükmesin. Yani dbeditten mesala 1 girdiğim kodu Kaydettim İkinci sefer yine 1 girdiğimde
bu kayıt şu an da var demesini istiyorum.
ve locate,findkey gibi komutlardan bir sonuç alamadım. Acaba ben mi bir yerleri eksik yapıyorum. Hocam tam teferruatlı bunu komutlarını gönderir
seniz sevinirim.Allah şimdiden razı olsun.

Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Açıkcası dbase tabloları ile calismadigim icin o tarafta fazla bir bilgim yok. Daha once yazdigimi da o an bakip gorerek yazmistim. Zaten unique index yapinca ayni kaydin girilmesine veritabani musade etmemekte. Sizin kontrol yapmaniza bile gerek kalmiyor....

Query ile kontrol etme icin gonderdigim kodun calismasinda bir sorun olmayacaktir bence onu kullanın olmazsa....

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit

Mesaj gönderen selman »

herşeye ragmen gönderdiğiniz bilgi için teşekkür ederim

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7523
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

dbase'de unique (tekil) indeks yapmak için :

1. Table properties'ten Indexes'ı seçin.
2. Define... butonuna basın.
3. indekslenecek alanı seçin.
4. Options kısmından Unique'i işaretleyin ve OK butonuna basın.
5. kaydedin.

Kolay gelsin.

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbe

Mesaj gönderen selman »

:( mustafa hocam peki unigie index oluşturduktan sonra kayydet
butonuna nasıl bir kodlama yapmam gerekir
kolay gelsin

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7523
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

bunları database desktop'ta yaptıktan sonra herhangi bir kodlamaya gerek yok. İndeksten dolayı ikinci bir aynı kayıda müsade edilmez.

Kolay gelsin.

Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

dbedit

Mesaj gönderen selman »

Mustafa hocam bu ddediğiniz şekilde index yaptığım zaman dbgridde
silinen kayıtlar databasede görüldügü için bir daha o kayıtları göremiyorum!! kolay gelsin

Cevapla