Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: stitze am 16.03.05 - 10:44:09

Titel: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 10:44:09
Moin,

also folgende Sachlage:

Ich habe in einer Maske ein verstecktes Feld, in welchem Mehrfachwerte zugelassen sind, in dem speicher ich Daten in folgender Form ab

[String]~~~[String]
[String]~~~[String]
usw...

Jetzt möchte ich diese Daten verarbeiten und habe mir deshalb eine NotesItem Objekt deklariert

Dim item As NotesItem
Set item = NotesDocument.GetFirstItem( "ItemName" )

Dann wollte ich die Daten über folgende Methode durchlaufen und verarbeiten

Forall v In item.Values
     'Verarbeitung
End Forall

Jedoch bekomme ich nicht jeden einzelnen Wert in v zurück sondern ein Variant mit allen Werte, das ist aber nicht das was ich möchte, ich möchte jeden Datensatz einzelnd verarbeiten.

Was hab ihc falsch gemacht, wo steckt der Fehler?

Mit freundlichen Grüßen

stitze
Titel: Re: NotesItem.Values
Beitrag von: klaussal am 16.03.05 - 10:49:05
Mehrfachwerte werden nicht durch "~" getrennt.
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 10:50:49
Die drei tilden Trennen auch nicht die Mehrfachwerte, sondern den Datensatz an sich.

Also im konkreter zu werden

[Bezeichnung]~~~[Nummer]
usw...
Titel: Re: NotesItem.Values
Beitrag von: Axel am 16.03.05 - 10:54:38
Hi,

versuch's mal damit.

Code
Function Word (sourceString As String, separator As String, number As Integer) As String

searchString$=SourceString & separator 'add one separator to catch also the last substring

For i% = 1 To number
pos%=Instr(searchString$, separator)
If pos%=0 Then Exit For
substring$=Left(searchString$,pos%-1)
searchString$=Mid(searchString$, pos%+1)
Next

If pos% > 0 Then
Word=substring$
Else
Word=""
End If

End Function



Forall v In item.Values
     'Verarbeitung
     Wert1 = Word(Cstr(v(0)), "~~~",1)
     Wert2 = Word(Cstr(v(0)), "~~~",2)
End Forall


Axel
Titel: Re: NotesItem.Values
Beitrag von: animate am 16.03.05 - 10:58:23
Ich würde nicht die Symptome bekämpfen, sondern die Ursache :)

Warum speicherst du in einem Feld, dass Mehrfachwerte zulässt,
mehrere Werte in einem?

*edit*
oh, hab ich missverstanden. hab deine weiterführende Erklärung erst jetzt gelesen. Überlest einfach mein Zeug.
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 10:59:47
Mh, ja das würde funktionieren, thx, aber ich würde das ja lieber über eine Notes Funktion machen. Wie unterscheidet Notes denn dann Mehrfachwerte von normalen Feldern, wenn nicht jeder Wert in nem "v" zurückgegeben wird. Das ist irgendwie unlogisch  ???
Titel: Re: NotesItem.Values
Beitrag von: Axel am 16.03.05 - 11:00:45
Ich würde nicht die Symptome bekämpfen, sondern die Ursache :)

Warum speicherst du in einem Feld, dass Mehrfachwerte zulässt,
mehrere Werte in einem?

Für bestimmte Probleme brauchst du manchmal solche Stunts. Ich das selbst schon so gemacht.


Axel
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 11:01:53
zu Thomas:

weil ich ne Tabelle dynamisch erzeugen möchte und mir da irgendwie helfen muss und so wollte ich jede zeile sozusagen in einem mehrfachwert speichern und jeden spaltenwert halt mit ~~~ getrennt speichern, und darin sehe ich auch nicht das problem, das problem ist, wie eben schon gesagt das es sowas wie mehrfachwerte gibt ich die aber nicht vernünftig druchlaufen kann.
Titel: Re: NotesItem.Values
Beitrag von: koehlerbv am 16.03.05 - 11:04:35
Dim vValue As Variant
Dim iLoop As Integer

vValue = NotesDocument.ItemName

For iLoop = 0 to Ubound (vValue)
    'Verarbeitung
Next

HTH,
Bernhard
Titel: Re: NotesItem.Values
Beitrag von: Semeaphoros am 16.03.05 - 11:37:41
Ich bin da doch dafür, dass man mal die Ursachen untersucht und nicht das Symptom umgeht. Schliesslich soll es sich ja um ein Feld mit Mehrfachwerten handeln, und da funktioniert die Sache mit dem Forall perfekt. Sprich, offensichtlich werden die Daten nicht als Multivalue, sondern als Singlevalue abgespeichert. Da wir aber davon nicht wissen, wie das tatsächlich gemacht wird, geht die Frage an den Autor zurück, wie wird denn das Feld befüllt?
Titel: Re: NotesItem.Values
Beitrag von: Axel am 16.03.05 - 11:43:43
Mh, ja das würde funktionieren, thx, aber ich würde das ja lieber über eine Notes Funktion machen. Wie unterscheidet Notes denn dann Mehrfachwerte von normalen Feldern, wenn nicht jeder Wert in nem "v" zurückgegeben wird. Das ist irgendwie unlogisch  ???

Wieso ist das unlogisch.

Klauss hat es ja schon geschrieben, [Bezeichnung]~~~[Nummer] das ist kein Mehrfachwert.

Wenn du die Option Mehrfachwerte zulassen für ein Feld setzt, kann du noch auswählen, wie die Mehrfachwerte getrennt werden, z.B. mit Semikolon, Komma usw.

Das wäre der Feldinhalt bei der Option Mehrfachwerte zulassen:
 
[Bezeichnung1]~~~[Nummer1]; [Bezeichnung2]~~~[Nummer2]; [Bezeichnung3]~~~[Nummer3]

Bei einer ForAll-Schleife würde v dir  bei den Durchläufen jeweils die entsprechenden Werte liefern.

1. Durchlauf -> [Bezeichnung1]~~~[Nummer1]
2. Durchlauf -> [Bezeichnung2]~~~[Nummer2]
3. Durchlauf -> [Bezeichnung3]~~~[Nummer3]

Die Trennung von Bezeicnung und Nummer musst du dann selbst machen, z.B. mit der Funktion Word.

Ich hoffe es ist jetzt etwas klarer geworden.


Axel



Titel: Re: NotesItem.Values
Beitrag von: Semeaphoros am 16.03.05 - 11:50:19
Dazu noch ein paar Hintergrundinformationen:

Das Trennzeichen für Mehrfachwerte, das bei der Felddefinition bestimmt wird, gilt nur für Eingabe und Anzeige (und lässt sich dort ja sogar getrennt einstellen).

Sobald man auf das Item zugreift, werden einem die Mehrfachwerte als Array zurückgegeben und das eingestellte Trennzeichen ist nicht nur irrelevant, sondern sogar von LS aus nicht einmal zu bestimmen.

Was hier versucht wird, ist ein zweidimensionales Array in einem eindimensionalen zu speichern. Offensichtlich ist aber schon das misslungen und der Array hat 0 Dimensionen (bzw. kommt als Skalar zurück). Daher auch meine Frage, wie wurde das Feld/Item denn überhaupt befüllt, denn offensichtlich stimmt schon der Inhalt des Feldes nicht mit der Beschreibung überein.


*edit, um den Zusammenhang korrekt zu wahren
Titel: Re: NotesItem.Values
Beitrag von: Axel am 16.03.05 - 12:21:03
Hi,

stimmt. War etwas missverständlich.

Ich hab's versucht etwas deutlicher zu machen.


Axel
Titel: Re: NotesItem.Values
Beitrag von: Semeaphoros am 16.03.05 - 12:28:57
Danke Axel, die jetzige Version ist klar und mit dem Beispiel eigentlich nicht mehr falsch zu verstehen.
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 13:40:00
Also ich habe die Daten nun erstmal per Hand eingegeben, heisst

String~~~String Enter
String~~~String Enter
usw...

Ich persönlich hab das Problem nun gelöst indem ich den Wert einfach nach Chr(13) + Chr(10) durchlaufe und mit die entsprechenden Werte mit Mid rauschneide und verarbeite.
Jedoch wurde ja oben beschrieben, dass es wahrscheinlich daran liegt, das die werte als single values gespeichert werden, klingt logisch und dürfte dann wohl auch die antwort auf meine frage sein.
Liegt das an der Handeingabe oder worauf muss ich da achten?
Titel: Re: NotesItem.Values
Beitrag von: koehlerbv am 16.03.05 - 13:44:52
Es ist eindeutig kein Multi value. Hast Du den Haken gesetzt bei "Mehrfachwerte erlauben" ? Ist ENTER als Trennzeichen für die Eingabe angehakt ?

Ab gesehen davon: Tu kannst doch einfach herausfinden, ob es ein skalarer Wert oder eine Liste ist. In den Document properties steht bei diesem Feld entweder Text oder Textliste ...

Bernhard

PS: Insofern war mein Posting oben auch vertrottelt - es ist ja nur ein anderer Weg als Forall gewesen.
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 13:53:37
Also der Datentyp ist eine Textliste, ich habe auch Mehrfachwerte in den Feldeigenschaften angekreuzt.
Mh, ich denke es lag daran, das ich Enter nicht als Feldtrennzeichen gesetzt habe, mh, naja woher sollte ich Boon das auch wissen  ;)

Danke das war die Antwort auf die ich den ganzen Morgen schon gewartet habe, meiner Meinung ging dahingegen auch die Frage, ärgerlich nur das ich den ganzen Morgen jetzt damit verbracht habe einen anderen weg zu finden, aber egal war ja alles nett gemeint, danke erstmal  ;D
Titel: Re: NotesItem.Values
Beitrag von: koehlerbv am 16.03.05 - 13:57:59
Danke das war die Antwort auf die ich den ganzen Morgen schon gewartet habe ...

Genau das hatten aber Axel und Jens bereits explizit geschrieben ...

Bernhard
Titel: Re: NotesItem.Values
Beitrag von: stitze am 16.03.05 - 14:20:14
Joa schon richtig, jedoch habe ich den Zusammenhang nicht gleich erkannt wie ich es verwenden sollte, ich würd sagen aneinander vorbei geredet. ::)