Function + eigener Type + Global

  • Wo liegt mein Fehler? Mit einem Array hat das Ganze funktioniert.
    Ich brauche aber einen eigenen Datentyp, weil ich einen Redim auf die erste Dimension des Arrays machen will (der Redim ist noch nicht eingearbeitet)


    Ich lese im Postopen und im Querysave die Feldnamen und Feldinhalte in zwei Arrays ein.
    Die beiden Arrays werden dann im Querysave verglichen und bei Unterschieden eine Art Historie geschrieben.
    Da der Vorgang der Felder/Inhalte einlesen zweimal das selbe ist, habe ich diesen in eine Function ausgelagert.



    - unter Globals - Declarations:

    Code
    Type ary	feldname As String	feldinhalt As VariantEnd TypeDim hist_po(1 To 15) As aryDim hist_qs(1 To 15) As ary


    - im Postopen:

    Code
    Call FeldArray(hist_po)


    - im Qerysave:

    Code
    Call FeldArray(hist_qs)........If hist_po(zz).feldinhalt = hist_qs(zz).feldinhalt Then	   'Array aus Postopen u. Array aus Querysave vergleichen


    [/code]


    - und als Functions:

    Code
    Function FeldArray(arr As ary) As Variant
    .......
    Forall item In doc.items
    arr(z).feldname =  item.name
    arr(z).feldinhalt =  item.values(0)
    ........


    LG Lizzy

  • Hi,


    Mal so ganz bescheiden angefragt.


    Wo kommt es denn jetzt zu welchem Fehler?
    Nur mit der Aussage, wo liegt mein Fehler und den Code-Schnipseln gestaltet sich eine Hilfe dann doch etwas schwierig.



    Andreas

  • Hi,


    sorry


    ich kann die Maske nicht mal abspeichern - der Fehler ist FeldArray: 19: Not a sub or function name: ARR



    Es muss wohl an der Übergabe des eigenen Datentyps an die Function liegen.
    - mit einem Array funktioniert es
    - wenn ich den Code aus der Function direkt in Postopen und Querysave setze, dann funktioniert es auch mit dem eigenen Datentyp


    Natürlich kann ich das auch ohne Function machen, kein Problem, aber interessieren würde es mich schon, wo der Fehler liegt.


    Danke
    Lizzy

  • Wo genau hast du die einzelnen Code Bauteile hinterlegt ?


    Alle in einer Maske oder zum Teil in Script Libraries,... ?


    Der Fehler sieht danach aus, als ob der Code für die Funktion auf den Type keinen Zugriff hat, z.B. weil der Type in der Maske definiert ist, die Funktion aber in einer Script Library


    Generell würde ich dir empfehlen beides zusammen in eine Script Library zu schreiben und diese an den benötigten Stellen einzubinden

  • die Code Teile sind alle in der Maske (in den oben angegebenen Bereichen)



    das mit der Script Library werd ich mal im Hinterkopf behalten, damit hab ich bisher aber noch nicht gearbeitet


    aber wenn alles in der Maske ist, sollte der Zugriff doch eigentlich funktionieren?



    LG Lizzy