Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: spirix am 11.01.07 - 12:31:34

Titel: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 12:31:34
Hi Forum,

ich rufe in NotesScript eine Funktion auf:
sFirstDay$ = GetFirstDayOfMonth(sCurrentMonth$, Cint(sCurrentYear$))

getFirstDayOfMonth ist folgendermassen vereinbart:
Function GetFirstDayOfMonth(psMonth As String, piYear As Integer) As String

Wenn ich nun die Funktion aufrufe erhalte ich die Fehlermeldung:
"Type mismatch on external name: GETFIRSTDAYOFMONTH"

Wenn ich es so mache gehts lustigerweise, ich wäre aber schicker wenn ich das Jahr als Integer übergeben kann:
sFirstDay$ = GetFirstDayOfMonth(sCurrentMonth$, sCurrentYear$)

Function GetFirstDayOfMonth(psMonth As String, psYear As String) As String


Kann mir bitte jemand erklären warum der 1. Lösungsversuch nicht funktioniert? Danke!

Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: Axel am 11.01.07 - 12:36:13
Wie sieht denn der Code der Funktion aus? Ohne den lässt sich schwer was sagen.


Axel
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 12:42:07
Die Funktion ist erstmal nur ein Gerüst um zu schauen obs funktioniert,
die Parameter werden noch nicht ausgewertet.

Code
Function GetFirstDayOfMonth(psMonth As String, piYear As Integer) As String
' Berechnet den Namen des ersten Tages im Monat
' Erfordert den Monat psMonth und das Jahr piYear als Parameter
'
	Dim sTemp As String
	
	sTemp$ = "Montag"
	
	GetFirstDayOfMonth$ = sTemp$
End Function
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: dirk_2909 am 11.01.07 - 12:47:40
Hallo

Wie sind die Variablen deklariert:

sCurrentMonth$ und  Cint(sCurrentYear$)  ??


Habe die Meldung öfters bekommen, wenn die Variablen nicht expliziet deklariert wurden!

ein

Dim sCurrentMonth as String, sCurrentYear as String   klappt dann auch nicht.
Nur:

Dim sCurrentMonth as String
Dim sCurrentYear as String


Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: m3 am 11.01.07 - 12:52:00
Ich würde in sCurrentYear$ auch was rein schreiben. Wenn der String leer ist, schmeisst CInt einen Fehler ""Type mismatch" ;)

Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 12:58:58
Hi Dirk, Hi m3,

ich fasse mich mal kurz, deklariert sind die Variablen richtig und in sCurrentYear$ steht auch was drin ;)

Code
Sub Click(Source As Button)
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim sCurrentMonth As String
	Dim sCurrentYear As String
	Dim sMessageBoxSelectString As String
	Dim sFirstDay As String

	Set uidoc = workspace.CurrentDocument	
	
	sCurrentMonth$ = uidoc.FieldGetText("DiaMonat")
	sCurrentYear$ = uidoc.FieldGetText("Jahr")
	sMessageBoxSelectString$ = "Gewählten Monat füllen? " + sCurrentMonth$ + " " + sCurrentYear$  
	
	sFirstDay$ = getFirstDayOfMonth(sCurrentMonth$, Cint(sCurrentYear$))
	Messagebox sFirstDay$ 'TEST
	
	If Messagebox(sMessageBoxSelectString$, 36, "Monat erstellen") = 6 Then
		Messagebox ("Monat wird gefüllt") 'TEST
	Else
		Messagebox  ("Abbruch") 'TEST
	End If
	
	
End Sub

Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: Axel am 11.01.07 - 13:06:48
Ich habe deinen Code auf die Schnelle mal getestet.

Wenn ich die beiden Variablen so fülle

sCurrentMonth$ = "Januar"
sCurrentYear$ = "2007"

dann funktionierts.

Was hat denn dein Jahr-Feld für einen Typ?


Axel
 
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: m3 am 11.01.07 - 13:08:05
Ich hab den Code jetzt mal so laufen lassen (mit einem Test-Dokument mit den Feldern).Klappt wunderbar.

IMHO hat es was mit den Feldeigenschaften bzw. deren Inhalt.
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 13:10:01
Hm, das Jahr-Feld ist bei mir vom Typ Text. Das Monatsfeld ist eine Dialogliste.
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: m3 am 11.01.07 - 13:12:04
Mach mal
Code
sMessageBoxSelectString$ = "Gewählten Monat füllen? |" & sCurrentMonth$ & "| |" & sCurrentYear$ &  "| |" & CStr( CInt(sCurrentYear$ ) ) & "|"
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 13:19:24
Da kommt dann raus
"Gewählten Monat füllen? |Januar| |2007| |2007|"

Wieso geht das da und bei der Parameterübergabe nicht?
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: Axel am 11.01.07 - 13:23:58
Mal so ein Schuss in Blaue.

Beende mal Notes und lösche die cache.ndk und probiers dann nochmal.


Und noch etwas, was du mal probieren kannst ist, den gesamten Scriptcode mal neu zu kompilieren.

Im Designer Werkzeuge - Lotusscript vollständig neu komplilieren.


Axel
Titel: Re: Type mismatch - versteh ich nicht...
Beitrag von: spirix am 11.01.07 - 13:34:01
Hilft leider nix... ich mach das jetzt anders, ich übergeb das Jahr als String und wandel es innerhalb der Funktion um - eigentlich nicht mein Stil aber wenns nicht anders geht gehts halt nicht anders :-/

Danke für die Hilfe an alle