Autor Thema: Auswahl eines Servers...  (Gelesen 5294 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Auswahl eines Servers...
« am: 06.10.04 - 21:46:58 »
Ich suche nach einer Möglichkeit (Formel oder Script, egal), dem User eine Auswahlmöglichkeit für einen Server zu geben (siehe Bild).
Dabei soll sich die Liste aus den verfügbaren Servern zusammensetzen.
Also ähnlich wie es kommt, wenn man z.B. Strg+O im Client drückt und dann einen Server auswählen kann.
Als Rückgabewert benötige ich dann den Servernamen.
Matthias

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


Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #1 am: 06.10.04 - 22:14:58 »
So mache ich es in der Regel:

_Lookup := @Name([Abbreviate];@DbColumn(""; "<DeinServerName>":"names.nsf";"($Servers)";1));
@If(@IsError(_Lookup);@Return("");"");
_Prompt := @Prompt([OkCancelList]:[NoSort];"Server wählen";"Bitte wählen Sie den Server aus:";"";"Local":_Lookup);
@Prompt([ok];"";@ReplaceSubstring(_Prompt;"Local";""))


<DeinServerName> kann auf verschiedene Arten berechnet werden,
hardcodiert oder
@Subset(@DbName;1)

Das "Local" wird noch doch "" mit der Formel im 2. Prompt ersetzt.

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Auswahl eines Servers...
« Antwort #2 am: 06.10.04 - 22:21:45 »
Ahh, vielen Dank Andreas  :)

Hab schon gemeint es gäbe einen direkten @Formel-Befehl und finde das nur nicht.

Aber so klingt das nach einem sehr gangbaren Weg, sich die Infos aus der names.nsf zu holen.


Matthias

Matthias

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


Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #3 am: 06.10.04 - 22:22:53 »
Es gibt noch

List := @Prompt( [ChooseDatabase];"";"";"";"");

result:
 
(0) - server name
@Subset(_List;1)

(1) - file name (path)
@Subset(@Subset(_List;2);-1)

(2) - Database title
@Subset(@Subset(_List;3);-1)
 


In LotusScript:
 
Prompt method
 
Note This method is new with Release 5.
 
Defined in
NotesUIWorkspace
 
Syntax
variant = notesUIWorkspace.Prompt( type%, title$, prompt$ [, default ] [, values ] )
 
but as type use 13.
 
Both are not documented so use it with caution...


Aber ob es das ist, was Du suchst bezweifle ich, da dort auch bereits Datenbanken angezeigt werden.

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Auswahl eines Servers...
« Antwort #4 am: 06.10.04 - 22:26:04 »
Danke, Andreas, diese nicht dokumentierten Methoden kannte ich allerdings schon, und liefern mir - bzw. dem Anwender - schon wieder zuviel Infos (wie Du bereits vermutet hast).
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: Auswahl eines Servers...
« Antwort #5 am: 06.10.04 - 22:30:14 »
Normalerweise mache ich sowas ja nicht, aber ... ich will die Function hiermit auch zur Diskussion stellen:

Code
Function GetAllServerNames As Variant
'=========================================================================================================
     ' Purpose: Get a list of all NABs from NOTES.INI and read there all server names
     '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     ' Parameters: None
     '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     ' Returns: Array of all found server names
     '------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' Created by: Bernhard Koehler on 05.05.2004 Modified by:
     '=========================================================================================================
Dim session As New NotesSession
Dim dbCurrent As NotesDatabase
Dim dbNAB As New NotesDatabase ("", "")
Dim viewNABServers As NotesView
Dim collNABViewCollection As NotesViewEntryCollection
Dim viewentryNABView As NotesViewEntry
Dim vColumnValues As Variant
Dim vAddressBooks As Variant
Dim szConfigAddressBooks As String
Dim aServers (0) As String
Dim vServers As Variant
Dim iLoop As Integer
Dim iEntries As Integer
Dim szCurrentServer As String
On Error Goto ErrorRoutine
'The default value:
GetAllServerNames = "lokal"
'Build a list of all of the user's address books:
szConfigAddressBooks = session.GetEnvironmentString ("Names", True)
'Did we found address books?
If szConfigAddressBooks = "" Then
Exit Function    'There are no more address books by setup ...
End If
vAddressBooks = Evaluate (|@Explode ("| & szConfigAddressBooks & |"; ",")|)
'Eliminate possible blanks:
For iLoop = 0 To Ubound (vAddressBooks)
vAddressBooks (iLoop) = Trim$ (vAddressBooks (iLoop))
Next
'Open all found address books and read the server names:
aServers (0) = "Lokal"    'the default value - we need an array for the next actions
vServers = aServers
Set dbCurrent = session.CurrentDatabase   'On which server we have to perform this operation ?
szCurrentServer = dbCurrent.Server
For iLoop = 0 To Ubound (vAddressBooks)
If dbNAB.Open (szCurrentServer, vAddressBooks (iLoop)) Then      'only continue if we could open the specified NAB !
Set viewNABServers = dbNAB.GetView ("($Servers)")
If Not (viewNABServers Is Nothing) Then    'Personal address books do not contain such a view !
Set collNABViewCollection = viewNABServers.AllEntries
'Loop through all Entries:
Set viewentryNABView = collNABViewCollection.GetFirstEntry ()
While Not viewentryNABView Is Nothing
vServers = Arrayappend (vServers, viewentryNABView.ColumnValues (0))
Set viewentryNABView = collNABViewCollection.GetNextEntry (viewentryNABView)
Wend
End If  'of "Is a public NAB"
End If  'of "NAB could be opened"
Set dbNAB = New NotesDatabase ("", "")
Next 'of "Loop through all NABs set up in the NOTES.INI
If Ubound (vServers) > 0 Then   'There is more than 1 server - add the "All Servers" option:
vServers = Arrayappend (vServers, "-Beliebiger Server-")
End If
GetAllServerNames = vServers
Exit Function
ErrorRoutine:
Call ErrorHandler ("GetAllServerNames")
Exit Function
End Function

Hinweise auf Denkfehler würden mich sehr interessieren !

Bernhard

Nachtrag:
Diese Function arbeitet lokal wie auf dem Server und bietet die Server, die jeweils dort bekannt gemacht wurden. Die Werte "lokal" bzw. "Alle Server" wurden spezifisch benötigt (Agent-Steuerung) und müssten im Fall des Falles wieder entfernt werden.
« Letzte Änderung: 06.10.04 - 22:35:18 von koehlerbv »

Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #6 am: 06.10.04 - 22:40:12 »
Das sieht doch mal nach einem gut kommentierten und mit Error Handling versehenem Script aus  :)

Eine kleiner Vorschlag: Abfangen evtl. doppelter Servernamen.

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Auswahl eines Servers...
« Antwort #7 am: 06.10.04 - 22:46:15 »
Jo, danke Bernhard.

Macht mir einen sehr guten Eindruck  :)

Finde jetzt auch auf Anhieb keinen Verbesserungsvorschlag für das Script  :D

Matthias
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: Auswahl eines Servers...
« Antwort #8 am: 06.10.04 - 22:48:03 »
Das sieht doch mal nach einem gut kommentierten und mit Error Handling versehenem Script aus  :)

Eine kleiner Vorschlag: Abfangen evtl. doppelter Servernamen.
Andreas

Ich habe mir das vor Jahren mal eingebläut, und heute wirst Du kaum Code bei mir finden, der anders aussieht. Und derartiges (zum Bleistift eine fixe Repair-Routine) wird dann schnellstmöglich nach Diensterfüllung wieder weggeworfen. Das Prinzip hat sich wirklich bewährt !

Das mit den doppelten Servernamen: Jo, ein Evaluate ({@Unique ... sollte da noch 'rein.

Bernhard

Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #9 am: 06.10.04 - 22:48:35 »
Die Notes-Funktion zur Auswahl des Servers nachzuprogrammieren, dürfte aufwendig sein: Alle Server im Named Network + & ( ;D ) alle Server, für die ich ein Verbindungsdokument habe + Server, deren Kacheln ich auf dem Desktop habe.

Bei mir ist die Liste (leider) sehr lang...

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Auswahl eines Servers...
« Antwort #10 am: 06.10.04 - 22:51:04 »
Ansätze (wenn Du das wirklich vorhast, Andreas):
Desktop auswerten und vor allem die location docs  ;D

FILL SCHBASS !

Bernhard

Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #11 am: 06.10.04 - 22:51:08 »
Jetzt noch alles objekt-orientiert  ;)

Was meinst Du? Eine eigene Klasse, ein paar Methoden - das wäre doch was für Matthias ;D

Andreas

Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #12 am: 06.10.04 - 22:52:40 »
Ansätze (wenn Du das wirklich vorhast, Andreas):
Desktop auswerten und vor allem die location docs  ;D

FILL SCHBASS !

Bernhard
Den hol ich mir auf andere Weise  ;D
Das muss ja wohl nicht wirklich sein.
Tief im inneren von Notes muss es das ja irgendwo geben... Keiner hat es bis jetzt ausgegraben, oder ?

Andreas

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Auswahl eines Servers...
« Antwort #13 am: 06.10.04 - 22:53:19 »
Hm, in irgend einer API-Ecke hab ich sowas mal gesehen, hab grad keine Zeit, um das zu suchen, vielleicht schaffe ichs am WE das mal genauer anzusehen
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: Auswahl eines Servers...
« Antwort #14 am: 06.10.04 - 22:54:40 »
Was meinst Du? Eine eigene Klasse, ein paar Methoden - das wäre doch was für Matthias ;D

Why not !  :) ;D
Matthias

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


Glombi

  • Gast
Re: Auswahl eines Servers...
« Antwort #15 am: 06.10.04 - 22:55:45 »
Das dachte ich mir doch  ;D

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Auswahl eines Servers...
« Antwort #16 am: 06.10.04 - 23:04:02 »
Für 'ne Klasse müsste die Frage aber etwas beinhalten als "Welche Server kennt der Client ?" Sonst wird das oversized, weil in der Klasse auch nix anderes Funktionales drinstecken würde, aber der overhead wächst ...

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Auswahl eines Servers...
« Antwort #17 am: 06.10.04 - 23:07:39 »
Für 'ne Klasse müsste die Frage aber etwas beinhalten als "Welche Server kennt der Client ?" Sonst wird das oversized, weil in der Klasse auch nix anderes Funktionales drinstecken würde, aber der overhead wächst ...

Das stimmt, so 1:1 in eine Klasse gesteckt bringt das nix vorteilhaftes.
Da bräuchte es schon ein paar mehr Properties die man abfragen will (oder vielleicht setzen??), dass sich das rentiert.
Matthias

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


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz