Autor Thema: Numberfield mit LS auslesen -> Type Mismatch?  (Gelesen 2917 mal)

Offline SnueK

  • Frischling
  • *
  • Beiträge: 6
Numberfield mit LS auslesen -> Type Mismatch?
« am: 11.03.08 - 17:15:00 »
Hallo zusammen,

ich habe schon wieder ein Problem und konnte mit der Suchfunktion leider keine Lösung finden... deswegen poste ich mal hier.

Ich habe ein Profildokument mit einem Numberfield und möchte dieses per Lotusscript auslesen. Da ich weiss, dass es nur einen Zahlenwert hat, kann ich ja gleich die (0) noch hinten dranhängen und pack es erstmal in Variable number (Variant).

Code
number = profildokument.GetItemValue("numberfield")(0)

Mein Problem ist nun, dass wenn ich eine If-Abfrage mache, ich jedesmal ein "Type Mismatch"-Fehler erhalte.

Ich dachte da an sowas wie
Code
If Cdbl(number) = Cdbl(0) then...

Auf das cdbl() komme ich, weil ich in der Hilfe gelesen habe, dass die Funktion GetItemValue bei einem NumberField ein Array von Doubles zurück gibt (also müsste wegen dem angehängten (0) doch nur ein Zahlenwert als Double vorhanden sein?). Oder habe ich irgendwo falsch gedacht?
Wenn ich so ein Textfield auslese kann ich problemlos CStr() usw. anwenden und deswegen bin ich ein bischen ratlos.

Vielen Dank schonmal vorab!

Fabian
« Letzte Änderung: 11.03.08 - 18:39:51 von SnueK »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #1 am: 11.03.08 - 17:30:39 »
Gibt es zu der If-Abfrage zufällig noch etwas Code?

Bernhard

Offline SnueK

  • Frischling
  • *
  • Beiträge: 6
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #2 am: 11.03.08 - 18:06:03 »
Gibt es zu der If-Abfrage zufällig noch etwas Code?

Bernhard

Sorry, habe vergessen einige Sachen anzugeben. Im Moment habe ich nur diese If-Abfrage und nichts drin stehen, da mir der Fehler mit Type-Mismatch schon sehr früh aufgefallen ist. Im Numberfield habe ich eine 0 stehen. Mir ging es in erster Linie darum, dass ich den Wert aus dem Profildokument ausgelesen bekomme und vernünftig damit arbeiten kann... aber wie es aussieht bekomme ich das noch nicht mal mehr hin  :(

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #3 am: 11.03.08 - 18:21:56 »
Nun, mit derartigen Informationen könne wir nun gar nichts mehr anfangen, geschweige denn helfen (was wir ja gerne würden). Aber der jetzige Status scheint ja zu sein: "Geht nicht. Wo, ist unbekannt."

Bernhard

Offline SnueK

  • Frischling
  • *
  • Beiträge: 6
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #4 am: 11.03.08 - 18:39:22 »
Ok ich hätte mich deutlicher ausdrücken sollen. Der Debugger sagt mir, dass der Type-Mismatch in der if-Abfrage auftaucht, deswegen habe nicht weiter gemacht (solange das halt nicht funktioniert). Hilft das weiter?   ???



Code
If Cdbl(number) = Cdbl(0) then...

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #5 am: 11.03.08 - 18:41:42 »
Nicht wirklich, das ist doch bestimmt nicht alles an Code, was du uns da gezeigt hast, oder? Zeig uns doch mal den gesamten Abschnitt, um den es da geht.

Mehr Input  von dir ==> Mehr Output für dich

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #6 am: 11.03.08 - 22:46:47 »
Wie sieht es mit einem Option Declare aus ?

Was sagt der Debugger ?

Wie sieht das Dim-Commando zu "Number" aus ?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #7 am: 12.03.08 - 00:36:53 »
Was wir bisher an Code kennen, sollte wirklich zu einem funktionierenden Ergebnis führen:

Code
	Dim ws As New NotesUIWorkspace
	Dim doc As NotesDocument
	Dim number As Variant
	
	On Error Goto ErrorRoutine
	
	Set doc = ws.CurrentDocument.Document
	number = doc.GetItemValue ("numberfield") (0)
	If Cdbl (number) = Cdbl (0) Then
		Messagebox "Equal"
	Else
		Messagebox "NOT EQUAL"
	End If
	Exit Sub
	
ErrorRoutine:
	Call ErrorHandler ("Sub 'Click'")
	Exit Sub

Aber wir kennen nicht alles erforderliche.

Weitere Anmerkungen:
Selbst, wenn "numberfield" ein Textfeld wäre und dort eine "Zahl" wie "0" stehen würde, wäre der Code lauffähig (wegen Cdbl).
Weiters: Folgendes ist unnötig
- number As Variant. Gib dort den möglichen Datentyp an. Ggf. Double. Das ist aber hier nicht kriegsentscheidend.
- Die Konvertierung
Zitat
Cdbl(number) = Cdbl(0)
ist unnötig. Cdbl (number) ggf. noch, wenn Du Dir nicht sicher bist, ob "number " Isnumeric ist, aber 0 ist 0 - Cdbl ist da vollkommen gaga überflüssig. Prüfe lieber und unbedingt (!) auf Isnumeric (number)!

Ich sage hier auch noch mal: Mehr Input, mehr Output.

Bernhard

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #8 am: 12.03.08 - 08:28:38 »
... wenn das Nummernfeld leer ist kommt die Fehlermeldung "Type mismatch" - also entweder wie Bernhard schreibt mit IsNumeric prüfen oder überprüfen, ob der Textstring des Inhaltes leer ist - wenn du sicher bist, daß nur eine Zahl drin sein kann...

Dim vNumber As Variant

vNumber = doc.NumberField

If IsNumeric( vNumber(0) ) Then

  If Cdbl( vNumber ) = 0 Then
    '...
  End If

End If
Grüßle Toni :)

Offline SnueK

  • Frischling
  • *
  • Beiträge: 6
Re: Numberfield mit LS auslesen -> Type Mismatch?
« Antwort #9 am: 12.03.08 - 10:28:42 »
Leider konnte ich wirklich nicht mehr Input liefern, da ich nicht mehr hatte... wie gesagt ich hatte nur das kleine Konstrukt und nicht weiter gemacht, als der Fehler aufgetreten ist.

Nachdem ich noch hin und her probiert hatte, habe ich den Fehler gefunden:

Ich hatte das Profildokument mit NumberField (erst fehlerhaft als Textfield mit gleichem Namen) im Client gespeichert. Erst nachträglich habe ich das NumberField von Text auf Number gesetzt und dann das Profildokument nochmal aufgerufen und gespeichert... das mochte Notes wohl nicht (irgendwie auch verständlich). Der Code war also fehlerfrei...

Trotzdem vielen vielen Dank für eure Hilfe und ich werde mich in der Zukunft bemühen detailreicher hier zu schreiben, also entschuldigt bitte ;-)


/edit.: die Stellen die "gaga"/überflüssig sind, sind mir mehr als bewusst, es waren lediglich die verzweifelten Versuche irgendwie den Fehler zu beseitigen  :-\
« Letzte Änderung: 12.03.08 - 10:33:16 von SnueK »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz