Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: DaWutz am 26.08.04 - 19:16:39

Titel: Type mismatch? warum??
Beitrag von: DaWutz am 26.08.04 - 19:16:39
Hallo zusammen,

warum zeigt mir der folgende Code immer den Finger? In dem Dokument aus dem die Daten kommen sollen steht in dem Feld "active". Mit dem Debugger komme ich immer auf die Zeile if orgStatus ...

Kann ich denn einen Variant nicht einfach so vergleichen? Was mache ich falsch?

Code
....

Dim orgName As Variant
   Dim orgAbbreviaton As Variant
   Dim orgStatus As Variant
   Dim counter As Single
   Dim kw As Variant
   counter = 0   ' einfacher Zähler!
   kw = Inputbox("Which Calendar week you want to create?")
   
   ' Schleife, die jedes weitere Dokument anspringt
   Do While Not (doc Is Nothing)
      orgName = doc.GetItemValue("org_name")                     ' Werte aus Mutter-Dok auslesen
      orgAbbreviation = doc.GetItemValue("org_abkuerzung")
      orgStatus = doc.GetItemValue("org_status")
      
      If orgStatus = "active" Then   
         Set note = db.CreateDocument                              ' neues Dok erzeugen
         
         Call note.ReplaceItemValue("Form", "check_form")               ' Maske ändern
         Call note.ReplaceItemValue("check_orgName", orgName)         ' Felder mit Werten belegen
         Call note.ReplaceItemValue("check_orgAbbr", orgAbbreviation)
         Call note.ReplaceItemValue("check_calendarWeek", kw)
         Call note.save(True,False)                                    ' speichern des neu angelegten Dok´s
         
         Set doc = view.GetNextDocument(doc)                        ' nächstes Dokument aus der View anspringen
         counter = counter+1   
      End If
      
   Loop
???
Titel: Re:Type mismatch? warum??
Beitrag von: Thomas Schulte am 26.08.04 - 19:28:59
Weil Variants Arrays sind und Arrays spricht man mit ArrayVar(0) an.

Thomas
Titel: Re:Type mismatch? warum??
Beitrag von: DaWutz am 26.08.04 - 19:44:18
War es nicht so, das ein Variant das "wird" was an Daten rein geht? In meinem Fall ein String? Aber daovn mal ganz ab, wenn ich die Varaible mit orgStatus(0) = "active" anspreche, dann knallt mein Notes weg. Und wenn ich die Variable von Anfang an als String wähle, dann wirds auch nix...  ???
Titel: Re:Type mismatch? warum??
Beitrag von: koehlerbv am 26.08.04 - 20:07:25
Variants können Arrays sein, müssen aber keinesfalls !

A-Bär: Übernimmt man direkt ein Item in ein Variant (ausser RTI), dann ist das Ergebnis IMMER ein Array:
variant = NotesDocument.Field

Selbiges macht auch das von DaWutz verwendete NotesDocument.GetItemValue - das Ergebnis ist ausser bei RTIs IMMER ein Array.

HTH,
Bernhard
Titel: Re:Type mismatch? warum??
Beitrag von: TMC am 26.08.04 - 20:09:15
Beim Backend-Zugriff auf ein Item erhält Du immer ein Array - egal welcher Feldtyp das ist.

*Edit*: Da war Bernhard schneller. Und ich vergass die Ausnahme RTI.
Titel: Re:Type mismatch? warum??
Beitrag von: DaWutz am 26.08.04 - 20:17:22
Und Asche auf mein Haupt...

NATÜRLICH funktioniert das wenn ich orgStatus(0) nehme...

...

Nur wenn ich dann bei nicht-eintreten des Falls die Dokumente nicht weiter durchzähle, weil das innerhalb des "wahr"-Blocks ist, dann hängt die Kiste halt, und die Do-Loop-Schliefe rennt bis ins nächste Millenium.

Ok, nu mach ich auch Feierabend...

Danke für die Hilfe/Denkanstösse!
Titel: Re:Type mismatch? warum??
Beitrag von: koehlerbv am 26.08.04 - 20:21:38
... und die Do-Loop-Schliefe rennt bis ins nächste Millenium.
Jo, jo: "In Ewigkeit - Amen !", sprach die Endlosschleife  ;D

Bernhard