Autor Thema: Globales NotesDocument Objekt???  (Gelesen 9452 mal)

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Globales NotesDocument Objekt???
« am: 14.01.04 - 08:59:30 »
Tach auch.

Innerhalb der Form habe ich unter 'Globals' ein Objekt vom Typ NotesDocument gedimt. Dieses Dokument wird im 'QueryOpen-Event' zum Leben erweckt. Der Vollständigkeit halber muss ich noch hinzufügen, dass dieses Dokument aus einer anderen als der aktuellen Datenbank befruchtet wird.
So.
in einem anderen Event, dem 'PostOpen-Event' versuche ich auf dieses bis zum diesem Zeitpunkt von 'Nothing' verschiedene Dokument zuzugreifen. Aber, und das ist das Problem, es ist tot, d.h Nothing.

Kann mir jemand sagen, was da abgeht? Hängt das vielleicht damit zusammen, das dieses Dokument aus einer anderen DB geladen wird? Warum verliert es beim Event-Wechsel die Referenz?
Aber warum sollte ich dann überhaupt noch ein Objekt global definieren?

Vielen Dank für Eure Mühe im voraus.......


Gruss Gapee




Bitte helft mir Obi-Wan Kenobi, Ihr seid meine letze Hoffnung

Glombi

  • Gast
Re:Globales NotesDocument Objekt???
« Antwort #1 am: 14.01.04 - 09:10:48 »
Bin zwar nicht Obi-Wan, versuche es aber trotzdem  ;D

Lass mal den Debugger laufen und prüfe, ob das Objekt tatsächlich im QueryOpen gesetzt wurde.

Falls ja, kann es sein, dass im PostOpen nochmal ein Dim... mit dem gleichen Namen gemacht wird?

Andreas
« Letzte Änderung: 14.01.04 - 09:11:04 von Glombi »

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #2 am: 14.01.04 - 09:30:13 »
TACH!

Danke erst mal für Deinen Beitrag.
Also ich habe nochmal nachgeschaut:

1. Mit dem Debugger ist in der Tat ein Dokument im 'QueryOpen-Event' gesetzt worden und

2. Eine erneute Deklaration im 'PostOpen-Event' findet nicht statt.

Das ist doch alles sehr sehr merkwürdig.
Hast Du vielleicht eine andere Idee? Bin über jeden Denkansatz dankbar

Gruss

Glombi

  • Gast
Re:Globales NotesDocument Objekt???
« Antwort #3 am: 14.01.04 - 09:44:40 »
Im Debugger steht das dann unter Globals, ok?
Wenn Du dort das Objekt des NotesDocument erweiterst, kannst Du bspw. auf die Items dort zugreifen?

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #4 am: 14.01.04 - 09:56:13 »
Ja genau. Ist alles da...

Glombi

  • Gast
Re:Globales NotesDocument Objekt???
« Antwort #5 am: 14.01.04 - 09:59:58 »
Poste mal den Code für QueryOpen und PostOpen. Es sieht ja alles ok aus.

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #6 am: 14.01.04 - 10:15:50 »
OK. Also dann:

Globals (NotesForm):

Public WFDbProfile As NotesDocument
Public SetupDbProfile As NotesDocument


QueryOpen-Event:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   
   Const cSetupProfileView = "DBPROFILEHIDDEN"
   
   Dim Session As New NotesSession
   
   Dim SetupDb As NotesDatabase
   Dim SetupProfileView As NotesView
   
   Dim cSetupServer As String
   Dim cSetupFilename As String
   Dim cMessage As String
   
   ' grab workflow-database profile document
   Set WFDbProfile = GetDBProfileDocument Hieran nicht stören.Alles bestens
   
   If( Source.IsNewDoc ) Then
      
      If( Not WFDbProfile Is Nothing ) Then
         
         cSetupServer = WFDbProfile.SetupDbServer(0)
         cSetupFilename = WFDbProfile.SetupDbFilename(0)
         
         Set SetupDb = Session.GetDatabase( cSetupServer, cSetupFilename, False )
         If( Not SetupDb Is Nothing ) Then
            
            Set SetupProfileView = SetupDb.GetView( cSetupProfileView )
            Set SetupDbProfile = SetupProfileView.GetFirstDocument         ' hier ist es da
            If( Not SetupDbProfile Is Nothing ) Then
                              continue = True
            Else
               
               cMessage = |Das Profil-Dokument für die Invoice-Master Setup-Datenbank ist nicht vorhanden.
Bitte verständigen Sie den System-Administrator|
               
               Messagebox cMessage, 64, "Datenbank-Fehler"
               continue = False
            End If
         Else
            
            cMessage = |Die Invoice-Master Setup-Datenbank konnte nicht erreicht werden.
               Bitte kontaktieren Sie den System-Administrator|
            
            Messagebox cMessage, 64, "Datenbank-Fehler"
            continue = False
         End If
      Else   
         ' don't allow to create a new user profile (let admin create a db profile first)         
         
         cMessage = |Wegen eines fehlenden Datenbank-Profil-Dokumentes können Sie
            leider zur Zeit kein Benutzer-Profil anlegen.
Bitte kontaktieren Sie den System-Administrator|
         
         Messagebox cMessage, 48, "Datenbank-Setup-Fehler"
         
         Continue = False
      End If
   End If
   
End Sub

Und schliesslich das
PostOpen-Event:
Sub Postopen(Source As Notesuidocument)

stop
   If( Not SetupDbProfile Is Nothing ) Then   ' und hier nicht mehr
      
      With Source.Document
         ' grab some settings from setup database's profile document
         
         .System = SetupDbProfile .System(0)
         .SystemGUID = SetupDbProfile .SystemGUID(0)
         .SeratioAdress = SetupDbProfile .SeratioAdress(0)
         .SeratioPort = SetupDbProfile .SeratioPort(0)
         .ArchiveAdress = SetupDbProfile .ArchiveAdress(0)
         .ArchivePort = SetupDbProfile .ArchivePort(0)
         
         Call .Save(True, True)
      End With
   End If

End Sub

Hoffentlich hilft's

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Globales NotesDocument Objekt???
« Antwort #7 am: 14.01.04 - 10:24:04 »
Mag sein, dass er das Public im Global nicht so gerne hat, weiss ich aber nicht wirklich.

Andere frage: hast Du in Deinem Code jeweils Option Declare (oder Option Explicit) gesetzt? Vielleicht gibt das ja an, was ihm Bauchweh macht.
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

Glombi

  • Gast
Re:Globales NotesDocument Objekt???
« Antwort #8 am: 14.01.04 - 10:24:30 »
Sieht alles gut aus, bis auf

1)
If( Source.IsNewDoc ) Then...

D.h. das SetupDbProfile wird nur bei neuen Dokumenten gesetzt.

2) Es handelt sich nicht wirklich um ein Profildokument, oder? Denn dann kann man es nicht so
Set SetupDbProfile = SetupProfileView.GetFirstDocument        
setzen.


Kannst Du mal zweckes Tests folgendes machen:
If( Not SetupDbProfile Is Nothing ) Then
msgbox SetupDbProfile.System(0)
                              continue = True


Dann müsste ja was ausgegeben werden.

Andreas

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #9 am: 14.01.04 - 10:41:25 »
Zu 1) Es soll auch nur dann etwas gesetzt werden, wenn Source.IsNewDoc = true. Das ist in Ordnung so

Zu 2) Ich verwende nicht so gerne 'echte' Profil-Dokumente.
Klar, die Anweisung Set SetupDbProfile = SetupProfileView.GetFirstDocument verwirrt in diesem Zusammenhang etwas, aber auch das ist in Ordnung.

Und der Codevorschlag von Dir produziert mir innerhalb des 'QueryOpen'-Events produziert die richtige Ausgabe.

Ich kann mir das einfach nicht erklären, warum im 'PostOpen'-Event einfach nichts mehr da ist.
Könnte es möglicherweise sein, dass die Dok-Referenz verschwindet, weil es aus einer anderen Datenbank kommt?

Glombi

  • Gast
Re:Globales NotesDocument Objekt???
« Antwort #10 am: 14.01.04 - 10:47:59 »
Könnte es möglicherweise sein, dass die Dok-Referenz verschwindet, weil es aus einer anderen Datenbank kommt?
Eigentlich nicht. Versuche mal, das "Public" in den Globals durch "Dim" zu ersetzen.

Wenn das auch nicht geht, nimm das mal aus den Globals raus und deklariere es mit Dim unter (Declarations).

Ansonsten bin ich genauso ratlos wie Du  ???

Andreas

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #11 am: 14.01.04 - 11:01:03 »
Alles ausprobiert.
Leider ist das Ergebnis kein anderes.

Auf jeden Fall bedanke ich mich bei Dir, für Deine zahlreichen Beiträge.

Gruss

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Globales NotesDocument Objekt???
« Antwort #12 am: 14.01.04 - 11:03:13 »
ich glaube, das hängt damit zusammen, dass du das SetupDoc-Objekt aus ner "fremden" DB holst.
nach dem QueryOpen wird das SetupDB-Objekt zerstört und damit wird dem SetupDoc-Objekt irgendwie die Existenzgrundlage entrissen und es wird auch zerstört.
Was du mal versuchen könntest, ist die SetupDB auch Global zu deklarieren.
Vielleicht sogar das NotesSession-Objekt
« Letzte Änderung: 14.01.04 - 11:05:56 von Thomas Völk »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Globales NotesDocument Objekt???
« Antwort #13 am: 14.01.04 - 11:03:45 »
Das mit dem Dim statt Public hab ich ja auch schon angetönt - ohne Reaktion. Ebenso hab ich auf meine Frage, ob

Option Declare

gesetzt ist, keine Angaben bekommen. Wie sieht das denn aus?
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 animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Globales NotesDocument Objekt???
« Antwort #14 am: 14.01.04 - 11:11:27 »
alternativ könntest du dir ne eigene Klasse basteln.
Davon ein Objekt erzeugen und da im QueryOpen die Werte aus dem Profildok lesen und dein eigenes Objekt als global deklarieren
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline gapee

  • Frischling
  • *
  • Beiträge: 15
  • 'Text goes here
Re:Globales NotesDocument Objekt???
« Antwort #15 am: 14.01.04 - 11:49:47 »
Das mit dem Dim statt Public hab ich ja auch schon angetönt - ohne Reaktion. Ebenso hab ich auf meine Frage, ob

Option Declare

gesetzt ist, keine Angaben bekommen. Wie sieht das denn aus?

Danke. Hab ich alles schon versucht, bisher ohne Erfolg.

Was aber auch kein Erfolg gebracht hat, war das Setzen der SetupDb ins 'global-scope' der Form. Anscheinend hat Notes tatsächlich ein Problem damit datenbankfremde Dokumente ohne Referenz auf die referenzierte DB zu erhalten, wenn ein Event-Wechsel vollzogen wird
« Letzte Änderung: 14.01.04 - 11:52:45 von gapee »

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Globales NotesDocument Objekt???
« Antwort #16 am: 14.01.04 - 11:54:00 »
nicht nur beim Eventwechsel. Du kannst das z.B. auch nicht als Funktionsparameter übergeben (ich glaube jedenfalls, mich an sowas erinnern zu können).
Also sobald du aus dem Scope, wo du das Teil instanziiert hast rauskommst, is es wech.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Globales NotesDocument Objekt???
« Antwort #17 am: 14.01.04 - 11:54:04 »
In was für einem Global hast Du das denn sonst gesetzt gehabt? Wenn das Formularweit gelten soll (sprich bei verschiedenen Events), dann gehört das doch ins Form-Globals?
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 animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Globales NotesDocument Objekt???
« Antwort #18 am: 14.01.04 - 11:56:01 »
>In was für einem Global hast Du das denn sonst gesetzt gehabt? Wenn das Formularweit gelten soll (sprich bei verschiedenen Events), dann gehört das doch ins Form-Globals?

gapee hatte nur das Document-Objekt global deklariert, das war das Problem. Er/Sie muss zusätzlich das DB-Objekt global deklarieren
« Letzte Änderung: 14.01.04 - 11:56:24 von Thomas Völk »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Globales NotesDocument Objekt???
« Antwort #19 am: 14.01.04 - 11:57:56 »
Ach so, ja klar, jetzt verstehe ich. Danke.
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