Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Joghurt am 11.10.10 - 14:51:37

Titel: Type mismatch & Debugger springt nicht an?
Beitrag von: Joghurt am 11.10.10 - 14:51:37
Hallo zusammen,

ich habe folgende Konstellation: Es gibt ein (Haupt-)Dokument mit einem embedded View. In dem embedded View gibts eine Funktion für neue Dokumente, die in dem embedded View dann angezeigt werden sollen und Daten übernehmen aus dem Hauptdokument. Beim Speichern eines neuen Dokumentes sollen einige Werte abgefragt werden und im QuerySave soll ein bisschen was berechnet und entsprechend einige Felder gefüllt werden.

Soweit, so gut, es funktioniert auch. Teilweise.

Ich kann ein neues Dokument erstellen. Die Werte werden übernommen. Ich kann meine Felder wie gewünscht anpassen. Ich kann beim neuen Dokument auf "Speichern" klicken.... und was dann passiert, kann ich nicht nachvollziehen.
Es kommt die Fehlermeldung: "Type mismatch in method CheckOperand: Unknown found, unknown expected", der Debugger springt nicht an, obwohl er eingeschaltet ist(!) und das neue Dokument wird gespeichert und in dem View angezeigt.

Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument  
    Dim shipped1, shipped2, totalshipped As Integer
    Dim quan, parent As Variant
    Set db = ses.CurrentDatabase
    Set view = db.GetView("(DelQuan)")
    quan = Source.FieldGetText("DelQuantity")
    
    If quan <> "" Then
        Set doc = view.GetDocumentByKey(source.FieldGetText("Parent"))
        shipped1 = Cint(doc.GetItemValue("ShippedAmount")(0)) 
        shipped2 = Cint(Source.FieldGetText("DelQuantity"))
        totalshipped = shipped1 + shipped2
'Ist "+" hier überhaupt der richtige Operator zum Addieren? Ich hatte es auch schon mit einem festen Wert versucht, hatte nichts geändert.
        If totalshipped <= doc.GetItemValue("ShippedAmount") Then
            Call doc.ReplaceItemValue("ShippedAmount",totalshipped)
            Call doc.ReplaceItemValue("State","Scheduled")
            Call doc.Save(True,False)
            Continue = True
        Else
            Messagebox "You cannot ship more than you have! Your form has not been saved.",16,"Error"
            Continue = False
        End If
    End If
End Sub

Ich würd ja gerne debuggen und schauen, wo mein Fehler steckt. Aber ohne Debugger komm ich nicht wirklich weiter.... Neustarten, Cache löschen, etc. schon versucht, das hat nix geändert. Was kann ich noch versuchen?
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Glombi am 11.10.10 - 14:55:52
Als erstes mal sauber deklarieren!

Durch

Dim shipped1, shipped2, totalshipped As Integer

wird shipped1 und shipped2 as VARIANT deklariert! Also so:

Dim shipped1 as integer, shipped2 as integer, totalshipped As Integer


Die Zeile
If totalshipped <= doc.GetItemValue("ShippedAmount")

muss wie folgt heissen:
If totalshipped <= doc.GetItemValue("ShippedAmount")(0)

Andreas
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Joghurt am 11.10.10 - 15:25:44
Okay, ich wusste nicht, dass Notes dann Variants daraus macht. *besserung gelob*

Es ändert nur leider nichts an der Tatsache, dass der Debugger nicht anspringt.
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Glombi am 11.10.10 - 15:40:13
Der Fehler tritt in der Methode CheckOperand auf. Den Code hast Du nicht gepostet.

Manchmal springt der Debugger nicht an, u.a. in dem von Dir geschilderten Szenario.
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: umi am 11.10.10 - 16:51:28
Hi

Alternativ hat sich bei mir ein anständiger ErrorHandler bewährt.


Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Axel am 11.10.10 - 17:05:14
Hi

Alternativ hat sich bei mir ein anständiger ErrorHandler bewährt.


Eine vernüftige Fehlerbehandlung bewährt sich immer und ist m. E. das A und O einer guten Programmierung.

Axel
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Glombi am 12.10.10 - 08:44:25
Hi

Alternativ hat sich bei mir ein anständiger ErrorHandler bewährt.


Eine vernüftige Fehlerbehandlung bewährt sich immer und ist m. E. das A und O einer guten Programmierung.

Axel

In wiefern wäre das für diesen Fall hilfreich?
Titel: Re: Type mismatch & Debugger springt nicht an?
Beitrag von: Axel am 12.10.10 - 09:13:49
Du kannst dir mehr Infos zum Fehler anzeigen lassen und kannst so z.B. auch die Zeile ermitteln in der der Fehler aufgetreten ist.
Das kann bei der Fehlersuche hilfreich sein.

Axel