Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: ewald am 11.06.05 - 15:27:58

Titel: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 15:27:58
Hallo zusammen,

ich frage ein numerisches Feld in einer Form ab, ob auch wirklich keine Buchstaben drinstehen mit folgendem Code (steht in einem Button):

If Not Isnumeric(doc.WSBCApprCost(0)) Then
    Messagebox  "Nur Zahlen....", mb_ok, Title$      
    Continue=False
    Exit Sub
End If

Bei der Ausführung krieg ich aber den Fehler "Variant does not contain a container"

Was hab ich da falsch gemacht  ???

Thx
Gruss Ewald
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 15:34:49
Wie hast du doc instantiiert ? Schick' mal bitte den gesamten Code.

Bernhard
Titel: Re: Script Fehlermeldung
Beitrag von: Marinero Atlántico am 11.06.05 - 15:38:42
Ausserdem kannst du im Debugger sehen, ob die Objekte instantiiert sind. Sie haben dann ein grünes Dreieck. Wenn nicht, ist das Objekt (doc) nicht instantiiert.
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 15:52:42
@Bernhard,

hier der gesamte Code


Sub Click(Source As Button)
   
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim session As New notessession
   Dim db As NotesDatabase   
   Set db = session.CurrentDatabase
   Set uidoc = uiws.currentdocument
   Set doc = uiws.currentdocument.document
   
   '//-------- Text modules----------------------
   Title$ = "Document control"
   MsgAlreadySent$ = "Already sent..."
   MsgSendTo$ = "Field [Send to] must contain at least one person."
   MsgSaveBeforeSubmit$ = "Request must be saved prior submit."
   
   subject_text$ = "Decision of Deviation Request for customer:  "
   txt$="Sending of decision successfully initiated."
   txt2$="Replicate immediately."   
      
   If doc.DocStatus(0) = "2" Then
      Messagebox  MsgAlreadySent$, mb_ok, Title$      
      Continue = False
      Exit Sub
   End If
   
   '######Das geht nich#####################
   If Not Isnumeric(doc.WSBCApprCost) Then
      Messagebox "Numeric characters only.", MB_OK + MB_ICONSTOP, Title$
      Continue = False
      Exit Sub      
   End If         '######################################
   
   If doc.SendTo(0) = "" Then
      Messagebox  MsgSendTo$, mb_ok, Title$
      Continue = False
      Exit Sub
   End If
   
   
   '//--- Write current Notes user
   Dim benutzer As Variant, zeit As Variant
   Const formel = "@V3UserName"   
   benutzer = Evaluate(formel)
   Const formel2 = "@text(@Now)"
   zeit = Evaluate(formel2)
   
   '--- Write name and time stamp into fields
   Call uidoc.FieldSetText("WSBCDecSender", benutzer(0))
   Call uidoc.FieldSetText("WSBCDecDate", zeit(0))
   
   Dim dStatus As String
   dStatus = "2"
   Call uidoc.FieldSetText("DocStatus", dStatus)   
   
   Call uidoc.Save()
   
   '//--- Submit the document
   Dim st_originator As String
   Dim doc_send As notesdocument   
   Dim richStyle As NotesRichTextStyle
   Set richStyle = session.CreateRichTextStyle
   Set db = session.currentdatabase
   Set doc_send = New notesdocument(db)
   
   Dim st_Text As String, send2 As String, copy2 As String, subject As String
   
   send2 = doc.SendTo(0)
   copy2 = doc.CopyTo(0)
   subject = subject_text$
   
   '// Set Form Type,  Subject, SendTo address, CopyTo address
   Call doc_send.replaceitemvalue("form", "Memo")
   Call doc_send.replaceitemvalue("Subject", subject & doc.CustomerName(0))
   Call doc_send.replaceitemvalue("SendTo", send2)
   Call doc_send.replaceitemvalue("CopyTo", copy2)
   
   '// Build Richtext for Message Body
   Set RTItem = New NotesRichTextItem(doc_send, "body")
   Call RTItem.addnewline(2)
   Call RTItem.addnewline(2)
   Call RTItem.AppendText("Please follow this doclink to the request in the DQMS database.  ")
   Call RTItem.AppendDocLink(doc, "DQMS request document")
   
   '//-------- Send Document -----
   Call doc_send.send(False)
   
   '//-------- Final popup messages -----------------------
   Messagebox txt$,mb_ok,"Notice"
   Messagebox txt2$,mb_ok,"Important notice"
   '//----------------------------------------------------------------
   
   Call uidoc.Close
   
   Continue = True   ' No Error
   docIsSaved = True
   
End Sub

Gruss Ewald
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 15:56:26
Ooops - hier steht jetzt aber was anderes und falsches:
If Not Isnumeric(doc.WSBCApprCost)

Isnumeric kann nur auf skalare Werte angewendet werden und nicht auf Arrays, wie Du das hier versuchst. Setze - wie bereits ausgangs von Dir gepostet - wieder den Index dazu:
If Not Isnumeric(doc.WSBCApprCost (0))

Bernhard
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 16:01:34
hab den index wieder gesetzt. gleicher fehler kommt aber wieder  ???

ewald
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 16:17:57
Bist Du sicher, dass der Fehler überhaupt in dieser Zeile passiert ? Syntaktisch wäre diese okay (selbst, wenn Dein Feldname nicht stimmen würde, Hauptsache ist, das doc instantiiert ist, aber wenn das nicht wäre, würde es bereits vorher knallen).

Bernhard
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 16:21:06
wenn genau diese code fragment kommentiert ist läuft alles problemlos

ewald
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 16:41:42
Und was sagt der Debugger über die Fehlerzeile und den Inhalt von Objekten und Variablen ?
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 17:21:25
sieht im debugger soweit ok aus. nur fällter halt ganau an der stelle

If Not Isnumeric(doc.WSBCApprCost(0)) Then

raus   :-:
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 17:31:51
Welchen Feldtyp hat eigentlich WSBCApprCost ?

Ich habe natürlich vor dem Posten die Situation nachgestellt (soweit möglich). Ich kann da nach wie vor nichts "schlimmes" erkennen ...

Bernhard
Titel: Re: Script Fehlermeldung
Beitrag von: koehlerbv am 11.06.05 - 18:33:15
Ich habe eben mal spassenshalber Deinen "ganzen" Code in einen Button geworfen. Der Compiler meldet zwölf Fehler - hast Du Option Declare deaktiviert ?
Aber auch wenn ich die Deklarationsfehler berichtige - der Code funktioniert. Irgendwie scheinen noch wichtige Informationen von Dir zu fehlen ...

Bernhard
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 11.06.05 - 20:01:04
Poste mir doch mal den berichtigten Code zurück. Mal sehn, was dann bei mir passiert

Ewald
Titel: Re: Script Fehlermeldung
Beitrag von: TMC am 11.06.05 - 20:16:17
Poste mir doch mal den berichtigten Code zurück. Mal sehn, was dann bei mir passiert

Ähm, ich denke das hat so keinen Sinn. Du solltest auch mal Bernhards Frage beantworten, um welchen Feldtyp es sich da handelt.

Würde es vielmehr eingrenzen. Schalte erstmal Option Declare ein.

Statt
Code
If Not Isnumeric(doc.WSBCApprCost(0)) Then

Schreibst Du z.B.:
Code
If doc Is Nothing Then Error 1001, "FEHLER: Notesdokument ist Nothing"
Dim vTempVal as Variant
vTempVal = doc.GetItemValue("WSBCApprCost")(0)
Msgbox "<" & vTempVal & ">", 64, "Das ist jetzt der Inhalt von <WSBCApprCost>"
If Not Isnumeric(vTempVal) Then

Wenn da jetzt ein Fehler auftritt, sag Bescheid, in welcher Zeile.
Titel: Re: Script Fehlermeldung
Beitrag von: Marinero Atlántico am 11.06.05 - 22:36:20
und um das ganze ein bischen einfacher zu gestalten:

als Erste Zeile unter sub clickButton oder was da steht:
Code
on Error goto Fehler
und vor der letzten Zeile (end sub)
Code
finish: 
exit sub

Fehler: 
msgbox "Fehler in Clickerei:" & Error$ & "(" & Cstr(Err) & ") in Zeile" & Cstr(Erl)
goto finish
Titel: Re: Script Fehlermeldung
Beitrag von: ewald am 13.06.05 - 13:27:02
habs jetzt auf diese weise gelöst:


If uidoc.FieldGetText("WSBCApprCost") <> "" Then
   If Isarray(doc.GetFirstItem("WSBCApprCost").Values) = False Then
      Messagebox "Non numeric characters are not allowed.",mb_ok, Title$         
   Call uidoc.gotofield("WSBCApprCost")
   Continue = False
   Exit Sub
   End If
End If

und jetzt funktionierts  :D

danke nochmal...


Titel: Re: Script Fehlermeldung
Beitrag von: Axel am 13.06.05 - 14:50:06
Hi,

... und wo und wie prüfst du ob nur nummerische Werte eingegeben wurden?


Axel