1

Konu: index key

arkadaşlar içinde kayıtlar bulunan hasta.dbf var bu dosya no,adi,soyadı bölümlerinde indexli.
istediğim no indexini primary yapmak ve relasyon oluşturmak.

Bu işi nasıl yaparım çünkü normal yollardan dosya doluyken  yapılmasına izin vermiyor.

2

Re: index key

Normal yollar dosya doluyken de yapilmasina izin veriyor:) Belki de atladigin "primary key" ihtiyacini saglamamis olmandir. Primary key (ve candidate) yapmak icin herhangi bir satirin duplikasyonu olamaz. Ornegin, customer tablosunda cust_id PK. "ALFKI" sadece bir tane var.
Baska bir deyisle "primary key", recno() gibi bir satiri baslibasina belirleyebilecek bir sey.
Not: Birden fazla alanin birlesimiyle PK olabilir. SQL serverda oldugu gibi VFP'de izin veriyor. Ancak ikisinde de tavsiye edilmiyor.
Silinen kayitlar hala indexin parcasi. Sakin indexi filtreleyip, silinmis kaydin PKsini tekrar kullanmak gibi "akillilik" yapmaya kalkma. Ya:
-pack et,
-ya da once oradaki key degerini baska birseyle degistir (mesela integer key icin -key)
-ya da recall ve yeni kayit icin kullan

3

Re: index key

cetinbasoz yazdı:

Normal yollar dosya doluyken de yapilmasina izin veriyor:) Belki de atladigin "primary key" ihtiyacini saglamamis olmandir. Primary key (ve candidate) yapmak icin herhangi bir satirin duplikasyonu olamaz. Ornegin, customer tablosunda cust_id PK. "ALFKI" sadece bir tane var.
Baska bir deyisle "primary key", recno() gibi bir satiri baslibasina belirleyebilecek bir sey.
Not: Birden fazla alanin birlesimiyle PK olabilir. SQL serverda oldugu gibi VFP'de izin veriyor. Ancak ikisinde de tavsiye edilmiyor.
Silinen kayitlar hala indexin parcasi. Sakin indexi filtreleyip, silinmis kaydin PKsini tekrar kullanmak gibi "akillilik" yapmaya kalkma. Ya:
-pack et,
-ya da once oradaki key degerini baska birseyle degistir (mesela integer key icin -key)
-ya da recall ve yeni kayit icin kullan


hocam no ya göre indexlemekten vaz geçtim çünkü yapamadım ve 1500 kaydı aramak zor geldi bende a isminde yeni bir field oluşturdum ve buraya sırlı numaralar verdirdim. ve bu alanı primary yapmaya kalktım.
bana aynı cevabı verdi smile

Uniquiness of index a is violated

4

Re: index key

Oncelikle "a" isminde bir alan yaratmak ilerdeki sorunlara davetiye. Ozellikle primary key alanlarin icin bir isimlendirme stilin olsun. Mesela benim stilim tabloadiID:

Person tablosunun PK fieldi: personID

O mesaji aldigina gore sirali numara verememissin. Soyle dene (dosya adinin tabloX oldugunu varsayarsak):

set deleted off && onemli yoksa update bunalri pas gecer ve uniquness ... violated
alter table tabloX add column tabloXID i
update tabloX set tabloXID = recno()
alter table tabloX add primary key tabloXID tag tabloXID

5

Re: index key

Burada sadece ornek olarak PK yarattik. Sonra bu PK degerinin kurulmasi isi var. Baska bir dert. Birinci prensip (tartismali aslinda) PK degerleri son kullanici tarafindan gorulmeyecek, onun dokunamadigi degerler. Yani "uretilen" ve esi olmayan degerler. Integer yaptiginda VFP'de autoinc alanlari kullanabilirsin, ya da eski (solution.app ta kotu bir ornegi var) NextID() stored procedure yakalsimini kullanabilirsin.
Benim tercihim bu alanin c(38) olmasi ve GUID ile doldurulmasi. VFPye yeni baslayanlar ile ilgili yazida detaylari vardi. Avantajlari, dezavantajlarini (ki onlar tartismali ve genellikel teorik ozellikle SQL serverda) bastiriyor. Integerlarin problemleri genelde gorulmuyor ya da gorulme istenmiyor. Sys(2015) de  cozum degil bu arada. Eger kullanmaya kalkarsan modifiye versiyonunu kullan. Integerdan o da iyi sonucta.

6

Re: index key

Bu arada 1500 kaydi aramak VFPde zor geldi dersen olmaz:)

set deleted off
select no from tablo having cnt(*) > 1 group by no

7

Re: index key

He he sen benim gibi klavyeden teker teker tara bak bakalım zormuymuş değilmiymiş smile
çok sağol hocam iyiki varsın
sayende sorunum haloldu

8

Re: index key

çetin bey yukarda PK için verdiğiniz recno() dan PK yaratma tehlikeli değil mi?
pack kullanıldığında aradan silinen kayıtlar ve sonrasında yeniden kayıt noları 1 den itibaren ardışık sayıda geleceğinden bu iş aynı değere sahip birden fazla PK ya neden olmaz mı? (yok eğer sadece örnek olsun diye verdiyseniz dikkate almayınız.)

9

Re: index key

Ercan,
Evet sadece ornekti. Onu izleyen mesaji oku. Integer PKya karsiyim zaten:)

10

Re: index key

yalnız problem olmaz zaten. 2. kez aynı key i vermeye kalktığında foxpro hata verir...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com