Autor Thema: Servername leer  (Gelesen 4388 mal)

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Servername leer
« am: 07.12.06 - 07:12:17 »
Hallo, ich benötige wieder Mal Hilfe!

Ich benötige der Servername, allerdings bekomme immer eine leere Zeichenkette zurück wenn ich auf der aktuelle Server diese abfragen möchte.

Kann mir jemand sagen wie ich darauf kommen kann?

Danke Mal

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Servername leer
« Antwort #1 am: 07.12.06 - 07:17:52 »
Indem Du Dein Script auf dem Server laufen lässt. Ein leerer Servernamen (bei welcher Funktion auch immer, meine Kristallkugel ist schon auf Weihnachtsferien) deutet darauf hin, dass das Script/die Formel lokal auf Deiner Wokstation läuft.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Servername leer
« Antwort #2 am: 07.12.06 - 07:26:29 »
Danke m3 soweit war ich schon.

Wie gesagt ich benötige diese String!
egal wie ich es mache (mit session.CurrentDatabase.Server oder mit der Environ Funktion) bekomme ich eine leer Zeichenkette.

Anders Formuliert:
Gibt es eine Funktion die mir auf den aktuellen Server der Servername zurückgibt?

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: Servername leer
« Antwort #3 am: 07.12.06 - 07:50:37 »
Zitat
mit session.CurrentDatabase.Server oder mit der Environ Funktion

Wo liegt denn die "CurrentDatabase" ???

Schau mal unter Datei - Datenbank - Eigenschaften.......

Leere Zeichenkette geben die Methoden/Properties nur zurück, wenn die DB lokal liegt !!
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 Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Servername leer
« Antwort #4 am: 07.12.06 - 08:54:35 »
Sicher liegt diese Mißverständnis an meine Erklärungen....


Ich bin auf den Server CN=Server4/O=MyDomain/C=COM in der names.nsf.
Da lasse ich ein Agent laufen der später auf andere Server laufen soll.
Der Agent durchsucht eine Ansicht, welche tausende Personendokument enthält. Für alle User (und nur die) deren Mailbox auf den aktuellen Server liegt, wird eine Designanpassung in der Mailbox durchgeführt.

Also ich muss für jeden Personendokument der doc.Mailserver vergleichen mit den aktuellen Server (wo ich mich mit der Agent befinde) Erst wenn diese 2 String gleich sind starte ich die Verarbeitung.

Beispiel: Herr Müller hat die Mailbox mail\mueller.nsf und diese liegt auf den CN=Server3/O=MyDomain/C=COM.
Mein Agent lauft momentan auf den CN=Server4/O=MyDomain/C=COM. Es heiß diese Mailbox soll nicht angefasst werden.

Später starte ich den Agent auf den CN=Server3/O=MyDomain/C=COM. Hier muss die Mailbox von Hern Müller angepackt werden.

Damit will ich den Traffic so klein wie möglich halten, weiß aber schon dass ich eine Mailbox auf ein andere Server direkt öffnen könnte, will es aber nicht!

Jetzt die Frage nochmal:
Wie bekomme ich den Servername von der names.nsf wo ich mich befinde?

(bisher habe ich nur die Variable session.CurrentDatabase.parent.username gefunden die den Wert enhält und nicht wie die andere mit eine leere Zeichenkette befühlt ist.
Das ist aber sehr unschön.....)


User in der Ansicht Also ich will eine Abfrage am Anfang machen um den aktuelle Server zu
Da heißt ich mache ein Abfrage am Anfang um zu wissen auf welche Server ich gerade bin

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: Servername leer
« Antwort #5 am: 07.12.06 - 09:04:30 »
Der Agent läuft aif dem Server CN=Server4/O=MyDomain/C=COM in der Datenbank names.nsf.  :)

Mit "session.CurrentDatabase.Server" sollte "CN=Server4/O=MyDomain/C=COM" zurückgegeben werden.  :-:

Aus der Hilfe:
Code
Read-only. The name of the server where a database resides.
Defined in
NotesDatabase
Data type
String
Syntax
To get: serverName$ = notesDatabase.Server
Usage
If the database is on a workstation, the property returns an empty string ("").
The database does not need to be open to use this property.

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 Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Servername leer
« Antwort #6 am: 07.12.06 - 09:12:14 »
danke Dirk aber:

"If the database is on a workstation, the property returns an empty string ("")."

und ich befinde mich in dieser Fall!

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Servername leer
« Antwort #7 am: 07.12.06 - 09:15:31 »
Dann arbeite entweder auf dem Server, oder simuliere den Servernamen durch eine Konstante. Wenn die DB dann auf dem Server kommen soll, kannst du ja das auf das Session.Current... anpassen.

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: Servername leer
« Antwort #8 am: 07.12.06 - 09:24:27 »
Zitat
Ich bin auf den Server CN=Server4/O=MyDomain/C=COM in der names.nsf.

Wenn ICH mit meinem Notes-Client eine Notes_Datenbank auf einem Server öffne und eine Aktion in einer Ansicht aufrufe, bekomme ich den SERVER-Namen zurück.

Hier der Test-Code:
Code
Sub Click(Source As Button)
	Dim sess As New NotesSession
	
	Msgbox sess.CurrentDatabase.Server , , "Test"
	
End Sub

Die Msgbox gibt mir den Servernamen zurück!!!
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 MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Servername leer
« Antwort #9 am: 07.12.06 - 09:29:08 »
danke Dirk aber:

"If the database is on a workstation, the property returns an empty string ("")."

und ich befinde mich in dieser Fall!

Heißt das, du arbeitest lokal? Dann gilt mein Tipp:
Dann arbeite entweder auf dem Server, oder simuliere den Servernamen durch eine Konstante. Wenn die DB dann auf dem Server kommen soll, kannst du ja das auf das Session.Current... anpassen.

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: Servername leer
« Antwort #10 am: 07.12.06 - 09:32:59 »
@Markus

Er schreibt doch:
Zitat
Ich bin auf den Server CN=Server4/O=MyDomain/C=COM in der names.nsf.


??? Deshalb verstehe ich es nicht ???   :-:
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 m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Servername leer
« Antwort #11 am: 07.12.06 - 09:40:12 »
Poste mal mehr Code sowie den Datenbanknamen und Server, in dem dieser Code gespeichert ist.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Servername leer
« Antwort #12 am: 07.12.06 - 09:59:23 »
Kann es vielleicht auch an dem Agenten liegen? Fiel mir gerade dabei ein...

Also, was für ein Agent ist das denn? Auslöser, Ziel?

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Servername leer
« Antwort #13 am: 07.12.06 - 10:21:44 »
Hier mein Code:

Code
	
Dim session As New NotesSession
Dim Currentdb As NotesDatabase	
Dim db As NotesDatabase
Dim view As NotesView
Dim entry As NotesViewEntry
Dim vc As NotesViewEntryCollection
Dim doc As NotesDocument
Dim item As NotesItem
Dim item1 As NotesItem
	
'aktuelle Servername ermitteln
'	CurrentServer = session.CurrentDatabase.Server             'auskommentiert "" wird zurückgegeben
	CurrentServer = session.CurrentDatabase.parent.username        'Nothilfe
	
'log schreiben
	fileNumber% = Freefile
	Open "C:\temp\class.log" For Output As #1
	Print #1, "Agent Start: " + Now()
	Print #1, "CurrentServer: " + CurrentServer 

'Variablen setzen
	Set Currentdb = session.CurrentDatabase
	Set view = Currentdb.getView("vwUMSCheck")
	Set vc = view.AllEntries
	Set entry = vc.GetFirstEntry()
	
'Für alle Entries der Ansicht	
	While Not (entry Is Nothing)
		Set doc = entry.Document		
		If doc.Mailserver(0) = CurrentServer Then
			Set db =   New NotesDatabase("",doc.mailFile(0)+".nsf")
			If Not db.IsOpen Then
				On Error Goto fehler				
				Call db.open("",doc.mailFile(0)+".nsf")
			End If
			
			Set notesNoteCollection = db.CreateNoteCollection(False) 
			Call notesNoteCollection.SelectAllDesignElements( True ) 
			Call notesNoteCollection.BuildCollection
			
'log
			Print #1, "Scaning: " + doc.MailFile(0)
			Print #1, Cstr(notesNoteCollection.Count)  + " elements "

'Für alle DesignElements
			nid = notesNoteCollection.GetFirstNoteID( ) 
			For i = 1 To notesNoteCollection.Count 
				Set doc = db.GetDocumentByID(nid) 
				Set item =  doc.getfirstitem("$Class")
				If Not (item Is Nothing) Then

'log
					Set item1 =  doc.getfirstitem("$TITLE")
					strItem = item1.Text
					Print #1, "$Class found in: " + stritem

'HIER kommt später das Löschen der Inhalt von $Class
				End If
				
				
				nid = notesNoteCollection.GetNextNoteId(nid) 
			Next i 
		End If		
weiter:		
		Set entry = vc.GetNextEntry(entry)
		
	Wend	
	Close #1
	Exit Sub
	
fehler:
	Print #1, "FEHLER: " + doc.MailFile(0) + " könnte nicht geöffnet werden!"
	Goto weiter
	
End Sub

Wie schon geschrieben der Agent wird auf dem Server gestartet aus der Menü Aktionen in der Datenbank names.nsf.


Ihr könnt sehen dass ich momentan folgende Nothilfe benütze:
CurrentServer = session.CurrentDatabase.parent.username
"zufällig" ist mein CurrentUser der Server selbst aber ich hätte es lieber Wasserdicht

@MadMetzger: ich will kein Eintrag in der Form: CurrentServer = "CN=Server4/O=MyDomain/C=COM"

@dirk_2909: ich bin local so dass dein code gibt ein "" zurück

@alle: danke für die mithilfe


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: Servername leer
« Antwort #14 am: 07.12.06 - 11:16:14 »

Zitat
@dirk_2909: ich bin local so dass dein code gibt ein "" zurück

 ???  ::)  Und warum dann:

Zitat
Sicher liegt diese Mißverständnis an meine Erklärungen....


Ich bin auf den Server CN=Server4/O=MyDomain/C=COM in der names.nsf.
Da lasse ich ein Agent laufen der später auf andere Server laufen soll.

Was denn jetzt "Lokal" oder Server.....  ???
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. ....

Driri

  • Gast
Re: Servername leer
« Antwort #15 am: 07.12.06 - 11:21:03 »
Zitat
aktuelle Servername ermitteln
' CurrentServer = session.CurrentDatabase.Server             'auskommentiert "" wird zurückgegeben
CurrentServer = session.CurrentDatabase.parent.username        'Nothilfe

Warum machst Du das so kompliziert ?

CurrentServer = session.ServerName wäre der direkte Weg.


Btw : CurrentServer ist nicht deklariert.


Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Servername leer
« Antwort #16 am: 07.12.06 - 11:24:14 »
@Dirk2909: Genau das frage ich mich auch.

Und dass Alois das im Einsatz dann nicht mit der Konstante haben will ist mir auch klar, weil er das ja auch auf verschiedenen Servern laufen lassen will.

Aber wenn er sagt, er arbeitet lokal, dann geht das eben so nicht außer mit Konstante oder über die Userkrücke, die er gerade verwendet. Läuft der Code dann wirklich auf einem Server und nicht in lokalem Kontext, dann zieht er auch den Servernamen.

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: Servername leer
« Antwort #17 am: 07.12.06 - 11:25:34 »
So...

Habe auf einem SERVER eine Test-DB erstellt. Dort ist ein Agent ( "Manuell aus dem Menü Aktionen" - Laufziel keins) erstellt. Code s.o. .....

Dort bekomme ich den Servernamen zurück........

Wenn Du in einer LOKALEN DB den Agenten startest,  ist Server = "" ( logisch ).

Du willst in Deinem Script den Wert im Feld "MailServer" mit dem Namen des Servers vergleichen, auf den Dein Agent aufgerufen wird.....

Das kannst Du mit session.CurrentDataBase.Server und/oder

Code
Dim session As New NotesSession
Dim agent As NotesAgent
Dim server As String
Set agent = session.CurrentAgent
server = agent.ServerName

Gem. Deinen wiedersprüchlichen Angaben gibt es den SERVER-Namen zurück...

Zitat
Wie schon geschrieben der Agent wird auf dem Server gestartet  aus der Menü Aktionen in der Datenbank names.nsf.


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 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: Servername leer
« Antwort #18 am: 07.12.06 - 11:27:43 »
@Markus

..es muss ja keine Konstante sein?!

Wenn er den Process sowieso über das Menü "Aktionen" startet, kann man ja den gewünschten Server abfragen, mit dem dann verglichen werden soll......
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 koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Servername leer
« Antwort #19 am: 07.12.06 - 11:28:28 »
Ingo, NotesSession.ServerName ist "COM only".

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz