1

Konu: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

herkese selam
arkadaşlar vfp8 kullanıyorum  carikart dosyam var ckod ve cad
sipariş dosyam var sipariş te ckod var satınalma dosyam var ondada ckod var siparis te müşteri ünvanı, satınalmada satıcı ünvanı lazım her ikiside carikart dosyasında
şu anda ben cari kart dosyasını again alias la farklı alias da açıyorum(satcari)

select siparis.sipno,siparis.ckod as cmuskod,carikart.cad,satmas.cfisno,;
satmas.ckod as csatkod,satcari.cad;
from siparis ;
inner join carikart on siparis.ckod=carikart.ckod;
inner join satmas on siparis.csipno=satmas.csipno;
inner join satcari on satmas.ckod=satcari.ckod;
into ..... vs

aynı dosyayı again alias la farklı aliaslı açıp inner joinle bağlamak dışında  başka yolu varmı?

2

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

Visual Fox Pro
Select * From malzeme1 t1 Where sira= ;

    (Select Max(sira) From malzeme1 t2 Where t1.firmakod1==t2.firmakod1) Into Cursor bshmalzeme2


belki böyle bir mantık işine yarar.

Ben again alias  yerine

Visual Fox Pro
sele * from carikart into cursor carikat1


şeklinde yapıyorum

Bilmediğin Neyse Yanıldığındır.

3 Son düzenleyen, cetinbasoz (27.11.2007 12:46:05)

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

Erdal,
Yanlis anlamadiysam SQL icinde ayni dosyayi birden fazla kez kullanmak icin farkli aliaslarla aciyorsun, oyle mi? Eger dogru anladiysam:

-Ayni dosyayi SQL de N kere kullanabilir ve hepsine farkli "gecici" aliaslar verebilirsin (gecici cunku sadece SQL calisirken kullaniliyor).
Basit bir ornek:

Visual Fox Pro
Create cursor test (Tarih d,Giris i,cikis i)

FOR ix=1 TO 10
  INSERT INTO test VALUES (DATE()-m.ix, 1000,500)
endfor
 
Select gt.Tarih,gt.giris,gt.cikis,;
sum(Nvl(ct.giris-ct.cikis,0))+(gt.giris-gt.cikis) as kalan ;
from test gt ;
left join test ct on gt.tarih > ct.tarih ;
group by gt.Tarih,gt.Giris,gt.cikis

Tek bir tablo var. Tarih,giris,cikis. Basit olsun diye hergun 1000 giris, 500 cikis var. Gunluk giris, cikis ve kalan lazim. Tabloyu kendisiyle bagliyor ( test gt left join test ct ). Burada ayni tabloya SQL icinde gt ve ct diye gecici aliaslar ataniyor. SQL tabloyu acik degil ise otomatik olarak actigindan oncesinde use, use again vs gerekmiyor (ya da mevcut aliaslari hatirlaman).

Not: Niye gt ve ct diye sorarsan ben genelde yazmasi rahat olsun diye 2-3 harflik aliaslar kullaniyorum (ama 1 degil, gecerli de olsa tehlikeli). gt = girisTablosu, ct = cikisTablosu diye temsil ediyor orada benim icin.

Seninkine uyarlayinca:

Visual Fox Pro
select siparis.sipno,siparis.ckod as cmuskod,carikart.cad,satmas.cfisno,;

satmas.ckod as csatkod,satcari.cad;
from siparis ;
inner join carikart on siparis.ckod=carikart.ckod;
inner join satmas on siparis.csipno=satmas.csipno;
inner join carikart satcari on satmas.ckod=satcari.ckod;
into .....

SatCari, use again filan olmadan SQL icinde carikarti, SatCari olarak kullaniyor.

4 Son düzenleyen, erdalyalcin (27.11.2007 22:09:49)

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

tşk ederim. evet lazım olan tam buydu sağolun

bu arada 1 harflik alias ın tehlikesi ne hocam?

5

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

Foxpro 2.x'te sadece 10 workarea vardi ve privated datasession gibi seyler yoktu (yani herhangi bir anda en fazla 10 dosya acilabiliyordu) . Bu alanlar numara yani sira (select 1, 2...10) A...J harfleri ile de tanimlaniyordu. Hala gecerli.

Visual Fox Pro
close data all

use customer in 0
use employee in 0
select A && select 1 ya da select customer ile ayni
? ALIAS(), DBF()
select B && select 2 ya da select employee ile ayni
? ALIAS(), DBF()
 
select * from orders a inner join orditems b on a.order_id = b.order_id

Problemi gostermek pek kolay degil. Burada dogru olarak a ve b orders ile orditems tablolarina baglaniyor. VFP9'da problem giderilmis gibi. VFP7'de filan hatirladigim bazen sonuc yanlis geliyordu. Bir sure neden diye ugrasip durduktan sonra o sirada daha onceki SQL sonuclarini kullandigini farkediyordum (onlarda da a, b vs kullanilmis). Tek harflik aliaslar tehlikeli su anda bir ornek bulamasam da:)

6 Son düzenleyen, metin (28.11.2007 16:19:31)

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

cetinbasoz yazdı:

Foxpro 2.x'te sadece 10 workarea vardi ve privated datasession gibi seyler yoktu ...


foxpro da 225'e kadar alias var. foxbase senin söylediğin. malesef halla kullandığım için ben unutamadım... sad

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

7

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

Haklisin nedense Foxbase kullandigimi unutuyorum:) A..J kismi ondan kalma.
Foxbase kullanmis olmasaydim herhalde bugun VFP kullaniyor olmazdim:) Bana o ilk gosterdi digerlerinden nasil daha hizli olundugunu.

8

Re: vfp8 select e aynı dosyayı ikinci kez nasıl kullanırım?

cetinbasoz yazdı:

Haklisin nedense Foxbase kullandigimi unutuyorum:) A..J kismi ondan kalma.
Foxbase kullanmis olmasaydim herhalde bugun VFP kullaniyor olmazdim:) Bana o ilk gosterdi digerlerinden nasil daha hizli olundugunu.


clipperci arkadaşlar görünce şok olmuştu foxbase'nin hızını. banane clipper .EXE yapıyosa demiştim. hem yazılım geliştirme süreci çok daha kısaydı hem de data hızı. 256k ramlı makinelerde bile süper hızlıydı. 300kb yer kaplayan bir program. yani bakıyorum bugün benim yazdığım programlara megabaytlarca yer kaplıyor. gerçekten çok iyiydi... clipper büyük datalarda sapıtıyordu. ama benim müşterim 15 terminalde 500.000 sözleşme takibi yapıyordu foxbase ile...

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