View Full Version : ADO Zugriff Excel geht nicht mehr nach Update auf 5.2
Hallo,
wir haben unsere 510 (V3.7) abgelöst durch eine neue 810 mit 5.2.
In dem Zusammenhang habe ich auch mein Client Access 3.2 umgestellt auf ISeries Access 5.2.
Dummerweise funktionieren meine Excel-Makros jetzt nicht mehr.
Ich habe dies immer mittels ADO gemacht.
Schon bei der ersten Zeile
Set cn400 = CreateObject("ADODB.Connection")
bekomme ich eine Fehlermeldung.
Was ist zu tun?
Danke für eure Antworten
HS
Hallo HS,
wie sieht es denn mit dem Servicepack für Client Access aus ?
Das aktuelle ist SI09809.
Habe auch z.B. gefunden:
http://www-912.ibm.com/n_dir/nas4apar.NSF/1be1a5b61b213a6c86256c23007048f4/e3569614b95e5ba386256c7a004439af?OpenDocument&Highlight=0,ADO
Gruss TARASIK
Hallo Tarasik,
wir haben den neuesten ServicePack.
Die genaue Fehlermeldung (in Excel) lautet:
"Objekterstellung durch ActiveX-Komponente nicht möglich"
Gruß
HS
Dies hat nichts mit CA-Express zu tun.
Installiere noch mal die neuesten ADO-Komponenten
http://www.microsoft.com/downloads/details.aspx?FamilyID=9ad000f2-cae7-493d-b0f3-ae36c570ade8&DisplayLang=de
Prüfe mal im VB-Editor über "Extras->Verweise" ob du die "Microsoft Activex Data Objects 2.7 Library" findest.
Besser ist es sowieso, diese Lib dem Projekt fest zuzuordnen.
Dann kannst du direkt mit den Objekten und Namen arbeiten.
Dim MyConnect as new ADODB.Connection
Dazu kommt noch, dass es lesbarer und schneller wird.
Hallo fuerchau,
vielen Dank, dein Tip hat geholfen.
Hatte zwar schon MDAC 2.6 installiert (vorher ging es ja auch), aber irgendwie scheint ISeries Access da irgenwas entfernt zu haben.
Jedenfalls geht es jetzt wieder.
Gruß
HS
CA-Express würde nie irgendwas deinstallieren und schon gar nicht ADO !
Vielleicht war ja nur die Registrierung futsch.
Tipp:
Über die Verweise kannst du auch die Registrierung wiederherstellen (Schaltfläche "Suchen").
Die ADO-Komponenten sind normalerweise im Verzeichnis:
C:\Programme\Gemeinsame Dateien\System\ado
Dort ist es dann "msado15.dll".
Was jetzt ISeriess Access im einzelnen gemacht hat, kann ich nicht nachvollziehen. Kann natürlich auch an der registry gelegen haben.
Ich habe Iseries Access erst auf drei Rechnern installiert. Dabei wird ja erst Client Acess deinstalliert und dann Iseries Access installiert.
Anschließend lief auf keinem der drei Rechner mein Excel-Makro mehr. Zuvor hatte ich keine Probleme.
Natürlich hatte ich auch die Verweise in Verdacht und dann Microsoft ActiveX erneut eingetragen -> jedoch ohne Wirkung.
Gruß
HS
Leider habe ich mit einem der drei Rechner immmer noch keinen Zugriff auf die As400. Bei den beiden anderen gehts.
Irgendwie scheint es schon an nicht registrierten DLLS zu liegen:
Ich habe bei der Suche nach meiner Fehlermeldung über GOOGLE herausgefunden, mann solle die DAO360.DLL mit REGSVR32 neu registrieren.
Das habe ich getan, allerdings bekomme ich jetzt in der nächsten Zeile eine neue Fehlermeldung:
Mein Programm:
Set cn400 = CreateObject("ADODB.Connection")
Set cmSQL = CreateObject("ADODB.Command")
Set rssql = CreateObject("ADODB.Recordset")
cn400.Provider = "MSDASQL"
cn400.Properties("user id") = "meinuser"
cn400.Properties("password") = "meinpw"
cn400.Properties("data source") = "meineodbcverbindung"
cn400.Open
In der Zeile
cn400.Provider = "MSDASQL"
erhalte ich die Meldung:
"Laufzeitfehler 3706:
Der Provider kann nicht gefunden werden. Möglicherweise ist er nicht richtig installiert worden."
Welche DLL muss ich gegebenenfalls noch registrieren?
Vielen Dank
HS
Es nützt da nichts nur ein paar dll's zu registrieren.
Installiere ADO (MDAC_TYP.exe) komplett neu.
Wenn du CA-Express verwendest, kannst du auch folgendes tun:
With MyConnect
.Provider = "IBMDA400"
.Properties("Catalog Library List") = "MyLib1 MyLib2"
.Properties("Convert Date Time To Char") = "TRUE"
.IsolationLevel = adXactChaos
.Properties("User ID") = "MyUser"
.Properties("Password") = "MyPwd"
.Open "Data Source=MySystem"
end with
Ansonsten verhält sich der IBMDA400 weitestgehend wie MSDASQL. Vorteil: Du benötigst keine ODBC-Registrierung.
Alternativ kannst du auch UserId und Password weglassen, damit jeder User sich selbst anmelden muss bzw. das Kennwort nicht im Klartext in der Quelle steht.
Du benötigst hierzu nur noch:
.Properties("Prompt") = adPromptComplete
Hallo fuerchau,
vielen Dank für den Tip.
Kann mich auch daran erinnern, dass ich so mal angefangen hatte, aber wegen vielen Abstürzen auf 3.7 dann auf ODBC und MSDASQL umstellen musste.
Leider komme ich damit nur eine Zeile weiter:
Auf dem Rechner, auf dem mein altes Prog. funktioniert, klappt es auch mit IBMDA400.
Auf dem Rechner, auf dem das Programm nicht lief, bekomme ich jedoch wieder die Fehlermeldung, dass die Erstellung der ActiveX-Komponente nicht möglich sei.
Diesmal aber ein Zeile weiter unten:
Set cn400 = CreateObject("ADODB.Connection")
Set cmSQL = CreateObject("ADODB.Command")
Set rssql = CreateObject("ADODB.Recordset")
With cn400
.Provider = "IBMDA400"
.Properties("Convert Date Time To Char") = "TRUE"
.Properties("User ID") = "meine"
.Properties("Password") = "meins"
.Open "Data Source=meineAS400"
End With
Set cmSQL.ActiveConnection = cn400
cmSQL.CommandText = "SELECT * FROM meinebib.meinetab"
cmSQL.Prepared = True
Set rssql = cmSQL.Execute --> HIER FEHLERMELDUNG
Noch eine Idee?
Gruß
HS
PS: MDAC hatte ich natürlich schon neu installiert.