1 Son düzenleyen, mrduyar (07.02.2008 15:20:45)

Konu: SQLMORERESULTS()

selamlar;

"Invalid call issued while executing a SQLMORERESULTS() sequence."
SQLDISCONNECT( m.Lnhandle) satırında bu hatayı veriyor.

Visual Fox Pro
Do c:\wagner\araclar.prg

*Set Classlib To c:\wagner\Class\makesql Additive
Local Lcpartno,Lcfil,LcSonRevNo,Lnhandle1,Lnhandle
m.Lnhandle=wkabaglan()
Lcpartno=Alltrim(malzeme_kartcursor.wka_partno)
Lcfil="wka_partno='"+Lcpartno+"'"
If Used('gkontbas')
    Use In 'gkontbas'
Endif
Lcx=Createobject('makesql.makecursor',m.Lnhandle,,Lcfil,.T.,'gkontbas','gkontbas','guid')
If Reccount("gkontbas")=0
    Insert Into gkontbas (wka_partno,aciklama,revno) ;
        Values (malzeme_kartcursor.wka_partno,malzeme_kartcursor.turkce,0)
    If Empty(gkontbas.talimatlar)
        Replace gkontbas.talimatlar With "Frekansı NAP olarak tanımlanmış olan ölçüler için I044 Numune Alma Talimatı kullanılacaktır."
    Endif
Endif
SQLDISCONNECT( m.Lnhandle)
m.Lnhandle1=wkabaglan()
Calculate Max(gkontbas.revno) To LcSonRevNo
Lcfil=Lcfil+" and srevno="+Alltrim(Str(LcSonRevNo))
If Used('gkontsatir')
    Use In 'gkontsatir'
Endif
Lcx=Createobject('makesql.makecursor',m.Lnhandle1,,Lcfil,.T.,'gkontsatir','gkontsatir','guid')
SQLDISCONNECT( m.Lnhandle1)
Select 'GKONTBAS'
Go Bott
Select gkontsatir
Go Top
Thisform.Refresh
Thisform.grdGkontsatir.RecordSource='gkontsatir'
Thisform.grdGkontsatir.Refresh


Ekleme

SQLDISCONNECT( m.Handle )  aşağıdaki kod dada aynı hatayı bu satırda veriyor.

Visual Fox Pro
LOCAL sCon

sCon= "driver=sql native client;server=sql;trusted_connection=yes;database=wka2000"
* Adim 1: Baglan
handle = SQLSTRINGCONNECT(m.sCon)
? m.handle
 
* Adim 2: SQL
lcSQL = "select * from gkontbas"
? SQLEXEC(m.handle, m.lcSQL, "SonucCursor")
 
* Adim 3: Baglantiyi kes
SQLDISCONNECT( m.Handle )
Bilmediğin Neyse Yanıldığındır.

2

Re: SQLMORERESULTS()

Lcx=Createobject('makesql.makecursor',m.Lnhandle,,Lcfil,.T.,'gkontbas','gkontbas','guid')
ile benim bilmediğim bir library kullanmışsın.

ama yine de şunu söyleyebilirim:

ya sqlmoreresult ları bitir ya da:

SQLCANCEL( )

yap. ondan sonra disconnect olabilirsin...

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

3 Son düzenleyen, mrduyar (08.02.2008 10:24:17)

Re: SQLMORERESULTS()

metin yazdı:

ya sqlmoreresult ları bitir ya da:
SQLCANCEL( )
yap. ondan sonra disconnect olabilirsin...


selamlar;
sqlmoreresult  ne olduğunu bilsem. zaten birşeyler yapacağım.

Son durum şu: Bu hatayı VFP 8.0 Sp2 de veriyor VFP 9.0 sp1 de vermiyor.
VFP 8.0 Sp2  de bu şekilde sorun çözülüyor. ama bu çekilmezki!

Visual Fox Pro
LOCAL sCon

sCon= "driver=sql native client;server=sql;trusted_connection=yes;database=wka2000"
handle = SQLSTRINGCONNECT(m.sCon)
lcSQL = "select * from gkontbas"
SQLEXEC(m.handle, m.lcSQL,"TEST1")
SQLCANCEL(m.handle )
lcSQL = "select * from gkontsatir"
SQLEXEC(m.handle, m.lcSQL,"TEST2")
SQLCANCEL(m.handle )
SQLDISCONNECT( m.Handle )
SQLCANCEL(m.handle )
Bilmediğin Neyse Yanıldığındır.

4

Re: SQLMORERESULTS()

sanırım fetch yapıyorsun. sqlexec ten sonra go bottom koy. sqlcancel gerekmez. parametrelerle de ayarlanıyor ama go bottom koy gitsin.

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

5

Re: SQLMORERESULTS()

8 ile 9 arasinda farklar var. Suna bir bak belki onunla ilgilidir derdin:
http://www.foxite.com/archives/vfp9-sql … 153801.htm

6

Re: SQLMORERESULTS()

cetin abi,
Tam olarak ne yapmam gerektiğini anlayamadım.
Bu işlemi VFP 8.0 da çalıştırmak zorundayım.

Visual Fox Pro
* That may be considered as a bug or is a result of supporting the new parameter for SQLExec and SQLMoreResults I don't know. Can't you work it around like this?

 
TEXT TO lcSQL NOSHOW PRETEXT 7 TEXTMERGE
       DECLARE @test1 DATETIME
       DECLARE @test2 DATETIME
 
       SELECT @test1 = GETDATE()
       SELECT @test2 = GETDATE()
 
       SELECT * FROM Items
       SELECT * FROM cust
ENDTEXT
SQLSetprop(lnhnd,"BatchMode",.F.)
lnOK = SQLExec(m.lnhnd,m.lcSQL,'curItems',aCountInfo)
Do While Empty(aCountInfo)
  lnOK = SQLMoreResults(m.lnhnd,'curItems',aCountInfo)
Enddo
lnOK = SQLMoreResults(lnhnd,'curCust')
* PS: Next time if you need to number lines would you please do it on right side with && or within  T-SQL blocks with --. Thanks.
 
* Cetin Basoz
Bilmediğin Neyse Yanıldığındır.

7

Re: SQLMORERESULTS()

Ramazan,
Isi kisa tutmak icin en iyisi en bastaki kodunda, SQLSetProp( 0, 'Asynchronous', .F.) ve SQLSetProp(0,'BatchMode',.T.) yap (yapmadan once SQLGetProp() ile onlarin kurulu degerlerini kontrol et).