Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: ThomasF am 16.11.04 - 14:23:01
-
Ich schreibe ein VB-Programm das auf eine Lotus-Notes-Datenbank zugreifen soll.
Auf meiner Machine ist alle OK.
Sobald ich die EXE-Datei auf einen anderen Rechner schiebe
erhalte auf der Zeile (VB-Code):
Set S = CreateObject("Notes.NotesSession")
bzw.
Set S = CreateObject("Lotus.NotesSession")
die Fehlermeldung:
Run-time error: '429'
ActiveX component can't create object
Was mach ich falsch? Kann mir da jemand helfen?
-
Ich kenne mich jetzt mit VB nicht aus, aber ich vermute mal, daß die Bibliotheken für Notes nicht mit eingebunden sind. Dann gibts auch keinen Zugriff auf die entsprechenden Objekte.
-
Hi,
... oder Notes ist nicht suaber registriert. Überprüfe doch mal an der entsprechenden Maschine die Registry
Axel
-
Notes ist korrekt installiert, da beim Kollegen dies schon eine Weile rund läuft
Ich habe gerade im and. Forum gesucht aber auch mit der Datei nlsxbe.dll funktioniert es nicht gggrrr.
-
Notes ist auf dem Rechner nicht richtig installiert.
Wenn es möglich ist, kannst du es nochmal installieren und dann ausprobieren.
Gruß Axel
-
Notes ist korrekt installiert, da beim Kollegen dies schon eine Weile rund läuft
Hast du denn die Registry überprüft, ob der/die entsprechenden Schlüssel vorhanden sind? Das es läuft heisst noch lange nicht, dass die Installation sauber ist.
Axel
-
äähmm und wie überprüfe ich die Keys? kann ich die mit Regedit finden?
-
Das einfachste ist sicherlich einfach nochmals drüberinstallieren...
-
Hi,
natürlich mit RegEdit. Die Keys findet du unter HKEY_CLASSES_ROOT
Axel
-
da müsste es Einträge Lotus.NotesSession geben und Notes.NotesSession (für 4). Scrolle bis relativ weit unten. Erst kommen da sehr viele Einträge .<Dateiendung>.
Dann trage bei dem Rechner wo es nicht funktioniert die Werte ein von dem Rechner wo es funktioniert.
-
da müsste es Einträge Lotus.NotesSession geben und Notes.NotesSession (für 4). Scrolle bis relativ weit unten. Erst kommen da sehr viele Einträge .<Dateiendung>.
Dann trage bei dem Rechner wo es nicht funktioniert die Werte ein von dem Rechner wo es funktioniert.
Wenn die Einträge nicht vorhanden sind, würde ich aber Martins Vorschlage Notes drüberzuinstallieren vorziehen. Damit ist man auf der sichereren Seite. Es fängt schon damit an, wenn Notes nicht im gleichen Verzeichnis installiert ist.
Axel
-
Ist es möglich, dass Du auf dem Rechner auf dem Du das VB Programm entwickelt hast bereits Lotus Notes 5 im Einsatz hattest ?
Ciao
Don PAsquale
-
die Maschine ist eine Virtuelle Maschine und vor einer Woche habe ich Notes 6.5.2 (Client) komplett neu installiert
-
Hi,
was verstehst du denn unter einer virtuellen Maschine ???
Axel
-
Ist es möglich, dass Du auf dem Rechner auf dem Du das VB Programm entwickelt hast bereits Lotus Notes 5 im Einsatz hattest ?
Ciao
Don PAsquale
Lies nochmal
-
VM-Ware Workstation siehe auch http://www.vmware.com/ damit simuliert man eine komplette Maschine von Grund auf.
-
Ist es möglich, dass Du auf dem Rechner auf dem Du das VB Programm entwickelt hast bereits Lotus Notes 5 im Einsatz hattest ?
Ciao
Don PAsquale
Lies nochmal
nein nicht drüberinstalliert sondern 6.5.2 komplett neu draufgemacht.
Auf der Maschine geht es ja auch. :'( aber halt nicht auf anderen Maschinen
-
Poste doch mal bitte alle Reference=*\ Zeilen aus Deiner Visual Basic
vbp Datei.
Ciao
Don Pasquale
-
Function Connect(s, db, view) As Boolean
'++++++++++++++++++++++++++++++++++++++++++++++
' Erstellt eine Verbindung zum Domino-Server
' und schreibt die globalen Variablen
' s = Notessession
' db = Notesdatenbank
' view = NotesView
'++++++++++++++++++++++++++++++++++++++++++++++
On Error GoTo ErrorHandling
Set s = CreateObject("Lotus.NotesSession")
Call s.Initialize(MainForm.localPW)
Dim viewName As String, actual As String
Set db = s.GetDatabase(MainForm.Server, MainForm.DominoPath)
If db.IsOpen = False Then
MsgBox "Datenbank: """ + MainForm.Server + """ """ + MainForm.DominoPath + """ ist nicht erreichbar", 0, "Fehler"
Exit Function
End If
viewName = "actual"
Set view = db.GetView(viewName)
If view Is Nothing Then
MsgBox "Ansicht " + viewName + "ist ""Nothing""", 0, "Fehler"
Exit Function
End If
GoExit:
Connect = True
Exit Function
ErrorHandling:
MsgBox "Fehler in Funktion ""Connect""" + Chr(13) + _
"Eventuell stimmt das Passwort nicht.", vbOKOnly, "Fehler"
End Function
Die Referenzen habe ich im Projekt selber definiert... (Project - References...)
liegt da vielleicht der Fehler, weil die *.tlb Dateien auf der Zielmaschine wo anders liegen?
-
Poste doch mal bitte alle Reference=*\ Zeilen aus Deiner Visual Basic
vbp Datei.
Ciao
Don Pasquale
Das ist die DeinProjekt.vbp Datei in Deinem Visual Basic Projekt,
dort befinden sich ganz zu Anfang Einträge die mit Reference beginnen.
Kannst Du die mal posten ?
Ciao
Don Pasquale
-
so jetzt aber...
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINNT\System32\stdole2.tlb#OLE Automation
Reference=*\G{29131520-2EED-1069-BF5D-00DD011186B7}#6.5#0#C:\Programme\lotus\notes\domobj.tlb#Lotus Domino Objects
Reference=*\G{1CF542E0-D988-11CF-B485-00805F98FACE}#6.0#0#C:\Programme\lotus\notes\notes32.tlb#Lotus Notes Automation Classes
Reference=*\G{EF404E00-EDA6-101A-8DAF-00DD010F7EBB}#5.3#0#C:\Programme\Microsoft Visual Studio\VB98\VB6EXT.OLB#Microsoft Visual Basic 6.0 Extensibility
Reference=*\G{C2530C99-06D6-11D2-8D70-00A0C98B28E2}#1.0#0#C:\Programme\Microsoft Visual Studio\VB98\Wizards\CTRLWIZ.DLL#VB 6 ActiveX Control Interface Wizard
Object={BDC217C8-ED16-11CD-956C-0000C04E4C0A}#1.1#0; TABCTL32.OCX
Form=Main.frm
Module=Module1; BasicModule.bas
Module=Module2; ModuleTasks.bas
Reference=*\G{00025E01-0000-0000-C000-000000000046}#4.0#0#C:\Programme\Gemeinsame Dateien\Microsoft Shared\DAO\DAO350.DLL#Microsoft DAO 3.51 Object Library
Object={6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0; COMCTL32.OCX
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
Class=clsTask; ClassTasks.cls
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; shdocvw.dll
IconForm="MainForm"
Startup="MainForm"
HelpFile=""
ExeName32="GBG.exe"
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="test"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
[MS Transaction Server]
AutoRefresh=1
-
Ambesten folgendes machen.
Zuerst die nlsxbe.dll unregistrieren mit folgendem Command auf der Befehlszeile
regsvr32 -u nlsxbe.dll
Dann die nlsxbe.dll neu registrieren mit
regsvr32 c:\notes\nlsxbe.dll
c:\notes natürlich mit dem richtigen Pfad ersetzten.
Dann sollte COM funktionieren. Überprüfe bitte ob du in deinem Code auch wirklich COM verwendest und nicht OLE
Grüße
Ralf
-
Dann sollte COM funktionieren. Überprüfe bitte ob du in deinem Code auch wirklich COM verwendest und nicht OLE
Das interessiert mich auch, er hat ja weiter oben seinen Code gepostet, ich kann da kein OLE entdecken. Du Ralf ?
Oder muss man noch woanders nachschauen ?
Ich hatte die gleiche Fehlermeldung, dass lag daran, dass in meinen Referenzen noch auf die domobj.tlb 1.0 statt 6.5 verwiesen wurde.
Ich halte es ebenso für ein reines registrierungsproblem.
Ciao
Don Pasquale
-
Soweit ich weiß, aber bin kein Experte für das liegt der Unterschied darin ob man
Lotus.NotesSession bedeutet COM verwendet.
oder
Notes.NotesSession bedeutet OLE.
Ich verwende prinzipiell nur Lotus.Notessession. Habe damit gute Erfahrungen gemacht.
Ich hoffe Thomasf meldet sich mal, ob das fuktioniert hat. Ich werde nämlich schön langsam sauer von Leuten denen man eine Lösung vorschlägt und von denen man dann nichts mehr hört. Meiner Meinung nach sollte man seine Foreneinträge wo man Fragen stellt schon etwas überwachen!!!
Grüße
Ralf
-
Ja Ralf, das ist leider schon so, dass immer wieder Leute nur ans Profitieren und nicht ans Rückmelden denken -- wirklich schade.
-
ich bin den ganzen Tag schon dabei eine virtuelle Maschine aufzusetzen, und zwar so, wie sie beim Kunden verwendet wird...
Sobald ich weiß, ob es geht melde ich micht
VERSPROCHEN !!!
-
Grübel, heisst das, dass hier jemand mit dem Gratis-Know-how anderer Leute Geld verdient?
-
@Semeaphoros Das finde ich auch immer so nett.
@Thomasf Wie wäre es wenn du denn Kunden anrufst und ihm sagst, er soll meine Fehlerbehebung ausführen. Denn wissen wir sofort ob es geht.
Grüße
Ralf
-
Grübel, heisst das, dass hier jemand mit dem Gratis-Know-how anderer Leute Geld verdient?
na ja, inzwischen ist es zu einem kompletten Draufleggeschäft mutiert. Von verdienen ist lange keine Rede mehr :(
-
@Semeaphoros Das finde ich auch immer so nett.
@Thomasf Wie wäre es wenn du denn Kunden anrufst und ihm sagst, er soll meine Fehlerbehebung ausführen. Denn wissen wir sofort ob es geht.
Grüße
Ralf
das habe ich ihm gestern schon gesagt, aber hat auch nichts gebracht
stopp war verkehrt!!
Das Neuinstallieren hat nix gebracht
-
Aendert nichts an der fehlenden Offenheit.
-
@ThomasF
Habe nichts von neuinstallieren gesagt. Ich habe das mit regsvr32 geschrieben. Das ist übrigens eine Fehlerbehebung die nicht von mir sondern von deinem Namensvetter bei Lotus ist. Das Problem bestand bei mir genauso. Selbe Fehlermeldung usw. Nach Neuregistrierung war es weg. Ist offensichtlich ein Fehler im Installer von Notes.
Grüße
Ralf
-
Notes ist korrekt installiert, da beim Kollegen dies schon eine Weile rund läuft
Hast du denn die Registry überprüft, ob der/die entsprechenden Schlüssel vorhanden sind? Das es läuft heisst noch lange nicht, dass die Installation sauber ist.
Axel
ja, stimmt schon versatanden, hab aber diesen Eintrag von Axel gemeint mit Regestry kontrollieren und Neuinstalation gemeint.
Um das abzuschließen, möchte ich mich wirklich bei euch ALLEN bedanken !!!
Morgen werde ich zum Kunden gehen, und ich werde auf jeden Fall berichten, ob die Kiste dann läuft
:)
-
Gut, dann sind wir mal alle gespannt, was daraus wird.
-
Lotus.NotesSession bedeutet COM verwendet.
Notes.NotesSession bedeutet OLE.
Hmm, was verwende ich ? Ich schreibe gleich NotesSession.
Das Bietet mit VB6 automatisch so an ???
Ciao
Don Pasquale
-
Ich glaub das Notes.NotesSession eine ältere Objektdefinition(?) für R4 war, die schlechter ist, aber wg. Abwärtskompatibilität auch mit 5 funktioniert.
Zumindest steht bei mir in der Registry:
Notes R4.0 NotesSession.
Gruß Axel
-
Sorry Axel!
Ich habe das jetzt nachgelesen. Es ist wie ich gesagt habe:
notes.Notessession ist Zugriff über OLE Automation (veraltete M$ Technololgie)
Lotus.Notessession ist Zugriff über COM (etwas neuere M$ Technologie)
Übrigens scheinbar ist auch der Zugriff aufs Front End möglich mit
Set workspace = CreateObject("Notes.NotesUIWorkspace")
Set doc = workspace.CurrentDocument
Habe das zwar noch nicht probiert, aber irgendwie interessant ist das schon.
Grüße
Ralf
-
BINGO gelöst !!!
Der Tipp von Ralf M Petter wars!
Keine Neuinstallation von Notes hat was gebracht, sondern das Unregistrieren und das Registrieren !!
Scheinbar war die Registrierung zerschossen.
Thanx @all
und cu
Gruß
Thomas