Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Mortione am 19.04.07 - 08:26:11

Titel: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 19.04.07 - 08:26:11
Hallo zusammen,
in einem VB6 Programm erzeuge ich eine Notes E-Mail. Klappt wunderbar.
Ich möchte jetzt vor dem erzeugen der E-Mail eine Auswahl meiner zwei verfügbaren Datenbänke erstellen. Wie kann ich denn Einfluß auf die angewählten Datenbänke nehmen.
Danke im voraus.
Folgenden Code verwende ich zur Zeit:

    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim MailUIDoc As Object 'Das Frontend-Maildokument selbst
    Dim AttachME As Object 'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
    Set Session = CreateObject("Notes.NotesSession")

    Set Maildb = Session.GETDATABASE("", MailDbName)

     If Maildb.isOpen = True Then
          'Fertig zum mailen!
     Else
         Maildb.OPENMAIL
     End If
   
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CreateDocument
   
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    MailDoc.Subject = Subject
    MailDoc.body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Driri am 19.04.07 - 08:28:03
Zitat
Set Maildb = Session.GETDATABASE("", MailDbName)

An der Stelle definierst Du die Datenbank. Du müßetst also an der Stelle für eine entsprechende Auswahl sorgen und dann erst mit Set Maildb die jeweilige DB zuweisen.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 19.04.07 - 09:12:06
Hallo Diri,
vielen Dank, aber da liegt mein Problem. Es wird ja meine Standarddatenbank gezogen.
Ich denke es muss so funktionieren:
...
MailDbName = "mail\a\Datenbank_1.nsf"
else
MailDbName = "mail\a\Datenbank_2.nsf"
Das funktioniert aber nicht.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: m3 am 19.04.07 - 09:18:40
Definiere "Das funktioniert aber nicht."

Weist er der Variablen den korrekten Wert zu und öffnet trotzdem die falsche DB?
Oder kommt er erst gar nicht in den korrekten "if/else" Zweig hinein?

usw?

"Das funktioniert aber nicht" hilft und nicht wirklich weiter, Dir zu helfen.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: ata am 19.04.07 - 09:54:08
... im Augenblick sehe ich noch keine Verzweigung für die Auswahl einer DB???

Wie soll die Entscheidung zur Datenbank denn gefällt werden? - Frontend - Backend ??

Toni
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 19.04.07 - 09:59:41
Stimmt schwache Aussage:

Also das ist der Code :
Public Sub SendNotesMail(Subject As String, Recipient, BodyText As String, SaveIt As Boolean)
    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim MailUIDoc As Object 'Das Frontend-Maildokument selbst
    Dim AttachME As Object 'Der Anhang (Richtext)
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
   
    'Vorwahl der Datenbank

         'MailDbName = "mail\a\standard.nsf"
     'oder
    MailDbName = "mail\a\automsv.nsf"
   
       
    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")
       
    'Datenbank öffnen
     Set Maildb = Session.GETDATABASE("", MailDbName)
     
     If Maildb.isOpen = True Then
          'Fertig zum mailen!
     Else
         Maildb.OPENMAIL
     End If
   
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CreateDocument
   
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    MailDoc.Subject = Subject
    MailDoc.body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
   
    Dim Workspace As Object
    Set Workspace = CreateObject("Notes.NotesUIWorkspace")
   
    Call Workspace.EditDocument(True, MailDoc).GotoField("Body")


Tschuldigung aber mein Wissen über Notes hält sich stark in Grenzen.
Vielen Dank schon einmal
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: ata am 19.04.07 - 10:02:24
... ich sehe immer noch keine Verzweigung, und ob du die Entscheidung im Frontend oder Backend haben willst? Gib mal genauer bekannt, wie du den Ablauf haben willst...

Toni
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 19.04.07 - 10:20:25
Also das ganze befindet sich in meinem VB6 Programm im Frontend.
Der User arbeitet zeitgleich mit meinem VB6 Programm und hat Notes 7 geöffnet. Innerhalb des VB6-Programms wird die Routine gestartet und in Notes wird dann die entsprechende Mail generiert.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: ata am 19.04.07 - 10:27:15
.. du musst vor dem initialisieren der  MailDB den User zu einer Entscheidung füheren, welche der beiden Datenbanken verwendet werden soll...

Dazu kannst du entweder den Dialog mit Ja/Nein-MsgBox verwenden oder über eine separate Dialogmaske arbeiten, die du in VB6 dazu benützt...

Toni
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 19.04.07 - 10:57:10
Hallo ata,

ja das verstehe ich mit der Entscheidung (fehlt noch), aber wie wird den die entsprechende Datenbank angesprochen ?
Egal was ich hier reinschreibe oder kompl. weglasse, es wird immer die
Standard-Datenbank geöffnet
...
MailDbName = "mail\a\automsv.nsf
...

Ist  MailDbName = überhaupt richtig ?
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: MadMetzger am 19.04.07 - 11:13:22
Ich denke mal, dass das daran liegt, dass die Datenbank noch nicht offen ist und der Code jedesmal in diese Verzweigung zum "OpenMail" kommt:
Code
If Maildb.isOpen = True Then
          'Fertig zum mailen!
     Else
         Maildb.OPENMAIL
End If
Und eben dieser Code verursacht das. Designerhilfe sagt zu "OpenMail":
Zitat
Assigns a database to the current user's mail database and opens that database.
Ich würde an deiner Stelle dort mit notesDatabase.open(server,database) arbeiten. Das tut das, was du möchtest.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: ata am 19.04.07 - 15:35:17
... oder mit NotesSession

Dim session As new NotesSession
Dim dbMail As NotesDatabase

Set dbMail = session.GetDatabase( "Servername" , "Pfad" )

If dbMail.IsOpen Then
  ' OK
Else
   dbMail.Open
End If

.. so auf die schnelle

toni
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: MadMetzger am 19.04.07 - 16:28:34
Anton, so macht er das ja auch. Ich meinte eigentlich nur, dass er das OpenMail durch das Open ersetzen sollte.
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: ata am 19.04.07 - 23:24:43
@MadMetzger

... du hast das absolut richtig erkannt - er öffnet ja explicit seine Standard-Mail-DB. Ich hatte ihm nur noch einen weiteren Weg zur Initialisierung einer DB gegeben...

Toni
Titel: Re: Datenbankvorwahl mit VB6
Beitrag von: Mortione am 20.04.07 - 14:04:45
Gruß an alle !!!
Vielen Dank - Es funktioniert