Autor Thema: Backend Lesefeld setzen  (Gelesen 2776 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Backend Lesefeld setzen
« am: 22.10.03 - 23:53:21 »
Hi,

ich setze wie folgt in einem Script ein Backend-Feld:
doc.pReaders = "[Admin],[All]" 'Leserfeld

Das Feld ist ein Leserfeld.

Allerdings zeigt mir die View die Doks nicht mehr an, egal welche Rolle ich habe.
Wenn ich statt dem Komma ein Doppelpunkt mache geht es auch nicht.

Per Formelsprache würde ich es so machen:
@Trim(@Unique("[Admin]"  : "[All]")
(hab ich mir aus einem Beispiel von mir gezogen wo es klappt)

Wie kann ich per Script die beiden Rollen übergeben?

TMC
« Letzte Änderung: 22.10.03 - 23:55:13 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:Backend Lesefeld setzen
« Antwort #1 am: 23.10.03 - 00:09:17 »
Jo, det geht so nicht, das setzt nur einen String, statt zwei Werte. Gibt mehrere Varianten, das zu tun, zum Beispiel:

Dim it as NotesItem

Set it=Doc.ReplaceItemValue("pReaders","[Admin])
it.isreaders=True
it.AppendToTextList("[All"])
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 TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Backend Lesefeld setzen
« Antwort #2 am: 23.10.03 - 18:27:08 »
danke, so gehts.

Gruß,
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:Backend Lesefeld setzen
« Antwort #3 am: 23.10.03 - 18:31:07 »
Schön, vielleicht bis später, mache zwischendurch was für die Kondition .....
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:Backend Lesefeld setzen
« Antwort #4 am: 23.10.03 - 19:53:07 »
Während Semeaphoros beim Leute-verkloppen ist (naja, Judo ;-), hab' ich mal weiter gedacht ;-))

So geht es vielleicht eleganter:
doc.DEINMULTIVALUEFELD = Evaluate ({"[ReadersAll]" : "[Administrators]" : "[DBManagers]"})

Danach natürlich noch NotesItem.IsReaders = true, wie schon von Jens beschrieben.

So richtig bequem ist es, wenn man eine Function hat, die beliebig Arrays zusammenfügt - das ist auch eine richtig nette Programmierübung für einen Begabten wie Dich (deswegen sende ich Dir auch nicht mein AddArray - ätsch-bätsch).

MeinVariant = AddArray (MeinVariant, Neue(r) Wert(e))

Dabei sollte es dann egal sein, ob MeinVariant noch leer ist oder NeuerWert vielleicht nur ein String ...

Wie gesagt - 'ne coole Übung ;-)

Ciao - und sag' an, wenn ich / wir helfen kann / können,
Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Backend Lesefeld setzen
« Antwort #5 am: 23.10.03 - 22:52:11 »
Aha, wärend ich meine Muskeltn bewegt habe, hast Du Bernhard chemische Reaktionen durchgeführt irgendwo oberhalb Deines Halses :-)

Zur Sache: Wie schon eben beim Name-Thread erwähnt, auch wenns gut aussieht, würde ich hier in jedem Falle nicht über Evaluate die Sache laufen lassen, da Evaluate an und für sich ein relativ "teures" Statement ist. Dies verschärft sich, da man das Item ja trotzdem noch braucht, um es als Reader zu deklarieren.

Die Denkaufgabe, die Du da TMC gegeben hast, ist seit R5 schon so gut wie gelöst: Eine Handvoll langersehnter Funktionen, zum Beispiel:


Appends one array to the end of another array and returns the result as a third array.

Syntax
ArrayAppend( sourceArray1, sourceArray2 )

Dabei darf sourceArray2 auch ein Skalar sein. Du darfst also Deine Funktion ruhig behalten ....... :-))
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:Backend Lesefeld setzen
« Antwort #6 am: 23.10.03 - 23:26:42 »
Hi, Semeaphoros,

also ArrayAppend ist echt nicht das Gelbe vom Ei. Probier' mal folgendes:
Code
Sub Click(Source As Button)
   Dim v1 As Variant
   Dim v2 As Variant
   Dim v3 As String
   
   v2 = "Huhu"
   v3 = "Hallo"
   
   v1 = Arrayappend (v2, v3)
   
End Sub

Da lob ich mir meine eigene Routine ;-)  Und wie gesagt: Es ist eine wirklich nette Übung ;-)

Bernhard


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Backend Lesefeld setzen
« Antwort #7 am: 23.10.03 - 23:45:45 »
Wer lesen kann ....... :-)

Code
Sub Click(Source As Button)
   Dim v1 As Variant
   Dim v2 (0) As Variant
   Dim v3 As String
   
   v2(0) = "Huhu"
   v3 = "Hallo"
   
   v1 = Arrayappend (v2, v3)
   
End Sub

...... und schon gehts, steht aber auch in meinem Posting, such mal nach Skalar ......

Natürlich ist ArrayAppend nicht besonders flexibel uns sehr rudimentär, aber meistens reicht es. Und, eingebauter Code ist bedeuuuuuutend schneller (und häufig auch sicherer) als die eigenen Bib-Routinen.

Das ist aber ein Thema, das auf meiner Vortrags-Vorschlagsliste steht. Mal sehen, ob ich den irgendwo bei einer Veranstaltung platzieren kann.
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:Backend Lesefeld setzen
« Antwort #8 am: 24.10.03 - 17:22:32 »
Ja, ja, das ist alles schon klar (gewesen), aber mir geht es darum, bei immer wieder vorkommenden Aufgaben (z.B. Autorenfelder setzen usw.) nicht jedes Mal das gleiche Zeugs abchecken zu müssen (ist Array noch leer, ist es skalar, was füge ich hinzu etc.).

Autorenfeld "erweitern" (ich weiß ja nicht, was da gerade drin steht ...):

doc.Autoren = ArrayAppend (doc.Autoren, vResponsibles)

soll einfach funktionieren - alle Checks werden in ArrayAppend gemacht. doc.Autoren ist leer und der zweite Parameter ist gar kein Variant, sondern session.UserName - na und ? Funktioniert, die Arbeit macht die Function.

So meinte ich das.
Wenn es natürlich Performance-kritisch wird (zehntausende Änderungen im selben Dokument), dann muß man sich natürlich was anderes überlegen. Bei jeweils wenigen Änderungen in zehntausenden Dokumenten ist es dann schon wieder wurscht, da das Laden der Backend-Docs der Flaschenhals sind.

Wie siehst Du das ?

Ciao,
Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Backend Lesefeld setzen
« Antwort #9 am: 24.10.03 - 18:41:00 »
Nein, das sehe ich grundsätzlich auch so, ich würde den Arrayappend und Consorte irgendwie in eine Function kapseln, die dann da rundherum noch die Tests baut, aber bestimmt nicht mehr wie in R4 den Array abklopfen und Redim und ähnlichen "Hilfsmitteln" arbeiten. Sicher, wenns dann echt um Performance geht, dann muss mans anders machen, aber da müsste man dan eh wohl eher zur API greifen, wenns dann sooo kritisch wird.
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz