1

Konu: en hızlı yol hangisi

Büyük bi dosyada benim için önemli olan

tarih1
gün

adlı 2 fields var.

bunları en hızlı olarak
1- Tarih1=boş (tarih girilmemiş) olanları
2- gün sırasına göre (küçükten büyüye)

en hızlı olarak nasıl sıralayabilirim.

** Bu kayıtları başka bir dosyaya aktarmak daha iyi bir çözüm olabilir.   
Çünkü binlerce kayıt arasında kalacak kayıtlar 1.000 kadar kayıt olacaktır.

Teşekkürler.

2

Re: en hızlı yol hangisi

Visual Fox Pro
select * from myTable ;

where empty(tarih1) ;
order by gun ascendig ;
into cursor MyCursor nofilter readwrite && into table my..

3

Re: en hızlı yol hangisi

Tarih fieldinde index olmali. Oldugunu varsayarsak:
1)

Visual Fox Pro
select * from myTable where Tarih = {} && empty(tarih) olmaz, cunku optimize edilmez

Tarih alanlarinda bos yerine null kullanmak daha akillica. O zaman:

Visual Fox Pro
select * from myTable where Tarih is null

2)

Visual Fox Pro
select * from myTable order by Tarih

4 Son düzenleyen, Efecan (12.10.2010 23:02:22)

Re: en hızlı yol hangisi

Tekrar okuyunca iki field varmis. Tam anlamadim ikisini bir arada mi istiyorsun:

Visual Fox Pro
select * from myTable where Tarih = {} order by gun


Not: Gene farketmeden oglanin hesabindan girmisim - Cetin

5 Son düzenleyen, onders (12.10.2010 23:08:19)

Re: en hızlı yol hangisi

aslında

1- Tarih1=boş (tarih girilmemiş) olanları yeni bir dosyaya atıp

2- gün sırasına göre (küçükten büyüye) sıralamak daha mantıklı geldi bana.

dediğim gibi asıl dosya çok büyük ve gün  önceden dosyada kayıtlı değil. (Henüz belli bir değer almamış)
Belli koşullara göre gün değeri sonradan oluşturuluyor. Onun için önce yeni dosyaya atıp az olan
kayıtta gün değerini oluştuırmak daha mantıklı olur.

O zaman en hızlı olarak
Tarih1=boş (tarih girilmemiş) olanları yeni bir dosyaya hangi komutla atabiliriz. (Dosyanın bütün fieldleri ile birlikte)

Teşekkürler

6 Son düzenleyen, ugurlu2001 (13.10.2010 08:47:36)

Re: en hızlı yol hangisi

Çetin üstad 'ın verdiği SQL e sadece order clause eklemen yeterli. Tarih Alanına göre indexin olduğunu varsayıyorum.

Visual Fox Pro
Select * from myTable where Tarih = {}  Order By Gun ASC && empty(tarih) olmaz, cunku optimize edilmez

Sorgunu nerede kullancaksın? Sanki bir yerlerde mantık hatası var gibi? Tarih bilgisi boş ama yinede gün bilgisine göre işlem yapıyorsun!

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ü

7

Re: en hızlı yol hangisi

dosyada başka tarih bilgileri var. o tarih bilgileri sorgulanıp "gun" sayısı belirlenecek .
"tarih1" in boş olması sadece o kayıt için işlem yapılmadığını bize gösteriyor.
ilk önce "tarih1 " bo olan kayıtlar ayıklanıp daha sonra diğer tarih bilgileri sorgulanıp
"gun" e bir numerik değer atanacak sonra küçükten büyüge sıralanacak.

COPY FILE AA.DBF BB.DBF ile mi başlamalı yoksa daha hızlı yapabilecek komutlar varmı ?
sonrasında
BB.DBF için
DELE FOR tarih1<>CTOD("  /  /    ")
şeklinde yazıp indexlemek doğru bir yolmu ?

8

Re: en hızlı yol hangisi

Onder,
Biz mi anlatamiyoruz sen mi anlamiyorsun.

Visual Fox Pro
select * from myTable where tarih1 = {} into cursor crsTemp nofilter

Su gun hesabini gizlemesen o da bu SQL'in parcasi olurdu.

9 Son düzenleyen, cetinbasoz (13.10.2010 12:38:15)

Re: en hızlı yol hangisi

Bu arada:

Visual Fox Pro
DELE FOR tarih1<>CTOD("  /  /    ")

Ne karin agrisi? CTOD() nereden cikti. Daha nasil soylemeli. {}.

Tabii bu sekilde silme ile, hizlandirmak yerine yavaslatirsin o da cabasi.

10 Son düzenleyen, onders (13.10.2010 12:49:47)

Re: en hızlı yol hangisi

Bunlar 12-13 sene önce DOS versiyonunda yazdığım kodlar. Hesaplama koşulları
değişmediği ve düzgün çalıştığı için değiştirme gereği duymadım.

Sizden kayıtlar aşırı derecede büyüdüğü için kodları daha hızlı
çalıştırabilecek programlama teknikleri önerileri almak istiyorum.

Gizlediğim birşey yok...

"gun" aşagıdaki koşula göre değer alıyor.

     IF tar2={}
          REPLA gun WITH (100-(DATE()-tar3))
     ELSE
      IF tar4<>{}
          REPLA gun WITH (100-(DATE()-tar3))+150
      ELSE
           REPLA gun WITH (300-(DATE()-tar4))
      ENDIF
     ENDIF

Teşekkürler

11

Re: en hızlı yol hangisi

Gizlemek derken kastettigim buydu, gunun nasil hesaplandigi:


Visual Fox Pro
Select ;

  IIF(tar2 =  {},(100-(Date()-tar3)), ;
  IIF(tar4 <> {},(250-(Date()-tar3)), ;
  (300-(Date()-tar4)))) As gun, * ;
  FROM myTable ;
  WHERE tarih1 = {} ;
  ORDER By 1 ;
  INTO Cursor crsSonuc ;
  nofilter

12

Re: en hızlı yol hangisi

Teşekkürler

Çetin,

VFP Enterprise edition 6.0 u upgrade ile 9.0 a yüksetme şansımız yokmu ?

bazı kodlar çalışmıyor.

13

Re: en hızlı yol hangisi

Bilmem ben MSDN ile aldim. O bir yol olabilir. Yine de foxite'a sorayim. 350$ civari upgrade fiyati olmasi lazim ama nasil alinir? Belki Amerika'da birine aldirip postayla ya da download ile olabilir.

14

Re: en hızlı yol hangisi

http://www.amazon.com/Microsoft-Visual- … amp;sr=1-2

adresinde upgrade ücreti 300 dolar gözüküyor

15

Re: en hızlı yol hangisi

Evet indirimli. Onder, kararini ver en iyisi sen. Almak istersen Amerika'da birine aldirtilir (sen yapamazsan ben yaparim) ve normal posta ile gondertiriz (ya da gelen biriyle).

16

Re: en hızlı yol hangisi

Bendeki VFP 6.0 Enterprise Edition lisanslı. Lisanslı devam etmek istiyorum. Bu sürüm üzerine Upgrade yapabiliyormuyuz ?

17

Re: en hızlı yol hangisi

yaparsın bence

18

Re: en hızlı yol hangisi

Upgrade yapabilirsin, sen nasil alacagina karar ver. Bu da Foxite'da Stefan'dan cevap:


The German Amazon site is currently listing only one offer (1 piece, via 3rd party reseller, "EDU" license):
http://www.amazon.de/s/ref=nb_sb_noss?_ … =0&y=0

Amazon's "sponsored links" on the same page points to one other resellers in Germany, and I can try to buy one and send it to you if you like, but they seem to be relatively expensive, for instance 709,- Euro at
http://www.softcomet.de/index.php?cat=c … f24b68e971

Whereas MS itself still seems to offer for 609,- US$:
http://store.microsoft.com/microsoft/Vi … t/3B86BB9B
Would that one probably not work for you (and me in Germany), too?

19

Re: en hızlı yol hangisi

Aşağıdaki koda aslında tam olmadı.
Çünkü tar3 başka bir .DBF dosyasından alınan bir değer.
İşlem yapılan dosya içinde bulunan xx değerine diğer dosya indexlenmiş durumda.
2. dosyadan SEEK komutu ile kayıt bulunup tar3 değeri alınıyor.

Buna göre tek sorgulamada işlemi bitirebilirmiyiz ?

Select ;
  IIF(tar2 =  {},(100-(Date()-tar3)), ;
  IIF(tar4 <> {},(250-(Date()-tar3)), ;
  (300-(Date()-tar4)))) As gun, * ;
  FROM myTable ;
  WHERE tarih1 = {} ;
  ORDER By 1 ;
  INTO Cursor crsSonuc ;
  nofilter

20

Re: en hızlı yol hangisi

Bitirebilirsin.

21

Re: en hızlı yol hangisi

kod nasıl değişiyor ?

22

Re: en hızlı yol hangisi

çetin,
microsoft upgrade yapamassın diyor. ?

23

Re: en hızlı yol hangisi

Ne demek nasil degisiyor. Data sende. Biraz data gonder bakayim:

http://www.fox4um.com/topic/748/foruma- … gondermek/

Microsoft nerede diyor upgrade yapamazsin diye?

24

Re: en hızlı yol hangisi

Microsoft elimdeki visual studio 6.0 enterprise edition için upgrade hakkı olmadığını bildiriyor.

25

Re: en hızlı yol hangisi

Nerede?