Autor Thema: ...wie erstellt/befüllt man ein Array ?  (Gelesen 9842 mal)

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
...wie erstellt/befüllt man ein Array ?
« am: 25.05.10 - 14:41:05 »
...also entwicklungs-flasche :P - darf ich euch wieder quälen ?

ich lese in einer while-wend schleife mit getitemvalue z.B. email Adresse heraus - das funkt !
nur auslesen ist nicht genug ich sollte die gesammelt wegschreiben weil ich diese dann in einem neuen Dokument
brauche zum erstellen des SendTo Buttons

meine frage wie lege ich das array an und wie kann ich in der schleife die
werte dort hineinschreiben


in der 2ten stufe möchte ich dieses soeben erzeugte Array an eine neues Dokument übergeben, in dem neuen
dokument sollen die einzelnen arraywerte via Checkbox im Dokument nummer B anklickbar sein.....

vIELEN dank für Euer Feedback

LG/Hannes

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #1 am: 25.05.10 - 15:28:35 »
Hier ein paar Brocken, aus denen Du Dir das zusammenbasteln kannst:

Dim meinarray As Variant
Redim meinarray (5) '-> jetzt 6 Elemente, Element 1 = meinarray (0)
Ubound (meinarray) '-> die Obergrenze, hier also jetzt 5
Redim Preserve meinarray (6) '-> jetzt ein Element mehr, die alten Einträge bleiben erhalten (wg. Preserve)
Redim Preserve meinarray (Ubound (meinarray) + 1)'-> jetzt noch ein Element mehr, aber dynamisch
meinarray (3) = "Onkel Otto" '-> das 4. Element hat jetzt den Wert "Onkel Otto"
NotesDocument.MeinFeld = meinarray '-> MeinFeld enthält jetzt den Inhalt von meinarray, dieses Feld könntest Du als Formel für Auswahl in dem Ankreuzfeld verwenden

Damit kommst Du doch bestimmt etwas weiter, oder?

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #2 am: 25.05.10 - 16:50:06 »
Eine etwas leichtere Darstellung aus der Hilfe zum Thema "Array"

Dim states(1 to 50) As String
states(1) = "Alabama"
states(2) = "Alaska"
states(3) = "Arizona"
' and so on.
Print states(2)
' Output: Alaska

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #3 am: 25.05.10 - 18:51:39 »
Dim states(1 to 50) As String

Das würde ich mir von Anfang an nicht angewöhnen. Standardmäßig fängt Notes bei 0 an, also

Dim states(3) as String

Damit legst du eine Array-Variable mit 4 (0 - 3) Elementen an.

Du machst dir und anderen das Leben dadurch nur leichter, denn jede Dokumentation und auch jede Hilfestellung, z.B. in Foren gehen davon aus.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #4 am: 26.05.10 - 07:03:51 »
danke mal vorab - aber wie geht man an die sache ran wenn das auslesen von email adressen nicht abschätzbar ist ?
d.h. mal können es 20 mal 100 sein ?

ob die Übergabe der gesammelten Werte richtig ist ? vielleicht könnt ihr dazu noch etwas sagen ?

ich hätte mir mal folgendes zusammengestellt (das wichtigste halt)

Dim myNames () As Variant
...
in der while not schleifen
Redim Preserve myNames(arrayIndex)
myNames(arrayIndex) = emailAddress(0)
arrayIndex = arrayIndex + 1      

übergabe:
Set item = maildoc.ReplaceItemValue    ( "Empfaenger", myNames )
      

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #5 am: 26.05.10 - 07:27:41 »
Hallo Scotty,

nimm statt
Redim Preserve myNames(arrayIndex)
...
arrayIndex = arrayIndex + 1
doch das von Peter vorgeschlagene:
Redim Preserve meinarray (Ubound (meinarray) + 1)'-> jetzt noch ein Element mehr, aber dynamisch
denn das kommt mit einer Zeile aus und falls Dein maildoc eine normale Memomaske ist, dann sollte die Übergabe ein
Code
maildoc.SendTo = myNames
sein. Es sei denn, Du benötigst das Item nicht mehr im Folgecode.

CU,
Axel

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #6 am: 26.05.10 - 07:39:14 »
Das sieht doch gut aus. Unabhängig davon, ob es nun 20 oder 100 sind, verlängerst Du mit jeder weiteren Adresse myNames mit Redim Preserve. Irgendwann könntest Du allerdings ein Größenproblem des Feldes bekommen (vielleicht > 3000 Adressen?), aber diese Grenze sollte eher theoretisch sein. Da Du die Adressen via Checkbox auswählen willst, sollten es sowieso nicht zuviele sein, sonst würde ich die Checkbox lieber sein lassen.

Sind alle Adressen unterschiedlich oder können die in den zu durchsuchenden Dokumenten doppelt auftreten? Bei Bedarf solltest Du noch dafür sorgen, dass doppelte Adressen nicht in myNames geschrieben werden.

Die Übergabe ist korrekt, alternativ kannst Du auch

maildoc.Empfaenger = myNames

schreiben, das Ergebnis ist identisch.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #7 am: 26.05.10 - 07:49:13 »
Hallo Scotty,

nimm statt
Redim Preserve myNames(arrayIndex)
...
arrayIndex = arrayIndex + 1
doch das von Peter vorgeschlagene:
Redim Preserve meinarray (Ubound (meinarray) + 1)'-> jetzt noch ein Element mehr, aber dynamisch
denn das kommt mit einer Zeile aus
Allerdings brauchst Du dann doch noch eine Zeile mehr, weil Du dann prüfen musst, ob der oberste Wert gesetzt ist

If myName (Ubound (myName)) <> "" Then
   Redim Preserve myName (Ubound (myName) + 1)
End If
myName (Ubound (myName)) = ...

Prüfst Du das nicht, wird myName (0) immmer leer sein. In Deinem konkreten Anwendungsfall halte ich es für angebracht, mit einer Laufvariablen (arrayIndex) zu arbeiten.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #8 am: 26.05.10 - 08:05:51 »
@Peter !

Danke, im Moment scheitere ich mit der Checkbox Sache...
Im Schnitt werden es ehr nur 4-5 mögliche Adressen sein.

In meinem Mail-Formular: das Checkbox Feld wie muss das aufgebaut sein ? computed.... ????
Ich schaffe es nicht die Array Werte ins Mailformular zu übertragen

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #9 am: 26.05.10 - 08:23:51 »
In das neue Dokument schreibst Du Dein array in ein beliebiges Feld (kann unsichtbar sein). Der Feldname sei AuswahlSendTo. Falls Du das Feld in der Maske anlegst, denk dran, Mehrfachwerte zuzulassen.

Für die Checkbox benötigst Du ein eigenes Feld (bearbeitbar, Typ Checkbox (deutsch Kontrollkästchen)).

In der Eigenschaftenbox des Feldes in der zweiten Lasche änderst Du von "Auswahl eingeben (eine pro Zeile)" in "Formel für Auswahl verwenden" (wenn Du einen englischen Client hast, musst Du das entsprechend übersetzen) und trägst als Formel AuswahlSendTo ein (den Namen des Feldes, in das Du Dein Array geschrieben hast).


Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #10 am: 26.05.10 - 09:19:02 »
@Peter !

....ja das hätte ich auch gemacht nur bekomme ich eine Fehlermeldung
"Illegal use of PROPERTY"

Ich hab englisches Frontend :-)

Via Action-Bar Button führe ich folgendes durch:

Set uinewdoc = workspace.ComposeDocument ( "", "", "DBMemo" )
Set maildoc=uinewdoc.document
uinewdoc.SendTo = myNames
''''Set item = maildoc.ReplaceItemValue    ( "SendTo", myNames )
Call uinewdoc.FieldSetText ( "SMNummer", uismnummer )
Call uinewdoc.FieldSetText ( "Subject", uibetreff )


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #11 am: 26.05.10 - 09:38:59 »
Der Fehler wird wohl bei uinewdoc.SendTo = myNames liegen. uinewdoc ist ein NotesUIDocument, kein NotesDocument.

Ich würde das Dokument im Backend erstellen, dann die Felder befüllen und erst danach öffnen.

Dim maildoc As New NotesDocument (db)
maildoc.Form = "DBMemo"
maildoc.Subject = uibetreff
maildoc.SendTo = myNames
maildoc.SMNummer = uismnummer
Call workspace.EditDocument (True, maildoc)

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #12 am: 26.05.10 - 09:57:37 »
....hey das mit dem Backend Dokument erzeugt geht super - wieder etwas gelernt DANKE !!!!

Aber jetzt steckt der Fehler im Mail-Form.
Ich habs hier mal zum Anschauen - vielleicht bin ich einfach nur blind oder doch soooo schlecht im programmieren :-)

http://www.lichtwerk.at/temp-work/Array-Mail.nsf

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #13 am: 26.05.10 - 10:01:45 »
Ja aber nur wenn du die LocalAccessProtection rausnimmst und Die Verschlüsselung ausschaltest.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #14 am: 26.05.10 - 10:04:24 »
Die Datenbank hat lokalen Zugriffsschutz und ist zudem wohl auch mit Notes 8 erstellt. Ich kann nur bis Version 7 lesen. Erstell doch bitte eine Kopie Deiner Datenbank mit der Dateiendung ns7 (ich hoffe das geht auch für 7 so, bei 4 und 5 hat das funktioniert), und in der ACL gibst Du Default Managerrecht.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #15 am: 26.05.10 - 10:10:22 »
uppss Sorry !

hier jetzt die neue version
http://www.lichtwerk.at/temp-work/Array-Mail2.nsf

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #16 am: 26.05.10 - 10:12:12 »
Die Datenbank hat lokalen Zugriffsschutz und ist zudem wohl auch mit Notes 8 erstellt. Ich kann nur bis Version 7 lesen. Erstell doch bitte eine Kopie Deiner Datenbank mit der Dateiendung ns7 (ich hoffe das geht auch für 7 so, bei 4 und 5 hat das funktioniert), und in der ACL gibst Du Default Managerrecht.

ich hätte gemeint das dein 7er Client das kann - bitte bestätige meinen Glauben ?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #17 am: 26.05.10 - 10:15:52 »
Ok, die Datenbank habe ich jetzt und kann sie auch öffnen. Jetzt suche ich nur noch das Problem. Was muss ich tun, damit der Fehler auftritt?

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #18 am: 26.05.10 - 10:25:46 »
...also ich hab jetzt nur das Mail-Form rauskopiert...
weil hier 100%ig der Fehler steckt....im Feld "Emfpaenger" stehen die z.B. 2 email-Adressen (aus dem Array) mit Komma getrennt drinnen

Kannst du anhand deines beschriebenen Wegs (Backend-dokument erzeugen) in Kombination mit diesem Form etwas erkennen....?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: ...wie erstellt/befüllt man ein Array ?
« Antwort #19 am: 26.05.10 - 10:47:45 »
Funktioniert bei mir, welcher Fehler tritt bei Dir auf?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz