Autor Thema: Listenfeld  (Gelesen 3960 mal)

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Listenfeld
« am: 17.03.05 - 13:05:41 »
Moinsen ihr Allwissenden ;)

so ich habe einen Array mit Daten und möchte diese daten nun in ein listenfeld schreiben.

Ich mache das wie folgt:

For i = 0 To UBound( Array ) + 1
  String = String + Array(0, i) + ";" + Array(1,i) + Chr(13)   + Chr(10)
Next

doc.Listenfeld = String

Jedoch bekomme ich immer nur den Wert der Dimension [0,0] und [0, 1], der Rest wird aber nicht angezeigt, obwohl alle Daten in dem String entahlten sind.

Das ganze geschiet im Queryopen der Maske. Mhh sonst noch was... ich denke das wars an info. Jemand einen plan???

Mfg

stitze
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Listenfeld
« Antwort #1 am: 17.03.05 - 13:09:44 »
Das Semikolon ist kein Trenner für Listenfelder - sie spielen nur bei der Eingabe, ggf. bei der Ausgabe im FrontEnd eine Rolle.

Dim aResult () as string
Redim aResult (0 to Ubound (Array)
For i = 0 To UBound( Array ) + 1
aResult (i) = Array(0, i) & ";" & Array(1,i)
Next

So in etwa ...

Bernhard
« Letzte Änderung: 17.03.05 - 13:21:44 von koehlerbv »

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #2 am: 17.03.05 - 13:16:39 »
Hallo Bernhard

das Semikolon soll nicht als trennzeichen dienen, sondern einfach mit im feld stehen, der Cr (Chr(13) und Lnf (Chr(10), dient eigentlich dazu einen neuen Datensatz anzuzeigen, davon bin ich jedenfalls ausgegangen weil das so gepeichert wird, wenn ich die per hand eingebe.
wenn ich es auf deine weise mache steht gar kein datensatz drinne.
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Listenfeld
« Antwort #3 am: 17.03.05 - 13:19:59 »
Wie schreibst Du denn Bernhards Array in das Feld?

Hoffentlich so:

doc.Listenfeld = aResult
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Listenfeld
« Antwort #4 am: 17.03.05 - 13:23:19 »
Noch ein Hinweis: Der String-Concenator ist nicht das "+", sondern "&". Und für die Zeilenschaltung reicht Chr$ (10) (beachte das $).

Ist das doc.Listenfeld ein Multivalue-Field ?

Bernhard

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #5 am: 17.03.05 - 13:31:39 »
mh ich schreibe den array gar nicht direkt in das listenfeld sondern basstel mit erst nen string zusammen? nicht richtig so?

ne ein ein single value feld, besagt doch nur das ich einen wert auswählen darf oder?

wir sind gezwungen durch styleguide den + operator zum konkatieneiern zu benutzen, ich weiss die diskussion hatten wir schonmal ich hab auch hier im betrieb darauf verwiesen aber ... naja.

When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Listenfeld
« Antwort #6 am: 17.03.05 - 13:34:21 »
Ach, Du willst die Auswahlliste aufbauen?

Dann in ein Multivalue-Feld (hidden) speichern und per Formel in die Auswahlliste reinnehmen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Listenfeld
« Antwort #7 am: 17.03.05 - 13:39:19 »
Dieses Konstrukt

For i = 0 To UBound( Array ) + 1

wird zu einem Laufzeitfehler führen, da Ubound + 1 "out of range" ist.

Bernhard

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #8 am: 17.03.05 - 13:55:49 »
Zu Eins, ja ich möchte eine Auswahlliste aufbauen, aber es soll nur möglich sein 1 wert auszuwählen.

zu zwei, nee führt nicht zu nem out of range ;), wenn ich nicht plus 1 addiere läuft er die schleife einmal zu wenig durch, hat mich auch gewundert, aber es ist so, schwöre :)
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Listenfeld
« Antwort #9 am: 17.03.05 - 14:04:07 »
Wenn Du eine Auswahlliste aufbauen willst, dann brauchst dum dem Feld nicht die Werte übergeben.

Du musst die Werte einem berechneten mehrfachwerte Feld (evtl- berechnet zur Anzeige, Wert = FeldName) zuweisen.

Deswiteren brauchst Du ein zweites Feld vom Typ Dialogliste (Beispiel). In der "Formel für Auswahl" trägst Du das 1. feld ein.

Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #10 am: 17.03.05 - 14:05:46 »
Ich will das feld aber über ls füllen und nicht über ne formel oder sonst was und ich will auch kein dialogfeld um das feld zu füllen.
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Listenfeld
« Antwort #11 am: 17.03.05 - 14:10:06 »
Ich habe auch nicht bestritten, dass das Feld per LS befüllt wird.

Du hast gesagt, dass es möglich sein soll 1 Wert auszuwählen. Dazu musst Du dem Benutzer eine Auswahlliste zur Verfügung stellen.

Beispiel:
Feld 1 = tmpMyAuswahl = berechnet zur Anzeige, mehrfachwerte
Feld 1 wird über LS befüllt.

Feld 2 = fldAuswahl = bearbeitbar, Listenfeld (oder was du auch immer möchtest), keine Mehrfachwerte zulassen
Formel für Auswahl = tmpMyAuswahl


Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #12 am: 22.03.05 - 09:24:54 »
Hi Dirk,

jo so sollte das klappen, Danke, ich probier das mal ;)
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Listenfeld
« Antwort #13 am: 23.03.05 - 14:40:12 »
Jo danke Dirk so hat es funktioniert.

Gibt es aber keine Möglichkeiten Werte direkt in ein Listenfeld zu schreiben, ich denke da zum Beispiel an ReplaceItemValue.
Oder kann ich einen Array an ein Listenfeld übergeben oder ne Textliste???

Mit freundlichen Grüßen

stitze
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Listenfeld
« Antwort #14 am: 23.03.05 - 20:22:54 »
@Stitze
Gibt es aber keine Möglichkeiten Werte direkt in ein Listenfeld zu schreiben, ich denke da zum Beispiel an ReplaceItemValue.
Oder kann ich einen Array an ein Listenfeld übergeben oder ne Textliste???

Ich glaube Du verwechselst hier die Begriffe Array/Textliste/Listenfeld bzw. Dir ist der Unterschied nicht klar. Schau Dir das mal in der Designerhilfe und/oder in einem Buch an.

Natürlich kannst Du mit der ReplaceItemValue Methode der NotesDocument-Klasse direkt in ein Item z.B. Werte schreiben. Das hast Du doch oben schon gemacht mit "doc.Listenfeld = StringArray" ??? Du hast Da nur die "Extended Class"-Syntax angewendet, siehe Designerhilfe unter der ReplaceItemValue-Methode.

@Bernhard
For i = 0 To UBound( Array ) + 1
wird zu einem Laufzeitfehler führen, da Ubound + 1 "out of range" ist.
Ich bin mir jetzt nicht sicher was Du hier mit "Out of Range" meinst. UBound gibt doch ein Integer zurück. Ich würde da jetzt erwarten dass die For-Schleife dann eben zum Ubound-Rückgabewert + 1 durchlaufen wird, aber kein "out of Range"...
Eher hätte ich hier die Befürchtung, dass der Veriablenname "Array" intern schon vergeben ist. Bin mir aber nicht sicher, scheinbar ist des das nicht. Sollte man IMHO aber trotzdem vermeiden.
« Letzte Änderung: 23.03.05 - 20:24:42 von TMC »
Matthias

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


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Listenfeld
« Antwort #15 am: 23.03.05 - 20:44:10 »
Aus allem, was gesagt wurde, befürchtet Bernhard, dass es einen "Subscript out of range" gibt, was durchaus naheliegend ist, falls man mit der Laufvariablen hier auf die Array-Elemente zugreifen will (was ja normalerweise der Sinn einer solchen Schlaife ist)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Listenfeld
« Antwort #16 am: 23.03.05 - 20:45:50 »
Ich bin mir jetzt nicht sicher was Du hier mit "Out of Range" meinst. UBound gibt doch ein Integer zurück. Ich würde da jetzt erwarten dass die For-Schleife dann eben zum Ubound-Rückgabewert + 1 durchlaufen wird, aber kein "out of Range"...

Ich denke er meint, dass es in dieser Zeile passiert:

aResult (i) = Array(0, i) & ";" & Array(1,i)

weil i beim letzten Durchlauf ja um 1 größer wäre als die Arraybound selber. Das würde ich auch annehmen. Kann sein, dass da vielleicht die Option gesetzt ist, die das Zählen bei Arrays erst bei 1 anfangen lässt (Option Base 1, glaube ich)
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Listenfeld
« Antwort #17 am: 23.03.05 - 20:52:22 »
Ah, OK, danke für die Erklärung, jetzt verstehe auch ich es  ;)
Matthias

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


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Listenfeld
« Antwort #18 am: 23.03.05 - 21:31:56 »
Thomas, wenn Option Base 1 gesetzt ist, müsste im Gegenzug i=1 statt i=0 genommen werden in der For-Schleife, sonst gibts dasselbe Problem an der anderen Seite des Arrays
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Listenfeld
« Antwort #19 am: 25.03.05 - 01:13:10 »
Danke, Jens, für Deine Erklärung von der "unteren Seite" her und für die weitere Beachtung des Threads.

Für "stitze": Jeglicher Zugriff auf Elemente mit Indizes ausserhalb von Lbound und Ubound des Array führen GARANTIERT zu eine out-of-range error. Garantiert. Da kannst Du schwören, was Du willst. Das einzige, was Du da noch treiben kannst, ist ein Redim innerhalb der Schleife, sonst scheppert es zwangsläufig. Poste einen Code, der das Gegenteil beweist, oder schweige still  ;D

Zitat
Oder kann ich einen Array an ein Listenfeld übergeben oder ne Textliste???

Doch, sicher. Du kannst jedes Array direkt einem Item zuweisen:
Dim aTest (0 to 2) As String
aTest (0) = "A"
aTest (1) = "B"
aTest (2) = "C"

docCurrent.ListField = aTest

Ganz einfach ...

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz