| selman | 09.12.2003 - 18:54:31 |
mesajını vermesini istiyorum. yalnız bunu table dan kontrol etmek isti yorum nasıl yapabilirim. bana yardımcı olursanız sevinirim. | |
| mussimsek | 10.12.2003 - 00:18:20 |
| Merhaba,
o alana primary veya tekil (unique) index yapman lazım. Kolay gelsin. | |
| fahrettin | 11.12.2003 - 11:09:17 |
| Unique index secili iken Findkey ile bu kontrolu yaptirabilirsiniz..
Mutlaka table nesnesini kullanmak zorunda degilseniz de bu kod farkli bir kontrol icin fikir verecektir. 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; | |
| selman | 11.12.2003 - 17:37:07 |
unigie index nasıl oluşturulur.ve find key medodunu nasıl kullanabilirim. Kolay gelsin. | |
| mussimsek | 11.12.2003 - 17:56:38 |
| hangi veritabanını kullanıyorsun?
Kolay gelsin. | |
| mpolat | 11.12.2003 - 18:02:28 |
| 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 | |
| selman | 12.12.2003 - 10:47:15 |
| :( mustafa hocam dbase for windows kullanıyorum.datalarımı buna göre
hazırladım.ne yapmam gerekiyor. İyi çaloşmalar | |
| fahrettin | 12.12.2003 - 10:59:35 |
| 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
if Findkey([Deger1,Deger2]) then
..... tek alan var ise ve de primary key numeric ise ... if Findkey([StrToInt(Edit1.Text)]) then
..... | |
| selman | 12.12.2003 - 15:23:46 |
| :( 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. | |
| fahrettin | 12.12.2003 - 15:38:17 |
| 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.... | |
| selman | 12.12.2003 - 17:17:16 |
| herşeye ragmen gönderdiğiniz bilgi için teşekkür ederim | |
| mussimsek | 12.12.2003 - 17:23:06 |
| 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. | |
| selman | 12.12.2003 - 17:36:38 |
| :( mustafa hocam peki unigie index oluşturduktan sonra kayydet
butonuna nasıl bir kodlama yapmam gerekir kolay gelsin | |
| mussimsek | 12.12.2003 - 18:49:59 |
| bunları database desktop'ta yaptıktan sonra herhangi bir kodlamaya gerek yok. İndeksten dolayı ikinci bir aynı kayıda müsade edilmez.
Kolay gelsin. | |
| selman | 12.12.2003 - 20:54:30 |
| 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 | |
| mussimsek | 13.12.2003 - 14:14:53 |
| Hocam sorununun ne olduğunu tam anlayamadığım kanaati oluştu ben de. Benim anladığım kadarıyla sen bir kayıttan 2 adet girilmesini istemiyorsun, öyle mi? Her sorduğun soruda konu sanki farklıymış gibi gelişiyor.
Uzun uzun, hatta örneklerle yazsana sorununu. Kolay gelsin. | |
| aydin038 | 13.12.2003 - 15:14:36 |
| selam sana basit bir ornek kod hazirladim..
index tanımlamana gerek yok. bir incele sana bir fikir olabilir. edi1t->no dbedit2->ad dbedit3->soy iki adet buton ------------------------------- procedure TForm1.Edit1Exit(Sender: TObject); begin IF EDIT1.Text='' THEN BEGIN SHOWMESSAGE('NUMARA YAZ'); END ELSE if TABLE1.locate('NO',edit1.text,[]) then //no files i edit1 den kontrol ediyor. begin showmessage('Bu Kod Numaralı Başka Bir Kayıt Var'); end else BEGIN DBEDIT2.ReadOnly:=FALSE; //ad isimli fielse bağli DBEDIT3.ReadOnly:=FALSE;// soy isimli fielsebağli KAYDETBTN.Enabled:=TRUE; IPTALBTN.Enabled:=TRUE; TABLE1.Insert; end; END; procedure TForm1.KAYDETBTNClick(Sender: TObject); begin table1no.AsString:=edit1.Text; table1.Post; KAYDETBTN.Enabled:=FALSE; IPTALBTN.Enabled:=FALSE; DBEDIT2.ReadOnly:=TRUE; DBEDIT3.ReadOnly:=TRUE; end; procedure TForm1.IPTALBTNClick(Sender: TObject); begin TABLE1.Cancel; KAYDETBTN.Enabled:=FALSE; IPTALBTN.Enabled:=FALSE; DBEDIT2.ReadOnly:=TRUE; DBEDIT3.ReadOnly:=TRUE; end; kolay gelsin.. | |
| selman | 13.12.2003 - 15:33:07 |
Sizleri belki gönderidğim sorulardan bıktırıyorsam hakkınızı helal edin.. Mustafa hocam benim sizlere bir sorum daha olacak. form1'deki herhangi bir dbedit'ten başka bir form daki dbeditteki sayıyı toplayıp bunları başka bir formdaki dbgride atmak istiyorum. bunu nasıl yapabilirim. yardımlarınız için şimdiden teşekkürler... | |
| rsimsek | 13.12.2003 - 22:57:00 |
| Belki buna Mustafa da cevap verecek ama sanırım sen yanlış yoldasın. Yani bilgiyi DBEdit ve DBGrid yerine tabloda aramalısın. Esas alacağın yer tablodur. Eğer tablolarını vs. de DM adını vereceğin bir DataModulde toplamışsan herhangi bir problem olmadan DM.tblTablo1.FieldByName('Alan_Adi').Value ile alana ve bilgiye ulaşabilirsin... | |
| fahrettin | 14.12.2003 - 11:13:19 |
| Sorularınızla bizleri bıktırmanız söz konusu değil. Yeter ki bir faydamız olabilsin, ilerleme kaydedebilelim.
Recep abinin de dediği gibi temel bazı yanlışlıklar var gibime geliyor benim de... Problemi ya da yapmak istediğinizi en baştan anlatırsanız belki daha farklı bir yol onerisi olabilir... Zira yanlış bir yola girdikten sonra cikan sorunlari tek tek cozmek bile ise yaramayabilir.... Kolay gelsin.... :) | |
| selman | 14.12.2003 - 12:21:25 |
| :( hocam hepinizin ilgisinden dolayı teşekkür ederim.
Şimdi ben datalarımı database desktoptan dbase for windowsta oluşturdum. Ve index de koda göre mainteidet seçeneğini seçerek oluşturdum. Şimdi form üzerinde mesala kasa tanımını yapacağım bir form oluşturdum. Ve kodu,adı,adres alanlarını labelın caption özelliğine yazdım.3 adette dbedit nesnesi yerleştirdim. bir adet ttable ve bir adet te datasource nesnesi yerleştirdim.ve bunlara gerekli atamaları yaptım.Benim formumda bir kaydet buttonu bir de iptal buttonu var. Şimdi ben koda girdiğim bir sayıyı ikinci defada girdiğimde dbgrid nesnesi kabul ediyor.Fakat ben ikinci bir kaydı girdiğimde 1 nolu kasa kodu adında bir kayıt bulunmakta deyip tekrar dbedit1'in üzerine konumlanmasını istiyorum. ben locate fonksiyonunu kullandım fakat her zaman kayıt olsa da olmasa da bu kayıt var mesajını alıyorum. Ve bunun içinden bir türlü çıkamadım yardım ederseniz sevinirim... | |
| mussimsek | 14.12.2003 - 14:53:41 |
| Merhaba,
hocam bu iş için 2 yol var. 1. Unique indeks kullanmak. Bu durumda kullanıcı bir kayıttan tekrar giremez. Hangi alandan 2 tane olmasını istemiyorsan, onu unique indeksle indeksle. Nasıl yapılacağını anlatmıştım : http://www.delphiturkiye.com/forum/viewtopic.php?p=4911#4911 Mesela ben öğrenci kaydediyorsam, iki tane aynı öğrenci numarasına sahip kayıt olmasını istemem. Bu durumda öğrenci numarası indeksim unique olmalı. 2. yolda kod içersinden bunu kontrol etmen. BeforeInsert'te Locate ile aratırsın, o kayıttan varsa işlemi Abort komutu ile kesersin. Yine kod yazan arkadaşlarımız oldu. Bu arada bizi herhangi bir şekilde rahatsız etmiyorsunuz. Forum kurallarına uyan her üyeye yardımcı olmak bizim için zevk :) Sorularımızın nedeni, problemi daha net anlamak. Kolay gelsin. | |
| selman | 15.12.2003 - 12:33:12 |
| Mustafa hocam gönderdiğiniz bilgi için teşşekkür ederim.
sorunumu hallettim sağolun. Hocam bir sorum daha olacak sizlere... Mustafa hocam yapmış olduğum proğrama bir şifre koymak istiyorum.Bunu nasıll yapabilirim Yalnız bu şifrede kullanıcı adı ve şifreyi girdikten sonra onu table kaydet cek ve programı kapatıp açtığı zaman önceki kullanıcı adı ve şifre yi girecek bunu nasıl yapabilirim. Saygılar... | |
| mussimsek | 15.12.2003 - 12:36:21 |
| Merhaba,
bu sorunuzu yeni bir başlık olarak programlama forumuna atarsanız daha iyi olur. Kolay gelsin. | |