2009-02-02 50 views
1

作爲FoxPro的新手(但是在Clipper的老手),我有點茫然想出如何從以下OLEPUBLIC類返回數組。 編輯:我修改了代碼belw以考慮下面@Stuart所做的評論。如何從Visual FoxPro 9 OLEPUBLIC類中返回數組?

DEFINE CLASS db AS CUSTOM OLEPUBLIC 

    DIMENSION ada(1) && public scope for later return 

    FUNCTION opendb(cpName) 
     SET MULTILOCKS ON 
     USE (cpName) EXCLUSIVE NOUPDATE 
     = CURSORSETPROP("Buffering",5) 
     RETURN ALIAS() 
    ENDFUNC 

    && etc 

    FUNCTION getrecord(sAlias, nRecno) 
     SELECT (sAlias) 
     GOTO (nRecno) 
     fc = FCOUNT() 
     DIMENSION this.ada(fc) 
     FOR i = 1 TO fc 
      STORE CURVAL(FIELD(i)) to THIS.ada(i) 
     ENDFOR 
     RETURN @THIS.ada 
    ENDFUNC 
ENDDEFINE 

鑑於以下VBScript的位,我可以打開文件。我似乎無法做的是找回比錯誤消息更有用的東西。

set sp = createobject("sloop.db") 
al = sp.opendb("p:\testing\sloop\patient.dbf") 
wscript.echo sp.getrecord(al,1) 

這是錯誤消息:

C:\ TEMP \ foo.vbs(3,1)sloop.db sloop.db:.getrecord號碼:\測試\桅\桅。 prg第41行的錯誤語法錯誤。 200

41號線,因爲它的出現,是

 RETURN @THIS.ada 

這實在是怪異的因爲這是微軟提出的語法。任何線索?

回答

0

您的修改後的代碼適用於VFP9SP2中的我 - 我必須構建爲EXE,但設法訪問VBSCript中的數據。

這是我的VBScript代碼:

set sp = createobject("stack1.db") ' Different project name 
al = sp.opendb("C:\WORK\VFP\DATABASES\DATA\DATA.DBF") 
arrData = sp.getrecord(al,1) 
msgbox(arrData(1)) 
+0

我剛剛意識到我還在使用VFP6。這是我的舊機器有V9。尷尬++ – bugmagnet 2009-02-05 01:13:11

2

(5旬,但也許還是有用的人在那裏...)

一個更好的辦法是讓你的VFP代碼創建Collection對象,然後解析數組並將所有元素添加到集合中(使用.Add()方法)。然後,您可以將收集對象傳遞迴VB,然後該VB很樂意使用它。

+0

這個問題已經回答了。 – PKlumpp 2014-07-10 09:04:04