Excel, um auf Importfehler zuzugreifen

8

Zweck: So importieren Sie Daten von Excel in MS Access-Datenbank (.mdb).

Referenz: Ссылка

Technologie: C # .net Windows Forms

Fehler: "Das Microsoft Jet-Datenbankmodul kann die Eingabetabelle oder die Abfrage 'Personen $' nicht finden. Stellen Sie sicher, dass sie existiert und der Name korrekt geschrieben ist."

Code:

%Vor%

Hinweis : Ich habe eine MS Access-Datenbank namens "DestinationDB.mdb" mit Tabellenname als "Personen" mit den folgenden Feldern erstellt: KontaktID, Vorname, Nachname, Alter

Danach habe ich dasselbe nach Excel exportiert, um die Header-Struktur beizubehalten.

Sobald dieses Excel exportiert wurde, habe ich manuell 10 Datensätze hinzugefügt.

Beide Dateien befinden sich unter "c: //exportdb/source.xls" & amp; "c: //exportdb/DestinationDB.mdb".

Excel-Snapshot:

Ms Zugriffs-Snapshot:

Bitte helfen Sie mir, den oben genannten Fehler zu beheben.

Danke!

    
Dev 01.06.2017, 20:13
quelle

2 Antworten

3

Ihre Verbindungszeichenfolge stimmt nicht mit der Referenz überein, der Sie folgen:

Ihre Verbindungszeichenfolge:

%Vor%

Seine Verbindungszeichenfolge hat die erweiterten Eigenschaften und gibt Excel 8.0 an:

%Vor%

Das andere Problem ist, dass Ihre Datenquelle die Access Database DestinationDB.mdb ist. Beachten Sie, dass die Referenz, die Sie verfolgen, Excel als Datenquelle angibt.

    
Jeremy Thompson 09.06.2017, 04:05
quelle
1

Der Fehler klingt korrekt. Es sieht so aus, als wäre die Person $ in der Tabelle, aber Sie haben eine Verbindung zur Datenbank geöffnet (Sie können keine "in eine Auswahl einfügen" einfügen, da sie sich nicht in derselben Datenbank befinden oder verknüpft sind). Sie müssen wahrscheinlich eine Verbindung zu beiden öffnen (dann eine abfragen, in die andere einfügen). Etwas wie der folgende Pseudo-Code würde funktionieren:

1.) Öffnen Sie eine Verbindung zur Access-Datenbank wie Sie.

2.) Öffnen Sie eine separate Verbindung zur Tabelle.

3.) Fragen Sie die Personen $ in der Tabelle ab, geben Sie einen DataReader (ExecuteReader) zurück.

4.) Iterieren Sie den DataReader und führen Sie für jede Zeile eine insert-Anweisung aus (Einfügen in die Access-Datenbank). Verwenden Sie dazu eine parametrisierte Anweisung, um sich gegen SQL-Injection zu schützen / Dinge, die die SQL versehentlich durcheinander bringen. Sie sprechen von einer Datenquelle und fügen den anderen Datensatz nach Datensatz hinzu.

Wenn Sie besorgt sind, dass die gesamte Menge von Datensätzen, in denen sie erstellt wird, betroffen ist, verwenden Sie eine Transaktion und führen Sie einen Rollback durch, wenn Fehler auftreten. Das wird sicherstellen, dass Sie alles oder nichts bekommen.

    
b.pell 07.06.2017 02:29
quelle

Tags und Links