1

FoxPro の初心者 (しかし Clipper のベテラン) として、次の OLEPUBLIC クラスから配列を返す方法を理解するのに少し途方に暮れています。編集:以下の@Stuartによる発言を考慮して、以下のコードを変更しました。

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 p:\testing\sloop\sloop.prg 41 行目のエラー 構文エラーです。200

結局のところ、41行目は

      RETURN @THIS.ada

これはマイクロソフトが提案する構文であるため、非常に奇妙です。手がかりはありますか?

4

3 に答える 3

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))
于 2009-02-03T20:02:25.520 に答える