Access mdb file megnyitásai hiba.

Access mdb file megnyitásai hiba.
2012-09-26T11:13:23+02:00
2012-09-26T14:29:26+02:00
2022-11-26T23:35:36+01:00
b_atti
Sziasztok!

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { public static Microsoft.Office.Interop.Excel.Application oExel; public static Microsoft.Office.Interop.Access.Application oAccess; static void Main(string[] args) { oExel = new Microsoft.Office.Interop.Excel.Application(); oAccess = new Microsoft.Office.Interop.Access.Application(); oExel.Visible = true; oAccess.Visible = true; Console.Read(); } } }

Tudnátok-e segíteni. A fenti kód az Exel programot elindítja az Accessnél viszont hibával leáll és a lenti hibaüzenetet adja.
Windows 7 Office 2007 -et használok. Köszi.

System.InvalidCastException was unhandled
Message="Nem lehet konvertálni a(z) "Microsoft.Office.Interop.Access.ApplicationClass" típusú COM-objektumot a(z) "Microsoft.Office.Interop.Access._Application" típusú illesztőfelületre. A művelet nem sikerült, mert a(z) "{68CCE6C0-6129-101B-AF4E-00AA003F0F07}" azonosítójú illesztőfelület COM-összetevőjének QueryInterface hívása nem sikerült a következő hiba miatt: Hiba típustár/DLL betöltésekor. (A kivétel HRESULT-értéke: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))."
Source="Microsoft.Office.Interop.Access"
Mutasd a teljes hozzászólást!
Visszatérve az eredeti problémádra, lehet az a gond, hogy 64 bites az oprendszered és a projektben is 64 bitesre (x64) van beállítva a program, lehet át kellene tenni a compiler-t 32 bitesre (x86) ....
Mutasd a teljes hozzászólást!

  • Nálam hibátlanul megy (szintén Windows 7 és Office 2007 van fent)
    Amúgy miért akarod így használni Interop segítségével?

    Ez így eléggé Office verziófüggő, hogy mit veszel fel a referenciába.
    Lehet praktikusabb lenne CreateObject segítségével létrehozni az Excel és Access objektumokat.

    (aztán lehet nincs C#-ban CreateObject, mint VB.NET-ben... ennek utána kell nézni)

    szerk:

    If you need to create a late bound object, then I'd try this:

    Type t = Type.GetTypeFromProgID("Excel.Application");
    object objExcel = System.Activator.CreateInstance(t);

    Alternatively, you can add a reference to Microsoft.VisualBasic.dll to your C# application and then add this using directive:

    using Interaction = Microsoft.VisualBasic.Interaction;

    You can then call CreateObject directly as follows:

    object objExcel = Interaction.CreateObject("Excel.Application");



    szerk2:
    VB.NET-ből indultam ki, hogy ott hogyan célszerű... valszeg C#-nál az eredeti elképzelés lenne praktikusabb....
    Mutasd a teljes hozzászólást!
  • C# programból szeretnék Access Reportot megjeleníteni.
    A könnyebb programozás miatt. A CreateObjectnél mindent kell tudni fejből nem segít az intellisense, legalábbis VBA-ban.

    Nekem a CreateObject is jó, de azt nem tudom hogyan használjam.
    Hogy tudom elindítani vele a "D:\test.mdb" filet.
    Mutasd a teljes hozzászólást!
  • Visszatérve az eredeti problémádra, lehet az a gond, hogy 64 bites az oprendszered és a projektben is 64 bitesre (x64) van beállítva a program, lehet át kellene tenni a compiler-t 32 bitesre (x86) ....
    Mutasd a teljes hozzászólást!
  • Zseni vagy!
    Működik. A Windows 64 bites. De mi lehet az oka annak hogy az Exel működött előtte is az access meg nem. Ugyanaz az Office telepítés mind a kettő.
    Mutasd a teljes hozzászólást!
  • Több fórumban is találkoztam hasonló problémával.
    Egy lehetséges magyarázat:
    http://blogs.msdn.com/b/vsod/archive/2009/03/03/access-automation-do..
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd