VSE 2008 Access 2003 runtime: Bericht öffnen klappt nicht

26/06/2009 - 09:26 von David | Report spam
Guten Tag zusammen!

ich versuche mittels C# (Visual Studio Express 2008) einen Bericht in einer
Access 2003 Datenbank zu öffnen. Das Funtioniert mit der Methode unten ganz,
solange auf dem betreffenden Rechner die Access-Vollversion installiert ist.
Auf Rechnern mit Access Runtime erhalte ich folgenden Fehler:
"System.Runtime.InteropServices.COMExeption (0x80080005)".

Laut diesem Artikel (http://support.microsoft.com/kb/317114/en-us) soll man
die Access-Instanz mit BindToMoniker festlegen bzw. ermitteln und alles ist
gut. Habe ich dann auch getan (vorher einfach mit OpenCurrentDatabase).
Trotzdem bekomme ich noch immer den gleichen Fehler. Woran kann es denn
liegen?

Ihr wisst bestimmt Rat.

Vielen Dank!

David




Hier der Code:

[...]


private void Run_Access_Report(string reportName)
{
int lastID = getMylastID();
Access.Application access = null;

try
{
access = new Access.ApplicationClass();

string databasePath = Application.StartupPath + @"\HCT.mdb";

//access.OpenCurrentDatabase(databasePath, false, null);
access = (Access.Application)
Marshal.BindToMoniker(databasePath);

access.Visible = false;

access.DoCmd.OpenReport(reportName,
Microsoft.Office.Interop.Access.AcView.acViewPreview,
System.Reflection.Missing.Value, "id_checklist = " + lastID,
Microsoft.Office.Interop.Access.AcWindowMode.acDialog,
System.Reflection.Missing.Value);

access.DoCmd.Maximize();

}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

finally
{
if (!access.UserControl) access.UserControl = true;
access = null;
}
}

[...]
 

Lesen sie die antworten

#1 Hans Joachim Kiefer
26/06/2009 - 13:50 | Warnen spam
Hallo David,

der Fehler kommt IMO eben, wenn kein Access vorhanden ist. Wenn kein Access
da ist, kannst Du auch keine Instanz davon anlegen.

Gruß
Joachim

"David" schrieb im Newsbeitrag
news:

Guten Tag zusammen!

ich versuche mittels C# (Visual Studio Express 2008) einen Bericht in
einer Access 2003 Datenbank zu öffnen. Das Funtioniert mit der Methode
unten ganz, solange auf dem betreffenden Rechner die Access-Vollversion
installiert ist. Auf Rechnern mit Access Runtime erhalte ich folgenden
Fehler: "System.Runtime.InteropServices.COMExeption (0x80080005)".

Laut diesem Artikel (http://support.microsoft.com/kb/317114/en-us) soll
man die Access-Instanz mit BindToMoniker festlegen bzw. ermitteln und
alles ist gut. Habe ich dann auch getan (vorher einfach mit
OpenCurrentDatabase). Trotzdem bekomme ich noch immer den gleichen Fehler.
Woran kann es denn liegen?

Ihr wisst bestimmt Rat.

Vielen Dank!

David




Hier der Code:

[...]


private void Run_Access_Report(string reportName)
{
int lastID = getMylastID();
Access.Application access = null;

try
{
access = new Access.ApplicationClass();

string databasePath = Application.StartupPath +
@"\HCT.mdb";

//access.OpenCurrentDatabase(databasePath, false, null);
access = (Access.Application)
Marshal.BindToMoniker(databasePath);

access.Visible = false;

access.DoCmd.OpenReport(reportName,
Microsoft.Office.Interop.Access.AcView.acViewPreview,
System.Reflection.Missing.Value, "id_checklist = " + lastID,
Microsoft.Office.Interop.Access.AcWindowMode.acDialog,
System.Reflection.Missing.Value);

access.DoCmd.Maximize();

}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

finally
{
if (!access.UserControl) access.UserControl = true;
access = null;
}
}

[...]

Ähnliche fragen