Zum Inhalt springen

Tabellennamen von Access-Dateien(.mdb) über ODBC-Abfragen


Beckerman2609

Empfohlene Beiträge

Hallo zusammen,

bin gerade dabei eine Verbindung zu einer Access-Datei herzustellen. Habe auch schon erfolgreich eine Verbindung hergestellt. Leider muss ich die Tabellennamen innerhalb der mdb-Datei vorher kennen, damit ich diese selektieren kann.

Ich suche nach einer einfachen Abfrage, welche mir die gesamten Tabellennamen einer mdb zurückgibt.

Bisher lautet meine Abfrage folgendermaßen

string sql = @"SELECT * FROM nameDerTabelle";

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Tabellennamen lassen sich folgendermaßen auslesen:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.Odbc;


namespace tablenamesFromMDB

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {

            OdbcConnection dbcon = new OdbcConnection();

            dbcon.ConnectionString = @"Driver={Microsoft Access Driver (*.mdb)}; Dbq=D:\#\My_Snippets\test.mdb;";

            dbcon.Open();

            dataGridView1.DataSource = dbcon.GetSchema("tables");

        }

    }

}

In meinem Beispiel wird folgende Datatable zurückgegeben:

scheme.gif

Das heisst für dich im Klartext, dass du nurnoch die datatable filtern musst. Und zwar alle Systemtabellen rausnehmen.

Aus den restlichen tabellen kannst du dir dann die gewünschten heraussuchen.

Noch fragen?

Gruss mepp

Link zu diesem Kommentar
Auf anderen Seiten teilen

in MSysObjects stehen alle objekte inkl. tabellen der datenbank. sollten die berechtigungen auf diese systemtabelle ausreichend grosszügig gesetzt sein, lassen sich damit sowohl mit ODBC als auch mit OLEDB die tabellennamen auslesen. kriterien sollten sein: Type=1 (1: tabellen) sowie Flags=0.

eine andere möglichkeit wäre OLEDB, da kann man mit schemata arbeiten (beispiel in VB, müsstest du halt in C# umschreiben).

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab in diesem Sinne ein neues, ähnliches Problem:

Habe mittels ODBC-Connection eine Verbindung zu einem Exceldokument hergestellt. Bei der SQL-Abfrage muss man auch hier die Tabellennamen des Dokuments angeben:

Bsp:

SELECT * FROM [Tabelle1$A1:F100]

Wie komme ich also an die verschiedenen Namen der Tabellen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort.

Das sieht so weit ganz gut aus. Konnte es bisher jedoch nicht ausprobieren. Habe mittlerweile eine ganze Weile versucht den Ausdruck aus dem Beispiel "Microsoft.Office.Tools.Excel.NamedRange NamedRange1 " zu finden. Habe alle möglichen Verweise und dll's gesucht, die irgendwas mit Excel zu tun haben. Leider hat das nicht funktioniert.

"Excel.Worksheet " kann ich allerdings benutzen. Die dll, die diesen Verweis laut Microsoft enthalten soll, habe ich bei mir eingebunden. Weiß also nicht woran das noch liegen könnte. Ich arbeite mit Visual Studio 2005 - Professional Edition.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also "Microsoft.Office.Tools.Excel.Names" funktioniert nicht.

Habe Office 2007 installiert.

Hatte schon ein paar Mal eine Warnung, die vielleicht etwas damit zu tun haben könnte:

"Für folgende Komponenten, auf die verwiesen wird, sind aktualisierte benutzerdefinierte Wrapper verfügbar: Excel". Bei Doppelklick geht eine Messagebox auf: [...] Möchten Sie die automatisch generierten Wrapper durch die benutzerdefinierten Wrapper ersetzen?

Habe diese Meldung schon öfter bekommen und mit "ja" geantwortet.

Derzeit befindet sich die Using-Direktive "using Microsoft.Office.Interop.Excel;" in meinem Programm.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...