Frage

Als Neuling von FoxPro (aber als altes Hand bei Clipper) bin ich ein bisschen gerecht, um herauszufinden, wie man ein Array aus der folgenden Olepublic-Klasse zurückgibt. bearbeiten: Ich habe den Code Belw geändert, um die Bemerkungen von @Stuart unten zu berücksichtigen.

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

Angesichts des folgenden Bits VBScript kann ich die Datei gut öffnen. Was ich anscheinend nicht tun kann, ist, etwas Nützlicheres als eine Fehlermeldung zurückzubekommen.

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

Dies ist die Fehlermeldung:

C: temp foo.vbs (3, 1) Sloop.db Sloop.db: .getRecord P: Testing Sloop Sloop.prg -Fehler In Zeile 41 Syntaxfehler. 200

Zeile 41, wie sich herausstellt, ist

      RETURN @THIS.ada

Das ist wirklich seltsam, denn das ist die Syntax, die Microsoft vorschlägt. Irgendwelche Hinweise?

War es hilfreich?

Lösung

Versuchen Sie 'return @ada', aber VFP -Arrays haben trotz anderer Sprachen noch nie gut mit anderen Sprachen gespielt Versuche, sie dazu zu bringen.

Andere Tipps

(5 Jahre spät, aber vielleicht immer noch nützlich für jemanden da draußen ...)

Eine bessere Option wäre, dass Ihr VFP -Code stattdessen ein Sammelobjekt erstellt, dann das Array analysiert und alle Elemente zur Sammlung hinzufügt (mit der Methode .add ()). Dann können Sie das Sammelobjekt an VB zurückgeben, was dann gerne damit spielt.

Ihr überarbeiteter Code funktioniert für mich in VFP9SP2 - ich musste als EXE erstellen, aber es gelang es, von VBScript auf Daten zuzugreifen.

Dies war mein VBScript -Code:

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))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top