Autor Thema: Auswahl eines Servers...  (Gelesen 5196 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