Question

En tant que débutant chez FoxPro (mais un habitué de Clipper), je suis un peu perdue pour savoir comment retourner un tableau de la classe OLEPUBLIC suivante. edit : J'ai modifié le code ci-dessous pour prendre en compte les remarques de @Stuart ci-dessous.

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

Etant donné le bit suivant de VBScript, je peux ouvrir le fichier correctement. Ce que je n'arrive pas à faire, c'est de récupérer quelque chose de plus utile qu'un message d'erreur.

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

Voici le message d'erreur:

  

c: \ temp \ foo.vbs (3, 1) sloop.db sloop.db: .getrecord p: \ testing \ sloop \ sloop.prg Erreur à la ligne 41 Erreur de syntaxe. 200

La ligne 41, comme il se trouve, est

      RETURN @THIS.ada

ce qui est vraiment étrange car c'est la syntaxe suggérée par Microsoft. Des indices?

Était-ce utile?

La solution

Essayez "return @ada", mais les baies VFP n'ont jamais bien fonctionné avec d'autres langues malgré tente de les obliger à le faire .

Autres conseils

(5 ans de retard, mais peut-être toujours utile à quelqu'un là-bas ...)

Une meilleure option serait que votre code VFP crée un objet Collection à la place, puis analyse le tableau et ajoute tous les éléments à la collection (à l'aide de la méthode .Add ()). Vous pouvez ensuite renvoyer l’objet de collection à VB, qui est ensuite content de le jouer.

Votre code révisé fonctionne pour moi dans VFP9SP2 - Je devais créer un fichier EXE mais je réussissais à accéder aux données de VBSCript.

C’était mon code 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))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top