Autor Thema: Im Backend Mehrfachwerte in ein Textfeld schreiben  (Gelesen 6847 mal)

Offline Gruenkohl

  • Aktives Mitglied
  • ***
  • Beiträge: 222
  • Geschlecht: Männlich
Moin, moin,

also ich habe eine schon fast peinliche Frage.
Und zwar wie kann im Backend in ein Textfeld Mehrfachwerte schreiben, so das sie auch als Mehrfachwerte erkannt werden?

Ich habe in den Feldeigenschaften folgendes eingestellt:

- Mehrfachwerte zulassen
- Trennen bei Komma, Semikolon und Leerzeichen
- Anzeigen mit Semikolon

Wenn aber nun mit einem Agenten in dieses Feld etwas schreibe wird es nur als ein Wert genommen. Ein ComputeWithForm hat nichts gebracht.

Der eingefügte Text sieht z.B. wie folgt aus:  aaa, bbb, ccc, ...

Kann mir da jemand helfen???


Danke und Gruss

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #1 am: 07.06.04 - 15:49:42 »
Du brauchst hierfür ein Array.

Wenn es hardcoded geht:
Dim aMultiValue (0 to 2) as String
aMultiValue (0) = "Wert 1"
aMultiValue (1) = "Wert 2"
aMultiValue (2) = "Wert 3"
NotesDocument.MyMultiValueField = aMultiValue

Wenn Du mit bekannten Strings arbeiten kannst, kannst Du das Evaluate-Statement verwenden (siehe DesignerHelp) und mit den aus @functions bekannten Verfahren das Feld füllen:
NotesDocument.MyMultiValueField = Evaluate ({"Wert 1" : "Wert 2" : "Wert 3"})

Sonst brauchst Du ein dynamisches Array (Stichwort: Redim) oder
ArrayAppend auf ein bestehendes Array (was das Feld in Deinem backend-Doc immer ist).

HTH,
Bernhard

Offline Gruenkohl

  • Aktives Mitglied
  • ***
  • Beiträge: 222
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #2 am: 07.06.04 - 16:01:12 »
Habe ich auch schon probiert aber bringt nix.
Wird auch wie ein Wert gesehen.
Ich probiere es aber noch mal aus.
Danke

Glombi

  • Gast
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #3 am: 07.06.04 - 16:02:02 »
Sieh Dir mal in der Designer Hilfe folgendes an:

Call notesItem.AppendToTextList( newValue )

Bsp:
Dim doc As NotesDocument
Dim item As NotesItem
Dim newVals( 1 To 3 ) As String
'...set value of doc...
Set item = doc.GetFirstItem( "Categories" )
newVals( 1 ) = "Girls"
newVals( 2 ) = "Boys"
newVals( 3 ) = "Toys"
Call item.AppendToTextList( newVals )
Call doc.Save( False, True )

Andreas

Offline Gruenkohl

  • Aktives Mitglied
  • ***
  • Beiträge: 222
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #4 am: 07.06.04 - 16:15:38 »
Ja wunderbar. Das hat gezogen.
Danke und schönen Feierabend.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #5 am: 07.06.04 - 16:44:28 »
Hallo, Andreasse,

Zitat
Habe ich auch schon probiert aber bringt nix.
Wird auch wie ein Wert gesehen.
Ich probiere es aber noch mal aus.

Mystisch, dass das bei Dir nicht funktioniert, Andreas der Grünkohl. Da muss der Fehler woanders liegen, denn das ist die simpelste und brachialste und garantiert wirksame Methode.

Andreas G.: AppendToTextList hängt aber prinzipiell nur an. Das muss nicht unbedingt erwünscht sein.

Gespannt auf des Rätsels Lösung,
Bernhard

Glombi

  • Gast
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #6 am: 07.06.04 - 16:52:21 »
Andreas G.: AppendToTextList hängt aber prinzipiell nur an. Das muss nicht unbedingt erwünscht sein.
Ok, dann muss man das so machen
Set item = doc.ReplaceItemValue( "Categories", "" )

Ansonsten kapier ich auch nicht, warum Deine Lösung nicht funktionieren sollte. Ist ja prinzipiell das gleiche.

Andreas G.  ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #7 am: 07.06.04 - 17:22:41 »
Ich hatte das ja heute schon mal postuliert mit dem "Brett vor'm Kopf", welches ich zu haben glaubte. Sicherheitshalber habe ich Glombi's und meine Methode eben mal nebeneinander ausprobiert - aber erwartungsgemäss keinen Unterschied feststellen können:

Glombi:
Code
   Dim ws As New NotesUIWorkspace
   Dim docDeserts As NotesDocument
   Dim itemDeserts As NotesItem
   Dim aDeserts (0 To 2) As String
   
   aDeserts (0) = "Gobi"
   aDeserts (1) = "Kalahari"
   aDeserts (2) = "Sahara"
   
   Set docDeserts = ws.CurrentDocument.Document
   Set itemDeserts = docDeserts.ReplaceItemValue ("Deserts", aDeserts)

Der Ich:
Code
   Dim ws As New NotesUIWorkspace
   Dim docDeserts As NotesDocument
   Dim aDeserts (0 To 2) As String
   
   aDeserts (0) = "Sahara"
   aDeserts (1) = "Kalahari"
   aDeserts (2) = "Gobi"
   
   Set docDeserts = ws.CurrentDocument.Document
   docDeserts.Deserts = aDeserts

Die Ergebnisse sind absolut identisch.

Jetzt ist Andreas der Gruenkohl im Erklärungsnotstand  ;)
Würde mich echt interessieren, welcher Nebenumstand da mitgespielt hat.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #8 am: 07.06.04 - 23:24:51 »
Und zwar wie kann im Backend in ein Textfeld Mehrfachwerte schreiben, so das sie auch als Mehrfachwerte erkannt werden?
Ich habe in den Feldeigenschaften folgendes eingestellt:

Noch zur Ergänzung:

Wenn Du per Script auf Felder zugreifst, bekommst Du Strings (völlig egal, ob das Feld auf 'Mehrfachwerte' etc. eingestellt ist).
Wenn Du auf Itemebene (also Dokumentenseitig) zugreifst, bekommst Du immer ein Array - auch wenn das ursprünglich zugrunde liegende Feld z.B. vom Typ "Zahl, ohne Mehrfachwerte" war.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #9 am: 07.06.04 - 23:44:04 »
Zitat
Wenn Du per Script auf Felder zugreifst, bekommst Du Strings (völlig egal, ob das Feld auf 'Mehrfachwerte' etc. eingestellt ist).
Wenn Du auf Itemebene (also Dokumentenseitig) zugreifst, bekommst Du immer ein Array - auch wenn das ursprünglich zugrunde liegende Feld z.B. vom Typ "Zahl, ohne Mehrfachwerte" war.

Ich bin jetzt etwas verwirrt. Insbesondere, da Andreas vom Backend sprach: Wie meinst Du das ? Wann bekommst Du skalare Werte zurück ?

Bernhard

PS: Vielleicht hörst Du ja bald wieder den berühmten "Klatsch" bis nach Niederbayern, wenn meine Hand wieder an die Stirn knallt  ;)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #10 am: 07.06.04 - 23:58:26 »
Mein comment war deshalb, weil ich "Feld" und "Backend" gelesen hatte (und Backend ja auch im Thread-Betreff steht).

Mein Verständnis:
Im Backend interessieren "Felder" überhaupt nicht. Hier haben wir mit Items zu tun, und die geben uns immer Arrays zurück. Nice to have, dass vielleicht mal eine Maske verwendet wurde, um unser Backend-Doc zu speichern - aber das interessiert im Backend ja eigentlich nicht,

Wenn man im Frontend Felder anspricht, bekommt man Stings (z.B. uidoc.fieldgtetext).
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #11 am: 08.06.04 - 00:11:21 »
Zurück zum Unterschied der beiden o.g. Scripts.

Imho ist da kein Unterschied:

Ob man nun via Items oder direkt mit doc.* arbeitet - es sollte nach meinem Verständnis kein Unterschied da sein, da man ja auch mit doc.* ein Item des Backenddocs anspricht. Ich kann mir nicht vorstellen, dass via doc.* kein Array übergeben wird - dies würde wohl der ganzen LS-Philosophie widersprechen.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #12 am: 08.06.04 - 00:16:01 »
Jo, verstanden. Und Du hast mit Deiner Erklärung natürlich vollkommen Recht: Im Backend gibt es nur Items, und die sind (ausser RTIs) immer Arrays. Dafür braucht es auch keine Masken. Und im FrontEnd kommt man nicht an die Arrays heran, sondern sieht sich nur skalaren Werten gegenüber.

Merci,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #13 am: 08.06.04 - 00:21:45 »
Keine Ursache, Bernhard. Es war auch von mir nicht ganz klar dargelegt und kam wohl verwischt rüber, da das Wörtlein "UI" fehlte und ich nur von Backend schrieb  ;)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #14 am: 08.06.04 - 00:22:33 »
Zitat
Ob man nun via Items oder direkt mit doc.* arbeitet - es sollte nach meinem Verständnis kein Unterschied da sein, da man ja auch mit doc.* ein Item des Backenddocs anspricht. Ich kann mir nicht vorstellen, dass via doc.* kein Array übergeben wird - dies würde wohl der ganzen LS-Philosophie widersprechen.

Da besteht auch kein Unterschied, und ob ich mit einer expliziten Methode (NotesDocument.GetItemValue) oder "direkt" (NotesDocument.ItemName) - was letztlich auf den gleichen API-Code wie GetItemValue zurückgreift) - Items auslese: Man bekommt immer (!) Arrays zurück. Selbst, wenn das Item gar nicht existiert.

Ich präferiere aus Gründen der besseren Lesbarkeit und des einfacheren Codings übrigens die Variante
NotesDocument.ItemName
statt
NotesDocument.GetItemValue.
Wie gesagt: Beides landet in den gleichen API-Routinen  :)

Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Im Backend Mehrfachwerte in ein Textfeld schreiben
« Antwort #15 am: 08.06.04 - 00:25:14 »
Zitat
Keine Ursache, Bernhard. Es war auch von mir nicht ganz klar dargelegt und kam wohl verwischt rüber, da das Wörtlein "UI" fehlte und ich nur von Backend schrieb
Ich glaube, da müssen wir uns beide nicht entschuldigen. Aber vielleicht hilft unser so dokumentierter Disput wieder dem einen oder anderen, der sich mit derartigen Basics noch herumquält (wie wir das früher auch mal gemacht haben  ;D)

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz