Hej!
Jag har en fin flerskiktad lösning som tyvärr håller att gå mig på nerverna. Så här är det tänkt att funka.
Jag har en .NET-komponent (.dll) som jag skapat ett typbibliotek (*.tlb)utifrån. I Excel vill jag utnyttja dll-ens funktionalitet. Jag har en referens till typbiblioteket. Så jag använder metoderna i dll:en.
Jag anropar en metod där en sträng och ett recordset skickas som parametrar.
Det funkar utmärkt på utvecklingsdatorn (Win 2000 Pro, Office XP, VB.NET). Det fungerar också bra på en annan dator med VB.NET, men på alla andra datorer föreligger följande problem:
Jag kan inte anropa metoder där ett recordset ingår som parameter. Däremot fungerar alla andra metoder bra. Alla de datorer som jag testat på och misslyckats på har haft .NET Framework (senaste) och MDAC 2.6 eller 2.7.
Felmeddelande är
Runtime error '-2147024894 (80070002)':
Automation error
System cannot find the file specified
Eftersom det inte sker någon filhantering med FSO i min metod måste det vara något strul med MDAC:en, misstänker jag.
Har förstås sökt på Knowledge Base
fredrikMedlem sedan dec. 19991 072 inlägg ...nu har jag aldrig kört .net-dll från OfficeXP....
...men måste du inte dels lägga din .net-dll i GAC.en och sedan köra REGASM på den för att registrera den?
Jodå regasm är kört, det är då jag skapar tlb:en .net-dll har jag lagt i samma mapp som excel.exe i mitt fall. Så har jag läst mig till att man skall göra och det fungerar på utvecklingsmaskinerna. Som sagt fungerar det mesta på klienterna, utom att anropa de metoder där recordset finns som parameter. Därför misstänker jag MDAC-en. Som jag förstått det finns inte gacutil.exe i frameworket så det låter orimligt att jag måste lägga dll:en i GAC:en (det är ju gacutil.exe man använder för att lägga till/ta bort saker ur GAC:en)
nikoMedlem sedan juni 20022 599 inlägg Inte mycket hjälp men:
"Automation Error" låter ju som nån versionskonflikt och man kan väl gissa att det är nån Interop-grej mellan ADO 2.X Recordsets och .NET.
Om du lägger in SDK:en (inte bara redistributable) på en av maskinerna och kompilerar DLL:en lokalt, funkar det då?
Annars har jag inga idéer, tyvärr, mer än att söka runt på nätet.
Jo, jag har spenderat många timmar med att söka på nätet. Ger inte upp än. Låter rimligt med versionskonflikt. Ska testa med SDK...
Red: Det var faen så stort SDK:et var då! Över 100 MB...
Har inte testat att att installera SDK:et ännu, men jag tror att felet har att göra med att jag använder ADODB.dll i min komponent och då har en referens som till denna som inte följer med då jag installerar på den andra datorn, eller iaf pekar fel...
Tja, det är nog som så att med mitt manuella installationsprogram så är det en hel del filer/dependencies som inte följer med till klientdatorn, så jag får nog använda SetUp/Deployment wizard trots att den verkade lite begränsad i vissa avseenden.
Jag sket i setup/deployment wizard och fortsatte på mitt eget installationsprogram. Vad jag gjorde var att ändra referensen till ADODB.dll till Local. Då läggs den i bin mappen bredvid exe-n och det är bara att se till att den följer med vid installationen.