Autor Thema: Finde den Fehler (Type mismatch) nicht  (Gelesen 3806 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Finde den Fehler (Type mismatch) nicht
« am: 16.02.11 - 08:23:06 »
Hallo,

auch auf die Gefahr hin, mich endlos zu blamieren...

Testweise möchte ich 4 Variablen anzeigen lassen. Alle sind als String dimensioniert:
Dim argvdat,argbdat,calvdat,calbdat As String

2 werden durch den Query-String übergeben:

Code
arg = s.DocumentContext.Query_String(0)
arg = LCase(Mid$(arg, p1 + 1))
argarray = Evaluate({@Explode("} & arg & {"; "&")})
argvdat = argarray(4)
argbdat = argarray(5)

2 kommen aus einem Kalender-Dokument:

Code
calvdat = doc.GetItemValue("StartDate")(0)
calbdat = doc.GetItemValue("EndDate")(0)


Wenn ich die 4 Variablen in einer Zeile ausgeben möchte:
Code
Print "avon="+argvdat+" abis="+argbdat+"<br/>cvon="+calvdat+" cbis="+calbdat
erhalte ich den Fehler "Type Mismatch..."

Mache ich allerdings 2 Zeilen draus:
Code
Print "avon="+argvdat+" abis="+argbdat+"<br/>"
Print "cvon="+calvdat+" cbis="+calbdat
dann wird kein Fehler erzeugt und die Werte korrekt angezeigt.

Warum ist das so?

Problem ist, dass ich die Variablen vergleichen möchte (If argvdat = calvdat then), erzeugt zwar keinen Fehler, wird aber auch nie Wahr.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #1 am: 16.02.11 - 08:26:45 »
Hallo,

Und Du bist Dir sicher, dass alle Deine definierten Variablen vom Typ String sind?


Andreas

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #2 am: 16.02.11 - 08:27:05 »
Was passiert denn wenn Du im Print aus dem + ein & machst?

Und das natürlich auch. da ja nur Strings in der Statuszeile ausgegeben werden können.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #3 am: 16.02.11 - 08:33:30 »
Dim argvdat,argbdat,calvdat,calbdat As String

dimensioniert höchstens calbdat als String, alle anderen sind Variant.

calvdat und calbdat sind mit Sicherheit keine Strings, da StartDate und EndDate im Kalender wohl Datumsfelder sind. Die musst Du wohl erst in String umwandeln (Cstr oder Format sind da hilfreich).

Strings verkettet man besser mit & anstatt mit +, da + eine mathematische Addition werden kann.


Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #4 am: 16.02.11 - 08:34:52 »
Peter hat es gesehen.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #5 am: 16.02.11 - 08:49:40 »
Dim argvdat,argbdat,calvdat,calbdat As String

dimensioniert höchstens calbdat als String, alle anderen sind Variant.

Vielen Dank Peter, das war tatsächlich der Fehler (gibt es sonst eine Möglichkeit viele Variablen gleichen Typs gemeinsam zu dimensionieren?)

calvdat und calbdat sind mit Sicherheit keine Strings, da StartDate und EndDate im Kalender wohl Datumsfelder sind. Die musst Du wohl erst in String umwandeln (Cstr oder Format sind da hilfreich).
Durch den Zugriff doc.GetItemValue("StartDate")(0) hab ich wohl schon String zurückbekommen, jedenfalls funktioniert nun die Ausgabe und auch der Vergleich im If-Statement

Strings verkettet man besser mit & anstatt mit +, da + eine mathematische Addition werden kann.

Ich werde mich bemühen, mich umzustellen (bei der Reihe an Programmiersprachen kommt man aber schonmal durcheinander  ;) )
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #6 am: 16.02.11 - 09:03:58 »
Zitat
gibt es sonst eine Möglichkeit viele Variablen gleichen Typs gemeinsam zu dimensionieren?
Ja.

Dim Variable1 As String, Variable2 As String, Variable3 As String


Andreas

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #7 am: 16.02.11 - 09:20:56 »
Wow, da hat sich Lotusscript ja nicht lumpen lassen  ;) ganze 3 Zeichen gespart. (Eigentlich nur 2, denn ich muss das Komma ja wieder abziehen)
Naja, man kann ja nicht alles haben, trotzdem danke Andreas.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #8 am: 16.02.11 - 09:22:18 »
doc.GetItemValue("StartDate")(0) gibt nicht zwingend einen String zurück, sondern das erste Element des Items in dem Typ des Items (Datum , String, Zahl u.s.w.).

Möglich, dass durch die Zuordnung direkt in einen String eine Umwandlung erfolgt (habe das noch nicht probiert). Für besser halte ich eine saubere Typumwandlung, wie z.B.

calvdat = Cstr (doc.GetItemValue("StartDate")(0))

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #9 am: 16.02.11 - 09:32:41 »
Strings verkettet man besser mit & anstatt mit +, da + eine mathematische Addition werden kann.

Ich werde mich bemühen, mich umzustellen (bei der Reihe an Programmiersprachen kommt man aber schonmal durcheinander  ;) )

Da braucht man garnicht so weit zu gehen, schon in Formelsprache ist es genau entgegengesetzt, da ist & dann die logische Verkettung ...

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Finde den Fehler (Type mismatch) nicht
« Antwort #10 am: 16.02.11 - 15:53:23 »
Zitat
Da braucht man garnicht so weit zu gehen, schon in Formelsprache ist es genau entgegengesetzt, da ist & dann die logische Verkettung ...

Genau! Und diese sollte man nicht in LotusScript einsetzen - hatte ich letztens: Ständiger Wechsel zwischen Formelsprache und Script und dann versehentlich ein '&' als logische Verkettung in Script eingesetzt mit dem Ergebnis, dass die Routine vorne und hinten nicht funktionierte und es dummerweise nicht einmal zu einer Fehlermeldung zur Laufzeit kam. Hatte 'ne Weile gedauert, bis es gefunden war ;)

Gruß
Marco
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz