1

Konu: Açık olan Cursor ların ve Table ların isimleri Data Session...

Elimde Dinamik olarak olarak oluşan n tane Cursor var. Bir döngü içerisinde açık olan cursorların ve tableların listesini nasıl alabilirim.

Elde ettiğim sonuçları Select Union ile birleştirmek istiyorum. Manuel yapmak eziyet.

Üstad ve ustaların yardımlarını bekliyorum.

Şimdiden çok teşekkürler.

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ü

2 Son düzenleyen, altun (31.03.2008 12:06:33)

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

ugurlu2001 yazdı:

Elimde Dinamik olarak olarak oluşan n tane Cursor var. Bir döngü içerisinde açık olan cursorların ve tableların listesini nasıl alabilirim.

Elde ettiğim sonuçları Select Union ile birleştirmek istiyorum. Manuel yapmak eziyet.

Üstad ve ustaların yardımlarını bekliyorum.

Şimdiden çok teşekkürler.


Visual Fox Pro
ii = 0

n  =10
cSqlStr = ""
 
Create Cursor curTest(id I)
 
For ii=1 to n
    Insert into curTest (id) VALUES (ii)
EndFor
 
 
*** curTest 10 adet alt cursora parçalanıyor.
 
For ii=1 to n
    cCurParca = "curParca"+Transform(ii)
    Select * from curTest where id=ii into cursor (cCurParca)
EndFor
 
*** 10 Adet parça cursor birleştirilerek curSonuc adında curTestle aynı içeriğe sahip yeni bir cursor oluşuyor.
 
For ii=1 to n
    cSqlStr = cSqlStr+" Select * from curParca"+Transform(ii)+iif(ii=n, " into cursor curSonuc", " union all ")
EndFor
 
&cSqlStr

3 Son düzenleyen, ugurlu2001 (31.03.2008 12:19:28)

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

Altun, çok teşekkür ederim ama aradığım bu diildi. Bana açık olan cursorlerin listesi gerekiyor.

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ü

4 Son düzenleyen, altun (31.03.2008 12:44:08)

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

ugurlu2001 yazdı:

Altun, çok teşekkür ederim ama aradığım bu diildi. Bana açık olan cursorlerin listesi gerekiyor.


****
cursorları union le birleştirmeyi düşünüyorsan sen oluşturuyor olmalısın. Bu durumda yukarıdaki kod örneği işine yarıyor olması gerekiyor. Istisnasi bir durum olarak, muhtemel cursor listesi içinde bazı cursorlar açık olmayabilir. Bu durumda son bölüme used() kontrolü eklemen yeterli olacaktır.

Aşağıdaki örnekte olması gereken maksimum cursor sayısı 10 olarak belirtildi. Ama birleştirmesi gereken cursorların sadece 9 adeti açık.

Ayrıca cursorların senin kontrolün dışında oluşturuluyor olması ve bu nedenle birleştirmen gereken cursorların isimlerini önceden bilemiyor olma ihtimali çok mantıklı gelmiyor.


Visual Fox Pro
ii = 0

n  =10
cSqlStr = ""
 
Create Cursor curTest(id I)
 
For ii=1 to n
    Insert into curTest (id) VALUES (ii)
EndFor
 
*** curTest 10 ay alt cursoraq parçalanıyor.
 
For ii=1 to n
    cCurParca = "curParca"+Transform(ii)
    Select * from curTest where id=ii into cursor (cCurParca)
EndFor
 
Use in curParca5  && test için 10 cursordan bir tanesi kapatılıyor
 
*** 9 Adet parça cursor birleştirilerek curSonuc adında 9 kayıtlık yeni bir cursor oluşuyor.
 
For ii=1 to n
    cCurParca = "curParca"+Transform(ii)
 
    If Used(cCurParca)
        cSqlStr = cSqlStr+iif(empty(cSqlStr), "", " union all ")+" Select * from curParca"+Transform(ii)
    EndIf
 
    cSqlStr = cSqlStr+iif(ii=n, " into cursor curSonuc", "")
 
EndFor
 
&cSqlStr

5

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

append from dbf ("cursor name")
ile de cursor leri birleştirmen mümkün.

buna ait kodu yazmak sana ve ustalara kalmış artık.

6

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

Merhaba,
Açık cursor ve tableların listesini bu şekilde alabilirsin belki.
Dosyanın içinden işine yarayan kısımları ayıklaman gerekiyor.
Daha basit yolu varsa ben bilmiyorum.

Visual Fox Pro
set safe off

display status to file tliste noconsole
modify file tliste

7

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

i=1
do whil .t.
selec (i)
?alias()
if empt(alias())
exit
endif
i=i+1
enddo

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

8

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

for ix = 1 to aUsed(aAliasInUse)
? aAliasInUse[m.ix]
endfor

Bu sadece kullanimdaki alias adlarını veriyor ama zaten istediğin o diye daha fazlasını yazmıyorum. Gerekirse sessionlar için aSessons(), belli bir session ve/veys belli bir tablonun aliasları için  2,3. parametreleri var. Kullanımdaki alias'ın kaynak tipi için CursorGetProp("SourceType", cAlias) var... var da var:)

9

Re: Açık olan Cursor ların ve Table ların isimleri Data Session...

Üstad çok teşekkür ederim. Tam olarak istediğim buydu. smile

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ü