Autor Thema: Feld wandelt seinen Typ  (Gelesen 2618 mal)

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Feld wandelt seinen Typ
« am: 14.02.12 - 21:00:59 »
Guten Abend,

ich arbeite gerade an einer Maske, die ich für einen Dialog verwenden will. In einem virtuellen Dokument lege ich alle notwendigen Items an, rufe die die Maske dann als Dialogbox auf, gebe Werte ein und verarbeite die weiter. Alles soweit klar. Mich beschäftigt ein Feld, dass sein Typ wandelt:

Es ist ein Optionsfeld, dass in der Maske auch als Optionsfeld angelegt ist. Rufe ich die Maske über "Erstellen" im Client auf, ist das Feld auch tatsächlich ein Dialogfeld. Rufe ich die Maske aber via Script als Dialogmaske auf, ist das Feld ein Textfeld mit Wert "0"...

Ist vermutlich nicht relevant, aber hier der Code zum Aufruf der Dialogmaske (gekürzt):
Code
	Dim dialog_doc As New Notesdocument(db)
	Forall f In doc.Fields												'legt alle Items für Text-Values an
		Set dialog_item = New NotesItem(dialog_doc,f,"")
	End Forall
	Forall f In doc.NumberFields										'legt alle Items für Zahlen-Values an
		Set dialog_item = New NotesItem(dialog_doc,f,0)
	End Forall	
	Set dialog_item = New NotesItem(dialog_doc,"art_Heissfolie","nein")		'belegt das Optionsfeld Heissfolie vor
	Set dialog_item = New NotesItem(dialog_doc,"art_Schutzlack","nein")		'belegt das Optionsfeld Schutzlack vor

Was habe ich versucht?
Vorbelegung weggelassen, Feld gelöscht - und zwar auch richtig! - gespeichert, neu angelegt. Nochmals gelöscht via Ytria. Dokumente auf Basis der Maske gibt es nicht. Witzigerweise betrifft es nur das eine Feld, fünf andere Optionsfelder funktionieren tadellos, so auch das Feld art_Heissfolie.

Ich hoffe, dass Ihr auch zu diesem Problem  - wie so oft - einige Ideen oder Lösungen habt.

Viele Grüße
« Letzte Änderung: 14.02.12 - 23:41:05 von Christian Kröll »
Christian Kröll

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feld wandelt seinen Typ
« Antwort #1 am: 14.02.12 - 22:15:57 »
Irgendwie kommt mir das Ganze extrem schräg vor:

Du gehst Forall Fields in Document - und erzeugst ein neues Item? Wozu - wenn es dazu keine Pendants im DialogDoc gibt? Wozu, wenn es die dort doch gibt (danach gibt es sie ja doppelt)?

NotesDocument.NumberFields? Doku?

Wenn Du mehr zu diesen "Warums" schreibst, findet sich bestimmt auch leicht die nachvollziehbare Ursache Deines scheinabren Phänomens.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Feld wandelt seinen Typ
« Antwort #2 am: 14.02.12 - 22:45:01 »
Doppelt können die Items eigentlich nicht sein, denn dialog_doc ist ja ein ganz neues, es sei denn, danach kommt ein Script, was noch ein Item mit gleichem Namen erzeugt. Vor allem erstaunt mich der Wert "0", wo kommt der denn her?

Dim dialog_doc As New Notesdocument(db)

Ich persönlich finde aber diese Set dialog_item-Nummer auch etwas komisch, obwohl das so bestimmt auch auch geht (wär mir viel zuviel Schreiberei, da bin ich echt zu faul zu).

Versuch doch mal

dialog_doc.art_Schutzlack = "nein"

So setze ich Werte in Items, auch wenn es die noch garnicht gibt. Und kopiere ich mir das versehentlich an andere Stelle nochmal (nur theorethisch), passiert nichts.

dialog_doc.art_Schutzlack = "nein"
dialog_doc.art_Schutzlack = "nein"

Erzeugt ein Item mit dem Wert nein, ist nur unnötiger Code.

Set dialog_item = New NotesItem(dialog_doc,"art_Schutzlack","nein")
Set dialog_item = New NotesItem(dialog_doc,"art_Schutzlack","nein")

erzeugt sicher 2 Items, eins zuviel. Das dürfte zwar die Darstellungsweise eines Optionsfeldes nicht verändern, aber vielleicht ist da noch was anderes schief.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Feld wandelt seinen Typ
« Antwort #3 am: 14.02.12 - 23:00:51 »
Zitat
Doppelt können die Items eigentlich nicht sein

Doch, wenn in doc.Fields und doc.NumberFields (beides Items im (vermutlich) Maskendokument)  ein Feld doppelt vorkommt.
Ich erzeuge Items meist mit dialog_doc.replaceItemValue(x,y)

dir geht es rein um das Anzeigeproblem? In der Tat sehr merkwürdig. kannst du das DialogDoc mal abspeichern und mit den Ytria-Tools untersuchen?
Im Dokument ist der Feldtyp ja nicht definiert, aber vielleicht kommt das zum Feld zugehörige Item doppelt oder mit falschem Typ vor
(Optionsfelder müssen normalerweise immer vom Typ Text sein)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Re: Feld wandelt seinen Typ
« Antwort #4 am: 14.02.12 - 23:28:23 »
Ihr wart wieder echt fleissig - einfach super!

Also: Die items für das temporäre Dokument sind in zwei Feldern definiert und daraus erstelle ich mir die Items für das temporäre Dokument. Die Maske, die den Dialog aufruft, hat keine korrespondierenden Felder. Mit der Trennung in Text und Zahl erleichtere ich mir die spätere Verarbeitung, da die Varianten in MultiValue_Items  gespeichert werden.

Nach dem zitierten Code kommt nur noch der Dialogaufruf rc = Dialogbox(....,dialog_doc). Die Dialogmaske selber bearbeitet das "kaputte" Feld nicht. Bislang ist da nicht ein Funken Code hinterlegt.

Ich werde es morgen mit Euren Vorschlägen versuchen und werde auch nochmals prüfen, ob die ItemNamen nicht doch noch in den beiden Definitionsfeldern stecken. Wenn es daran liegt, dann gibt bei der nächsten Wies'n für Euch eine Frei-Maß!
Christian Kröll

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Re: Feld wandelt seinen Typ
« Antwort #5 am: 14.02.12 - 23:40:40 »
Oh' Jungs  ich geh' in Rente!   :-[ :-[ :-[
Das Item art_Schutzlack stand tatsächlich im Definitionsfeld für die Zahlwert-Items auch noch drin. Da habe ich heute zig-mal reingesehen und zwischen den anderen 120 Items nicht gesehen. Die Itemname stehen dort schön alphabetisch sortiert und dann steht das blöde Ding mittendrin. Der Wert "0" hat Euch ja auch schon gewundert.

Also dann sehen wir uns (spätestens) auf der nächsten Wies'n! :knuddel:
Christian Kröll

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Feld wandelt seinen Typ
« Antwort #6 am: 15.02.12 - 07:27:10 »
Verstehe ich das dann richtig: wenn es im Backend ein Zahlenfeld gibt,  werden aus Optionsschaltflächen Eingabefelder? ???
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Re: Feld wandelt seinen Typ
« Antwort #7 am: 15.02.12 - 10:22:46 »
Wie gesagt, war mein Versehen:

Ich habe das temporäre Dokument nach den Initialisierungen über die Schleifen und die separaten Initialisierungen gespeichert. Tatsächlich ist das Item doppelt vorhanden:
- einmal als Number mit Wert 0
- einmal als Text mit Wert "nein"

Die Dialogmaske enthält das Dialogfeld und zieht aus dem zuerst angelegten Item den Wert 0 und macht daraus "0". Völlig irre ist aber, dass Notes wirklich aus dem Optionsfeld ein Textfeld macht. Wird so auch von Ytria angezeigt, also auch im gespeicherten Dokument!
Hinterlege ich das Item Form mit der Eingabemaske, dann wird beim erneuten Öffnen des gespeicherten Dokuments das Feld wieder als Optionsfeld angezeigt. Ohne das Form-Item bleibt's beim Textfeld...

Mein Fazit:
1. Bei solchen Fehlern die ganzen temporären Dokumente speichern!
2. Lass mal einen völlig von Entwicklung unbelegten eine Liste durchsuchen oder nimm gleich die Suchfunktion!
3. Analyseprogramme (Ytria, Teamstudio o.ä.) lohnen sich definitiv. Die Rechnung mache ich gerne jedem Entscheider auf!
Christian Kröll

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz