Har problem med ett program i VB6 som använder Access via ADO Då har du nog inte deklarerat DB som en ADODB.Connection.... Fortfarande fel med felkod Hej Roland, Jag kan heller inte få felet i min dator men i en annan (som ej har VB installerat) blir det problem. I den datorn finns Windows XP och är uppgraderad med MDAC och Jet enligt uppgraderings MDAC v 2.7 och Jet V 4.0 SP7 Har du uppdaterat VB till SP 5? VB uppdaterad med SP5 430 Class does not support automation or does not support expected interface Har gjort om test med strippat program där den mesta koden enligt ovan är borta men fungerar fortfarande inte. Har även kollat Jennys förslag om felaktig dll Har testat utan å,ä och ö Ingen skillnad, samma fel PROBLEMET LÖST Jopp men hade gått att lösa även i "gamla" vb och kunnat låta miljön leva kvar. Problem med att öppna databas
När programmet når raden enligt nedan blir det fel i vissa datorer
Set DB = New ADODB.Connection
Programmet fungerar i flera andra men i vissa blir det fel, varför ?
Har uppdaterat MDAC i både utvecklingsdator och i datorn där det blir fel till V 2.7
Egna funderingar är:
Kan det var fel på Jet ?
Kan det vara någon annan dll som strular (fel version) ?
Eller annat ?
Någon som vet eller har bra förslag ?Sv: Problem med att öppna databas
Vad har du skrivit på Dim?Sv: Problem med att öppna databas
Hoppar till Felhanteringen längst ned
430 Class does not support automation or does not support expected interface
MDAC och Jet uppgraderade men ger fortfande samma fel, (elände)
Hela koden som ger fel
Refferens satt till Microsoft ADO etc. v2.7
Private Sub Command1_Click()
'
'Deklaration av variabler
Dim DB As ADODB.Connection
Dim RS As New ADODB.Recordset
Dim con As String
'
'Sträng för anslutning av databas
con = "Provider=Microsoft.Jet.OLEDB.4.0;"
con = con + "Data Source=" + App.Path + "\DB\mindatabas.mdb"
con = con + ";Persist Security Info=False; Jet OLEDB:Database"
'
'Koppla program mot ADO
On Error GoTo Felhantering
Set DB = New ADODB.Connection '<----------- HÄR ---------------
'
'Öppna databas
On Local Error Resume Next
DB.Open con
'
'Felhantering om det ej gick öppna
If DB.Errors.Count > 0 Then
MsgBox "Gick ej öppna databas, med felkod=" + CStr(Err) + " " + Error
Set DB = Nothing
Exit Sub
End If
'
'Anropa databas med SQL-fråga
Set RS = DB.Execute("SELECT * FROM Produkt")
'
'Visa poster som returnerades
Do While Not RS.EOF
List1.AddItem RS("ProduktID") + " " + RS("Benämning")
RS.MoveNext
Loop
'
'Stäng databas och frigör minne
RS.Close
DB.Close
Set RS = Nothing
Set DB = Nothing
'
Exit Sub
'
Felhantering:
MsgBox "Felhantering med felnr=" + CStr(Err) + " " + Error
End
End Sub
Någon som vet och kan hjälpa till ???Sv: Problem med att öppna databas
Jag har testat den den del av din kod som du uppger strular.
Dock kunde jag inte reproducera felet, tyvärr.
Men det jag skulle föreslå är att du bryter ner koden ännu mer dvs kommentera bort allting nedanför db.open con etc
Får du detta fel i ett helt nytt projekt?
Har du kontrollerat att alla variabler får sitt värde?
HTH
NickSv: Problem med att öppna databas
Koden ligger i ett helt nytt projekt med endast en lisbox och en knapp i en form samt den kod jag visat här ovan.
Har testat i flera andra maskiner bla win98 och win2000 samt Win XP och de fungerar perfekt.
Vad finns mera som kan behöva uppgraderas för att ej få felmeddelande 430 ?Sv: Problem med att öppna databas
Ta bort list boxen. Om inte det fungerar. Ta bort knappen och lägg koden i Form_Load
HTH
NickSv: Problem med att öppna databas
Provar att ta bort knapp och listbox samt resterande kod som ej används för felhantering.Sv: Problem med att öppna databas
betyder att programmet försöker ladda en dll som inte är registrerad korrekt.
Använder du några "extra" dller som du laggt till i projektets references?
Om du hittar de dller på de datorer som strular så testa att registrera dem manuellt. Det brukar avhjälpa detta felmeddelande.
Vid sådana här fel är det inte alltid programmet triggar error vid rätt ställe så raden
Set DB = New ADODB.Connection
har kanske inte med felet att göra överhuvudtaget...Sv: Problem med att öppna databas
Gjort om installationsfilen igen men gjälper inte.
Använder inga egna dll-er utan endast de som finns med i installationsfilen och verkar stämma mot info på Microsofts hemsida.
Utgår ifrån att Microsofts installationsprogram registrerar dll:erna mm på korrekt sätt.
Övrigt med programmet så hitar jag inget som kan vara orsaken förutom anslutningen mot ADO
sista koden är nu
Private Sub Form_Load()
'
'Deklaration av variabler
Dim DB As ADODB.Connection
Dim RS As New ADODB.Recordset
Dim con As String
'
'Sträng för anslutning av databas
con = "Provider=Microsoft.Jet.OLEDB.4.0;"
con = con + "Data Source=" + App.Path + "\DB\mindatabas.mdb"
con = con + ";Persist Security Info=False; Jet OLEDB:Database"
'
'Koppla program mot ADO
On Error GoTo Felhantering
Set DB = New ADODB.Connection
'
'Öppna databas
On Local Error Resume Next
DB.Open con
'
'Felhantering om det ej gick öppna
If DB.Errors.Count > 0 Then
MsgBox "Gick ej öppna databas, med felkod=" + CStr(Err) + " " + Error
Set DB = Nothing
Exit Sub
End If
'
MsgBox "Databas Öppnad"
'
Exit Sub
'
Felhantering:
MsgBox "Felhantering med felnr=" + CStr(Err) + " " + Error
End
End Sub
Giper nu efter sista halmstrået som kan vara (vilket verkar knepigt) att jag änvänt å, ä och ö i namnen på fälten i databasen.
Kan detta vara orsaken till felmeddelandet ?Sv: Problem med att öppna databas
I installationsfilen läggs det till några dll:er
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,9/28/01 2:00:00 PM,1388544,6.0.92.37
Har nu sett att några är av annan version än vad jag har i winnt\system32
t.ex. oleaut32.dll som har version 3.50.5016 i min dator men 2.40.4275.1 i installationsfilen, knasigt ?
Kan det vara denna som spökar ?Sv: Problem med att öppna databas
Har kollat och båda datorerna har samma dll:er som används av programmet
Har dock inte kollat så att de är riktigt installerade
någon som vet hur man kollar att de är rätt registrerade ???Sv: Problem med att öppna databas
I datorn med problem fanns två olika mappar med liknande funktion
C:\Program\Delade filer ..... där MDAC:s dll:er bor
Samt en med engelsk design och gamla dll:er för MDAC
Löste genom att rensa och köra regsvr32 på de riktiga
Orsaken varför det blivit så är oklar men nu fungerar allt
Hittade via att söka efter filen msado15.dll i hela datorn då hittades flera olika.
DLL-HELL
När jag sökt på Webben har jag nu insett hur STORT problemet med versionskonfliker med dll:er är.
Tackar för allas hjälp. Sv: Problem med att öppna databas
Att lägga upp systemfiler i en mapp där namngivningen styrs av regionala (landsunika) namn borde vara kriminellt. Att tillåta att samma fil (dll) kan finnas på samma maskin med olika versioner utan att ha löst versionshanteringen är tokerier på hög nivå. Om man kikar ute på Webben förstår man att detta kostat miljoner i arbetstid att lösa.
Har sett att man så sent som i XP SP1 varit inne och rättat fel med sökvägar till dll:er. Trodde i min enfald tidigare att dll-hell var ett relativt begränsat problem.
Vad har man skapat för nytt elände i nya miljön som skapar liknande jättearbete ?
Tur att ni hjälpsamma på världens forum finns som gratis hjälper till och löser sådana problem.
Mycket tacksam men grymt trött efter detta problem.