Autor Thema: Unterschied session.GetDatabase() und db.Open()  (Gelesen 3403 mal)

DatenDuck

  • Gast
Unterschied session.GetDatabase() und db.Open()
« am: 19.07.10 - 15:46:56 »
Hallo Leute,

eine kurze Frage an die Erfahrenen.
Was ist der Unterschied, bzw. die Vor- und Nachteile zwischen der NotesSession.GetDatabase() und der NotesDatabase.Open() Methode (zum reinen Öffnen einer DB)?
Gibt es Fälle in denen die eine oder die andere Methode sinnvoller ist?
Aus meiner Sicht führt doch beides zum gleichen Ziel, oder?

Vielen Dank schon mal!

Bis dann,
-Moritz

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #1 am: 19.07.10 - 15:54:57 »
Ja, es gibt einen Unterschied, Moritz.

NotesDatabase.Open öffnet eine Datenbank
NotesSession.GetDatabase repräsentiert ein Datenbank Objekt (Öffnet es nicht)

Genauere Infos gibts auch in der Designer-Hilfe  ;)

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...“

DatenDuck

  • Gast
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #2 am: 19.07.10 - 16:07:14 »
Hallo Chris,

ok, das war fehlende Information meinerseits...

Dein genannter Unterschied ist mir schon bewusst.
Es ging mir letztendlich blos ums Öffnen der DBs
Gemäß meiner Vermutungen bestehen da lediglich Unterschiede beim Coding, nicht aber bei der letztendlichen Funktionalität, oder?
Coding ist ein mal:

Code
Dim session as New NotesSession
Dim db As NotesDatabase
Set db = session.GetDatabase("Server", "Pfad", false)

und ein anderes Mal

Code
Dim db As New NotesDatabase("", "")
Call db.Open("Server", "Pfad")

aber Open ist die DB danach in beiden Fällen identisch, oder?
Da ich hier unsicher bin und ausschließen möchte, dass eine der beiden Methoden dann in bestimmten (Sonder-)Fällen "Besonderheiten" verursacht, habe ich diese Frage gestellt.
Ich hatte mir erhofft, dass (wenn es denn tatsächlich der Fall sein sollte) einer der zahlreichen Notes Gurus hier antwortet a la "Bedenke, dass bei db.Open() im Falle von x, die Property y nicht gesetzt ist, daher empfehle ich Dir nimm lieber "getDatabase"".
Schöner wäre natürlich ein "Ich arbeite schon seit Jahren mit beiden Methoden und mir sind noch keine Probleme untergekommen" :-)

Bis dann,
-Moritz


Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #3 am: 19.07.10 - 16:13:50 »
Ich verwende immer

Dim db As New NotesDatabase (Server, Dateiname)
oder, falls ich db vorher schon deklariert hatte
Set db = New NotesDatabase (Server, Dateiname)

da hat mir noch nie eine Property gefehlt

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #4 am: 19.07.10 - 16:17:55 »
Da wir gerade lustig beim Austauschen zum DB-Zugriff sind: Ich meide Server / Dateiname wie der Teufel das Weihwasser und arbeite mit der ReplicaID - da ist dann niemand von meinem Coding abhängig.
In der Regel wird der Server aus dem aktuellen Kontext ermittelt, die ReplicaID ermitteln die Admins im Setup via Datei-Datenbank-Öffnen-Aktion.

Variante 4 (OpenByReplicaID) hat ebenso keine Nachteile wie die anderen Verfahren.

Bernhard

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #5 am: 19.07.10 - 16:23:11 »
Hallo zusammen,

Hab ich da jetzt echt etwas falsch verstanden ?

Bei mir hat sich bisher mit
Zitat
Set db = session.GetDatabase("Server", "Pfad", false)
nie eine Datenbank geöffnet. Da belegt man doch lediglich db mit einem Objekt (der Datenbank).
Das Öffen (das darstellen am Client) wird doch dann über db.Open initialisiert

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 Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #6 am: 19.07.10 - 16:29:41 »
... Ich meide Server / Dateiname wie der Teufel das Weihwasser und arbeite mit der ReplicaID - da ist dann niemand von meinem Coding abhängig ...
Da gebe ich Dir natürlich völlig recht. Eine feste Verdrahtung von Server- oder Dateinamen im Code wirst Du bei mir auch nirgendwo finden. I.d.R arbeite ich mit Dokumenten, die Datenbanken beschreiben. Damit wird einer Datenbank ein logischer Name gegeben und über diesen logischen Namen findet das System den Dateinamen. Der Server errechnet sich entweder aus der aktuell geöffneten DB (db.Server, eine sehr einfache Methode, alle DB liegen dabei auf dem gleichen Server) oder über Lokationsdokumente und Zuordnung von Datenbanken zu Lokationen (System COSMOS, aus dem auch der Begriff "Foyer" stammt, der in einem anderen Thread vor ein paar Tagen für etwas Verwirrung geführt hat).

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #7 am: 19.07.10 - 16:33:59 »
Hallo zusammen,

Hab ich da jetzt echt etwas falsch verstanden ?

Bei mir hat sich bisher mit
Zitat
Set db = session.GetDatabase("Server", "Pfad", false)
nie eine Datenbank geöffnet. Da belegt man doch lediglich db mit einem Objekt (der Datenbank).
Das Öffen (das darstellen am Client) wird doch dann über db.Open initialisiert

Chris

Zum Öffnen auf dem Bildschirm verwendest Du NotesUIWorkspace.OpenDatabase, NotesDatabase.Open ist auch Backend.

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #8 am: 23.07.10 - 14:42:40 »
Aus der Designerhilfe für Notessession.getDatabase()
Zitat
Creates a NotesDatabase object that represents the database located at the server and file name you specify, and opens the database, if possible.

Gruss

Urs
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline heini_schwammerl

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
Re: Unterschied session.GetDatabase() und db.Open()
« Antwort #9 am: 23.07.10 - 15:55:31 »
Nachdem ich ungern mit session Objekten um mich schmeisse ist mir aus diesem Grund
New NotesDatabase (Server, Dateiname) schon sympatischer.
Auch vergesse ich bei getDatabase gerne den Parameter für CreateOnFail und dann erzeugt man schon einmal ein Objekt welches sich später nicht öffnen lässt.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz