| 

.NET C# Java Javascript Exception

1
moin,

ich hab nen vb.net prog, in das ich die Tabellen aus einer Access db einlesen will...
ich hab auch schon den query mit dem ich das machen kann:
SELECT MSysObjects.Name FROM(MSysObjects) WHERE (((MSysObjects.Type)=1) AND ((MSysObjects.Flags)=0) AND ((LCase(Left([Name],4)))<>'usys')) OR (((MSysObjects.ForeignName) Is Not Null)) ORDER BY MSysObjects.Name;

ich verbinde mich zur datenbank über OLEDB:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

jetz is das problem das ich, wenn ich den query vom programm aus starte, bekomm ich die meldung, dass ich keinen zugriff auf die systemtabellen hab... was kann ich da machn?
News:
19.08.2011
DerPunk 1,2k 1 7
5 Antworten
1
Die sauberste Lösung wäre sicher ein Ausweichen auf ein weniger "verschlossenes" Datenbankformat bzw. auf einen Datenbankserver. Aber du fragst nach Access, und das kommt leider als Datengrab immer noch vor.

Wenn es von extern nicht geht, dann versuch es von intern, mit Automatisierung: VBA von VB.NET aus. Wir machen das gelegentlich von Word aus, meist aber anders herum: Word von Access aus automatisieren. Hier http://support.microsoft.com/kb/317113/de steht prinzipiell, wie's geht.
19.08.2011
mupan 575 1 8
mupan 575 1 8
0
Um die Tabellen zu ermitteln, gibt es m.W. zwei Varianten:
1. Wenn auf dem PC, auf dem Deine Anwendung läuft, Access vorhanden ist, kannst Du Access selbst verwenden, z.B. so:

AccApp = Interaction.CreateObject("Access.Application")
AccApp.OpenCurrentDatabase(DBNameMitPfad)

Zugriff auf die Tabellen gibt es dann mit der Auflistung:
AccApp.CurrentDb.TableDefs

Notwendige Verweise im Projekt:
Microsoft.Office.Core
Microsoft.Office.Interop.Access



2.Wenn das nicht geht, kannst Du noch DAO verwenden:
(Code aus dem Kopf geschrieben, daher nur als Anregung zu verstehen)

Dim DB As dao.Database
Dim DBE As dao.DBEngine

DBE = New dao.DBEngine
DBE.SystemDB = Systemmdw
DBE.CreateWorkspace("", Benutzername, Kennwort)
DB = DBE.OpenDatabase(DBNameMitPfad, False, False, ";pwd=" & Kennwort)
Und dann wieder Zugriff auf die Tabellen-Auflistung mit:
DB.TableDefs


Notwendige Verweise im Projekt:
DAO
21.08.2011
SelectCase 31 1
0
ICh habs jetz anders umgesetzt^^
bei ner OleDbConnection kann man einfach folgendes machn:
Tab = Connection.GetSchema("Tables")
damit bekommt man einfach alle tabellen zurückgegeben die vorhanden sind ^^
22.08.2011
DerPunk 1,2k 1 7
-1
Schau mal hier nach deinem Connection string
20.08.2011
KN 1,7k 1 8
-2
Hast du während des Zugriffs vielleicht die Access-DB und die Entwurfsansicht der Tabelle offen? Wenn ja, dann mache die Entwurfsansicht zu, und du kannst auf die Tabelle zugreifen.
19.08.2011
KN 1,7k 1 8
ich hab die natürlich nich offen... von außen wird der zugriff auf die systemtabellen einfach verweigert
DerPunk 19.08.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH