Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: hoschie am 07.10.15 - 14:42:36

Titel: entfernt Notes leere Array Elemente?
Beitrag von: hoschie am 07.10.15 - 14:42:36
Hallo zusammen,

ich bin dabei im QuerySave-Ereignis Einzelwerte zu einem Array zusammenzufügen und in versteckte Mehrfachwerte-Felder zu speichern.

Zum Testen sieht es so aus:

Code
	vArray(0) = "111"
		vArray(1) = "222"
		vArray(2) = "333"
		Call oDoc.ReplaceItemValue("fdEinspruchZiffer", vArray)
		
		vArray(0) = "1"
		vArray(1) = "2"
		vArray(2) = "1"
		Call oDoc.ReplaceItemValue("fdAnalog", vArray)	
		
		vArray(0) = "2"
		vArray(1) = " "
		vArray(2) = "5"
		Call oDoc.ReplaceItemValue("fdbeanstFaktor", vArray)	
		
		vArray(0) = "Analogansatz"
		vArray(1) = "Analogansatz"
		vArray(2) = "Analogansatz"
		Call oDoc.ReplaceItemValue("fdGrund", vArray)	
		
		vArray(0) = " "
		vArray(1) = "5"
		vArray(2) = " "
		Call oDoc.ReplaceItemValue("fdangepFaktor", vArray)	
		

Die Array-Werte mit Leerzeichen sind absicht, da manchen Felder keine Pflichtfelder sind, ich aber die Werte an der richtigen Stelle brauche.

Nach dem Speichern sieht es aber so aus bei fdangepFaktor und fdbeanstFaktor:
Feldname: fdangepFaktor
Datentyp: Text
Datenlänge: 1 Byte
Seq.-Num.: 1
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"5"

Feldname: fdbeanstFaktor
Datentyp: Textliste
Datenlänge: 8 Byte
Seq.-Num.: 1
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"2"
"5"


Die Leerzeichen-Werte fehlen.
Ist das nachvollziehbar? Macht Notes das in voller Absicht? Ich hab keine Doku dazu gefunden, vielleicht habe ich auch mit den falschen Begriffen gesucht.

Bin, wie immer, für jeden Hinweis dankbar (da ich ungern mit Platzhalter-Werten arbeiten möchte).
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: Tode am 07.10.15 - 15:06:23
Das passiert NICHT in dem von Dir geposteten Code- Schnipsel.

Hast Du:

Irgendwo ein @Trim in irgendeiner Feld- Formel oder ein Fulltrim noch irgendwo im Script?

Ich habe gerade folgenden Code getestet:
Code
Dim vArray(2) as String
vArray(0) = " "
vArray(1) = "5"
vArray(2) = " "
Call g_docFocus.ReplaceItemValue("fdangepFaktor", vArray) 
Call g_docFocus.Save( True, True, True )
Und das Ergebnis war
Zitat
Feldname: fdangepFaktor
Datentyp: Textliste
Datenlänge: 11 Byte
Seq.-Num.: 2
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

" "
"5"
" "
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: ERR am 07.10.15 - 15:26:08
Hallo,

ich denke, das ist das UI. Was für ein Typ sind die Felder (Kombinationsfeld, Listenfeld...)? Haben die Felder eine Feldumsetzungsformel oder sind es berechnete Felder?

MFG
ERR
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: hoschie am 07.10.15 - 15:35:25
@Tode:
kein Fulltrim, ein Trim verwende ich, aber nur um einen Feldwert zu prüfen (und um dann ein " " zu verwenden, statt des Leerwertes)

@ERR:
die Felder in die ich speichere sich Mehrfachwerte-Felder, versteckt am Ende des Dokumentes, vom Typ Text und auf sich selbst berechnet. Ist das vielleicht ein Problem?
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: Peter Klett am 07.10.15 - 15:59:27
Notes trimmt automatisch Arrays, also leere Werte werden beim Speichern IM FRONTEND entfernt. Das gleiche Problem hatte ich vor einiger Zeit auch. Die einzige Lösung bestand (nach meinem Kenntnisstand) darin, die Werte in Items zu schreiben, für die es keine Felder in der Maske gibt, dann bleiben leere Werte in den Arrays enthalten. Habe damals lange herumprobiert und keine andere Alternative gefunden.
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: umi am 07.10.15 - 17:23:32
Moin
Als Alternative könntest Du die Werte per XML in einem Item speichern.
<ziffer></ziffer><faktor>1</faktor>....
<ziffer>2</ziffer><faktor>65</faktor>....

Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: hoschie am 08.10.15 - 10:18:16
@umi: auch ein Weg, aber ich benötige die MFW-Felder für Ansichten, da hilft der XML Code nicht weiter.

@Peter Klett:
Danke für den Hinweis.

Ich habe die Funktionalität ins QueryClose ausgelagert, damit funktioniert es.


Update:
Nicht ganz.
Schau ich mir die Items des Dokumentes in der Ansicht an:
Feldname: fdbeanstFaktor
Datentyp: Textliste
Datenlänge: 12 Byte
Seq.-Num.: 2
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

" "
"15"
" "

Öffne ich das Dokument jedoch (kein Code in Qeryopen, etc.), sieht das Item so aus:
Feldname: fdbeanstFaktor
Datentyp: Textliste
Datenlänge: 9 Byte
Seq.-Num.: 4
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

" "
"15"

anderes Item, Ansicht:
Feldname: fdangepFaktor
Datentyp: Textliste
Datenlänge: 13 Byte
Seq.-Num.: 2
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"12"
" "
"14"

geöffnetes Dokument:
Feldname: fdangepFaktor
Datentyp: Textliste
Datenlänge: 10 Byte
Seq.-Num.: 4
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"12"
"14"

Ich bin verwirrt.  ???
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: ERR am 08.10.15 - 14:40:05
Hallo,

das ist wie Peter es schreibt (war bei mir auch so). Das UI löscht diese Werte und ich würde mich nicht darauf verlassen, das im Postsave oder QueryClose nicht wieder "gelöscht" wird.

Ein anderer Ansatz wäre es, die Leerzeichen durch ein Sonderzeichen zu ersetzen (".", "§" oder...). In den Ansichten (und den Stellen, an denen der Wert verwendet wird) wird dann das Sonderzeichen wieder zu einem Leerzeichen umgewandelt (per @ReplaceSubString).

MFG
ERR
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: Peter Klett am 08.10.15 - 15:51:14
Queryclose hilft Dir nur solange, bis der nächste User das Dokument öffnet und speichert, dann sind die Arrays wieder kaputt. Einzige und auch einfach umzusetzende Maßnahme: Lösche die versteckten Felder aus der Maske, die brauchst Du nicht.

EDIT: Ok, war im Ansatz unsinnig, Queryclose wird ja auch beim nächsten User durchgeführt. ABER: Mit dem Queryclose speicherst Du das Dokument im Backend. Wir haben Dokumente, die man abschließen kann, dabei leeren wir das Autorenfeld, dann kann man im Queryclose das Dokument nicht mehr speichern, weil die Zugriffsrechte fehlen. Wenn Du später auch solch eine Mimik einbaust, fällst Du dann wieder auf die Nase (oder musst irgendwelche anderen Umwege gehen)
Titel: Re: entfernt Notes leere Array Elemente?
Beitrag von: hoschie am 13.10.15 - 12:33:34
Danke für alle Antworten und Anregungen.

Ich habe mich nun gezwungenermaßen auch für einen vordefinierten String bei Leerwerten entschieden.