Autor Thema: Text kann nicht in eine Zahl umgesetzt werden  (Gelesen 9691 mal)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Text kann nicht in eine Zahl umgesetzt werden
« am: 19.11.12 - 14:48:43 »
Hallo,

ein Dokument bringt beim Speichern (d.h. QuerySave) die o.g. Fehlermeldung.
Gleich nach dem "Call source.Refresh "

Wie kann man geschickt ermitteln, welches Feld/Item das Problem hat?

Ich hab schon in mehere Felder (auch in das letzte ganz unten in der Maske) Folgendes eingetragen, aber die Fehlermeldung kommt erst danach.  :-: :-: :-:

@Prompt ([Ok];"Titel"; @ThisName + ": " + @Text(@ThisValue));

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #1 am: 19.11.12 - 15:06:01 »
Hallo,

Und was steht alles in den Events der Maske?
(QuerySave, ...)


Andreas

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #2 am: 19.11.12 - 15:28:07 »
Eine Menge (Screenshot anbei).

Aber die QuerySave geht genau nach dieser Zeile nicht weiter.

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #3 am: 19.11.12 - 15:32:40 »
Was ich noch gerade bemerkt habe:
wenn ich im Edit-Modus F9 drücke, kommt die Fehlermelduzng auch...  :-:
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #4 am: 19.11.12 - 15:41:29 »
Was Dir da reinspuckt, ist die Eingabevalidierung eines Feldes. Es ist nicht die beste Idee, (Formel-)Eingabevalidierungen und LS-Events zu kombinieren.

Wenn Du erfahren willst, welches Item hinter der Meldung eines Feldes steckt, dann kannst Du im QuerySave über alle Items loopen und diese auf Isarray = False prüfen. Wenn das dann kein RT item ist, hast Du den (ersten) Übeltäter gefunden.

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #5 am: 19.11.12 - 16:06:28 »
Wenn Du erfahren willst, welches Item hinter der Meldung eines Feldes steckt, dann kannst Du im QuerySave über alle Items loopen und diese auf Isarray = False prüfen.
Muss ich jedes Item namentlich nennen?
Falls nicht, wie geht das?

Danke und Gruß
Leo
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #6 am: 19.11.12 - 16:10:23 »
NotesDocument.Items ist Dein Freund, Leo.

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #7 am: 19.11.12 - 17:11:00 »
Danke, Bernhard.
Kurz und bündig wie immer.  :)

Das Problem lag übrigens nicht an dem berechneten sondern anderen Item (siehe Screenshot).
Könnte man sowas auch abfangen bzw. den korrupten gleich finden?

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #8 am: 19.11.12 - 18:51:15 »
Dass das "irgendein Item" sein wird, wahr schon klar, Leo  ;)

Das Verfahren, um fehlerhafte Felder (in diesem Fall sind es wirklich Felder, da das nur im Frontend und mit Bezug zur Maske / Feld stattfindet), hatte ich doch beschrieben.
Wie verhindern: Eine saubere Validierung. Entweder nur mit Formelsprache oder nur mit LS an zentraler Stelle (ich bevorzuge letzteres). Oder man ist Masochist und beherrscht zudem noch die Kombination von beiden (für mich gilt letzteres, ersteres schliesst mich aus von solchem Stunt).

Häff fann,
Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #9 am: 06.06.13 - 16:57:01 »

Das Verfahren, um fehlerhafte Felder (in diesem Fall sind es wirklich Felder, da das nur im Frontend und mit Bezug zur Maske / Feld stattfindet), hatte ich doch beschrieben.


Hallo Bernhard,

nochmals Danke.
Meinst Du etwa so?

Code
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument	'Aktuelles Dokument im Frontend	
	Dim doc As NotesDocument	'Aktuelles Dokument im Backend
	
	Set uidoc = ws.CurrentDocument
	Set doc = uidoc.Document 		'Überführung des aktuellen UI Dokuments ins Backend
	
	'Dim item As NotesItem
	ForAll item In doc.Items
		If Not IsArray(item) = False Then
			MessageBox( item.Name )
		End If
	End ForAll

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #10 am: 06.06.13 - 17:07:13 »
Bei Deinem Code darf kein RT Item im Dokument sein, denn diese sind niemals Arrays, Leo. Das müsstest Du also noch abfragen.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #11 am: 06.06.13 - 17:14:40 »
Kleine Pingelei von mir: Warum schreibst Du das so umständlich? Das versteht beim späteren Lesen "keine Sau"

If Not IsArray(item) = False Then

Das ist im Ergebnis das Gleiche wie

If IsArray(item) Then

nur, dass im zweiten Fall die Chance besteht, ohne Knoten im Hirn weiterleben zu können ;)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #12 am: 06.06.13 - 17:23:54 »
Vielen Dank für die Antworten.

Wenn ich so eintrage, werden ALLE Felder angezeigt:
If  IsArray(item) = False Then


Wenn ich so eintrage, werden KEINE Felder angezeigt
(auch keine RT-Felder):
If Not  IsArray(item) = False Then
vermutlich wie auch bei dieser Variante:
If  IsArray(item) Then

Was soll ich denn eintragen?
« Letzte Änderung: 06.06.13 - 17:27:41 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #13 am: 06.06.13 - 17:40:47 »
Das kommt natürlich darauf an, was Du haben willst. Mein Beitrag bezog sich ausschließlich auf die Formulierung.

Willst Du alle Items haben, die KEIN Array sind, fragst Du (von Mensch zu Mensch)

Bist Du kein Array?

Willst Du alle Items haben, die ein Array sind, solltest Du fragen

Bist Du ein Array?

Natürlich kannst Du auch fragen

Bist Du nicht kein Array?

Notes versteht das, aber vielleicht nicht der einfache Mensch, der sich später damit herumschlagen muss ...


Zu Deinem eigentlichen Problem kann ich im Moment nicht wirklich viel beitragen, denn das habe ich leider nicht verstanden. Nur soviel, dass Du irgendwie validieren willst. Und wenn Du das mit Script machen willst (was ich immer so mache), wirst Du wohl jedes einzelne Feld abfragen müssen, denn Du weißt, in welchem Feld/Item was stehen muss. Es ist höchst unwahrscheinlich, dass Du eine Maske hast, in der immer alle Items gefüllt sein müssen, so dass man die so pauschal mit Forall items ... abfackeln kann.

Ich mache das ungefähr so (im Querysave):


Dim nl As String
nl = Chr (13) & Chr (10)
Dim Fehler As String

If doc.Feld1 (0) = "" Then
   Fehler = Fehler & nl & "Feld1 ist leer"
End If

If Ubound (doc.Feld2) < 2 Then
   Fehler = Fehler & nl & "Feld2 enthält zu wenige Werte"
End If

If Len (doc.Feld3 (0)) < 5 Then
   Fehler = Fehler & nl & "Feld3 ist zu kurz"
End If

If Fehler <> "" Then
   Msgbox "Das Dokument konnte nicht gespeichert werden" & nl & Fehler, 16, "Fehler"
   Continue = False
End If

Natürlich sammele ich die Fehler in einer globalen Variablen einer Bibliothek und nutze eigene Routinen, um die Fehlertexte zu sammeln, aber sinngemäß so sieht das aus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #14 am: 06.06.13 - 17:53:53 »
Peter, es geht Leo um Items, in denen ein @Error steht (wenn jemand in ein Datumsfeld "Tante Hulda" geschrieben hat und man vom Frontend auf das Backenend referenziert, wie im QuerySave beispielsweise).

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #15 am: 06.06.13 - 17:57:05 »
Hallo Peter,

vielen Dank für Deinen Vorschlag.
Ich werde meine Validierungen nach und nach in so einen Script verschieben.

Das eigentliche Problem ist die Fehlermeldung "Text kann nicht in eine Zahl umgesetzt werden", die einige User ab und zu bekommen.
Ich vermute, dass dies an deren Regionalsettings liegen könnte.

Bernhard meinte, dass ich das Problemfeld mit so einem Script wie oben finden könnte, was bei mir leider nicht klappt.

Hättest Du eine Idee?
« Letzte Änderung: 06.06.13 - 17:59:34 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #16 am: 06.06.13 - 18:15:15 »
Peter, es geht Leo um Items, in denen ein @Error steht (wenn jemand in ein Datumsfeld "Tante Hulda" geschrieben hat und man vom Frontend auf das Backenend referenziert, wie im QuerySave beispielsweise).

Bernhard
Bist Du sicher, dass das immer so funktioniert? Wenn das Dokument schon älter ist und einen korrekten Eintrag hatte, dann aber in einen falschen Wert geändert wird, ist dann das Item auch kein Array? Wäre es vielleicht einfacher mit uidoc.FieldGetText zu arbeiten und dort nach Fehlermeldungen zu suchen? Ich habe das noch nie probiert, deshalb bin ich an der Ecke ziemlich "unbeleckt" ...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #17 am: 06.06.13 - 18:44:06 »
Jedes Item ausser RT ist immer ein Array - ausser, es hat als Inhalt @Error, Peter.
Und Frontend hilft Dir da nicht weiter.

Was Leos Problem angeht: Lass Dir von den Usern einen Schirmschuss schicken, wenn es wieder passiert. Oder zumindest sagen, was sie korrigiert haben, als es dann wieder tat.

Bernhard

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #18 am: 06.06.13 - 18:47:47 »
Bernhard,

das passiert beim Erstellen d.h. Speichern eines neuen Dokuments... :(

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Text kann nicht in eine Zahl umgesetzt werden
« Antwort #19 am: 06.06.13 - 19:03:34 »
Schon klar, Leo - wie auch sonst. Und daher ist es interessant zu wissen, was die lieben User da reingepinselt haben in Zahlenfelder.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz