Zum Inhalt springen

[C#] Verknüpfung einer Access-Tabelle


Pr3dat0r

Empfohlene Beiträge

Guten Morgen liebe Community,

ich bin soeben dabei, eine Verknüpfung auf Access-Ebene via C#-Code einzubinden. Mein Konstrukt sieht folgendermaßen aus:

ADOX.CatalogClass cat = new ADOX.CatalogClass();

ADOX.TableClass tbl = new ADOX.TableClass();


ADODB.ConnectionClass cn = new ADODB.ConnectionClass();


cn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=V:\\db1.mdb", "", "", -1);


cat.ActiveConnection = cn;


tbl.Name = "tName";

tbl.ParentCatalog = cat;



tbl.Properties["Jet OLEDB:Link Datasource"].Value = "V:\\db2.mdb";

tbl.Properties["Jet OLEDB:Remote Table Name"].Value = "tName";

tbl.Properties["Jet OLEDB:Create Link"].Value = true;


cat.Tables.Append(tbl);

cn.Close();

Die Verknüpfung legt er mir sauber an, allerdings bekomme ich es nicht hin, dass er den Append-Schritt auslässt, wenn die verknüpfte Tabelle schon existiert. Somit läuft er mir bei erneutem Drüberrattern in einen Fehler (das Objekt "tName" existiert bereits).

Mein zweites Problem ist dann die Pfadangabe via Variablen, die ich habe.

Der zweite Pfad (db2.mdb) scheint zu funktionieren, aber der erste (db1.mdb) will einfach nicht...

Ich bitte um Hilfe!

Vielen Dank im Voraus!

Gruß,

Pr3dat0r :.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

mach doch einfah eine IF-Anweisung drüber in der er nur reingeht und append ausführt wenn die Tabelle nicht vorhanden ist.

Soviel ich weis kann man die Parameter vom User/Password etc weglassen wenn keine vorhanden/genutzt nicht benötigt werden, dies machst du ja auch beim 2ten da lässt du es auch weg. Versuchs vll gehts ja wenn du die Parameter weglässt weil wenn "" drinsteht sucht er nach "" und findest es ned wär was anderes wenn du null/string.empty übergibst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi und danke erst mal für die Antwort!

An einer If-Anweisung hab ich auch schon etwas rumexperimentiert. Aber wie frage ich denn ab ob die Tabelle schon existiert?

Wenn ich die DataSource auf

cn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=V:\\db1.mdb", -1);
anpasse, erscheint folgender Fehler:
Fehler 1 Keine Überladung für die Open-Methode nimmt 2 Argumente an.
Auch bei
cn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=V:\\db1.mdb");

kommt ein ähnlicher Fehler:

Fehler 1 Keine Überladung für die Open-Methode nimmt 1 Argumente an.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antwort!

Das hab ich nach etwas Gebastel hinbekommen:

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=")

sb.Append(dbsFK);

cn.Open(sb.ToString(), "", "", -1);

Nu fehlt mir noch die Abfrage, ob es die Verknüpfung schon gibt...

Help!

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...