1

Konu: max sorunum

CREATE Cursor sayi (ckod c(10))

INSERT INTO sayi(ckod) VALUES ("6999")
INSERT INTO sayi(ckod) VALUES ("6998")
INSERT INTO sayi(ckod) VALUES ("61000")
INSERT INTO sayi(ckod) VALUES ("61001")

select max(ckod) as sonuc from sayi into cursor enbuyuk

sonuc="6999"

oysa ben "61001" elde etmek istiyorum

2

Re: max sorunum

Visual Fox Pro
select max(VAL(ckod)) as sonuc from sayi into cursor enbuyuk

3

Re: max sorunum

select max(VAL(ckod)) as sonuc from sayi
veya
select max(PADL(ALLT(ckod),10,"0")) as sonuc from sayi

VFP9 SP2

4

Re: max sorunum

teşekkürler

5

Re: max sorunum

karakterde max yaptığı için 6 dan sonra gelen 9 diğerlerinden büyük dolayısıyla hemen 3 karaktere bakıyor oda büyük ve en büyük değer olarak 6999 geliyor val ile sayısala dönüştürürsen sorunu çözersin


select max(VAL(ckod)) as ckod from sayi into cursor sonuc

wink

6

Re: max sorunum

değer derken alfabatik sıradaki yeri için söylemiştim orda karışıklık olmasın

7

Re: max sorunum

Kucuk bir quiz:) Garip bir sirada bekleyen hasta dosyaniz var:

doktorID integer, randevuGunu date, randevuSirasi integer

Bir de normal doktor tablosu: doktorID integer, adi vs

Doktor ile randevular arasinda bir relation kurmak istedigimizi farzedin (yani index ile cozulecek - select ... order by ile isin kolayina kacmak yasak). Bu iliski oyle sekilde olacak ki doktor dosyasinda uzerinde olugumuz doktora ait randevular bir gridde:

En son tarihten geriye ve her tarih icin o gunun randevu sirasinda olacak.

Gerekli index key nasil olmali?

Not: Birden fazla cozumu var.

8 Son düzenleyen, metin (05.03.2010 14:02:03)

Re: max sorunum

ya soruyu yannış anladım ya da cevap çok basit:
index on str(doktorid)+dtos(randevugunu)+str(99999999999999-randevusirasi) tag sira desc

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

9 Son düzenleyen, ugurlu2001 (05.03.2010 14:23:18)

Re: max sorunum

Doktor Dosyasında Index :  DoktorID

Hasta Dosyasında Index  : HastaID

Randevu Dosyasında Index 1 :;
             DTOS(Tarih) + DoktorID + RandevuSirasi + HastaID ( Descending)

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

10 Son düzenleyen, ugurlu2001 (05.03.2010 14:39:56)

Re: max sorunum

Çetin Üstat 'dan Doğru Cevap :

padl(doktorID,10,'0') + dtos( randevuTarihi ) + padl(0x7FFFFFFF - randevuSirasi, 10, '0')

olucakmış.

Bu indexde sonuc "0000000001201003050000000001" gibi bir String olup, Descending olarak sıralanabiliyormuş.

0x7FFFFFFF ifadesi en büyük INT değeri ifade ettiği için; VFP Autoinc bir fieldda çuvallamasın diye kullanılıyor.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

11

Re: max sorunum

Metin,
Dogru anlamissin, cevabi da basit:) Sadece ben bazi seyleri farkli kullanmayi tercih ediyorum:

str(doktorID) yerine padl(doktorID, 10, '0')  - str()'de 10 genisliginde yapiyor ama o ltrim()'e kurban gidebilecek kisim beni rahatsiz ediyor (10 olmasi da kismen 'dokumente edilmemis' sinifina giriyor - baska versiyon cikacak olsa guvenme degisebilir derdim:).

str( 99... - randevuSirasi ) yerine de padl( 0x7FFFFFFF - randevuSirasi, .. ): Sonuc ayni olur da 0x7FFFFFFF ile VFP'nin isleyebilecegi integer sinirini kendim koymus oluyorum (hani olur da gecmiste oldugu gibi 0x7FFFFFFF'den buyuk bir sayi yuzunden basim agrimasin diye).

Bu kadar basit niye sordun dersen, ne bileyim, makineyi yeni acmistim oylesine aklima esti.

12

Re: max sorunum

str'yi indekslerde bu işe başladığımdan beri kullanıyorum. ama dikkatsizlik yaparsan sakat tabii. neden ltrim yapmadım direk indekste? çünkü bir işe yaramıyormuş. helpte okumuştum. padl fonksiyonunun daha yavaş çalışacağını düşünüyorum ben. ya 0x7FFF olayına ne diyeyim, fazla mükemmeliyetçisin, bişi olmaz... olursa da müşteri döner... smile

bu kadar basit niye sordun demem. çünkü her seviyeden arkadaş var burada. illa ki birilerine faydalı olmuştur. herşeyi bizim gibi kendi kendilerine öğrenmelerine gerek yok. ben (ve sen) başladığımda internet yoktu. kör gözüm öğreniyordum. elimde sadece foxpro'yu satın aldığımda gönderdikleri foxtalk dergisinin tek sayısı ve foxpro help vardı... ama gerçekten foxpro'nun help'ini öyle güzel yapmışlar ki. çok iyi öğretiyor. başka hiçbir dilde yöntem öğreten helpe rastlamadım. client-server'i bile yöntemleriyle anlatıyor.

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