PDA

Vollständige Version anzeigen : Excel in Datenbank importieren


rheiner
28.08.2008, 19:16
Hallo zusammen,

ich stehe vor folgendem Problem:

Aus einem ERP System exportiere ich eine Statistik nach Excel.
Nun möchte ich die Daten gerne in mein VB.Net Programm importieren. Also in die Datenbank.
Die Tabelle meiner Datenbank hat die gleichen Spaltennamen wie die in Excel.

Kann mir jemand helfen oder einen Tip geben, wie ich das am besten realisiere?

Folgendes muss geschehen:
Button > Open File Dialog > Excel Datei auswählen > OK = Importieren der Daten

rheiner
29.08.2008, 08:28
Ok, das mit dem Importieren habe ich soweit hinbekommen.
Nur bleibt ketzt das Problem, das ich die Daten in meiner Datenbank speichern möchte.
Es muss ja für jeden Datensatz eine ID angelegt werden.
Bei speichern soll er überprüfen, ob die Projektnummer schon vorhanden ist, wenn ja muss diese aktualisiert werden.

Aber wie? :D

hcscherzer
29.08.2008, 08:58
Erste Frage: was ist das für eine Datenbank, in der Du das speichern möchtest?
In den meisten gibt es die Möglichkeit, einen 'Autowert' (Access) oder eine 'Identity' (MSSQL) in der Tabellen- bzw. Felddefinition zu vereinbaren, damit jeder neue Satz einen neuen ID Wert bekommt.
2. Wie ist das mit der 'Projektnummer' zu verstehen? Ist das der ID-Wert? Oder ist das ein Sekundärschlüssel zu einer übergeordneten Tabelle?

rheiner
29.08.2008, 10:21
Also die Daten werden in einer Access-DB gespeichert. Die Projektnummer ist nicht der ID-Wert (Auto-Wert), ist aber der maßgebende Wert der Daten.
Das heist, es muss nach der Projektnummer gesucht werden und ggf. die Daten zu aktualisieren.

hcscherzer
29.08.2008, 13:37
Vielleicht ist es eine blöde Frage aber ich stelle sie trotzdem mal:
warum importierst Du die Excel Daten nicht direkt in die Access-DB mit den dort befindlichen Import-Tools?

Und: wenn das ID Feld ein AutoWert ist, bekommt doch jeder neue Datensatz automatisch eine neue ID!?

Die Projektnummer ist nicht der ID-Wert (Auto-Wert), ist aber der maßgebende Wert der Daten.
Das heist, es muss nach der Projektnummer gesucht werden und ggf. die Daten zu aktualisieren.
Um genauere Auskünfte über ein mögliches Verfahren geben zu können, müsste mehr über die Datenstruktur bekannt sein. Ich gestehe, dass ich die Zusammenhänge zwischen ID und ProjNr noch ganz durchblicke ...

rheiner
29.08.2008, 14:45
Also,

in unserem ERP System ist die Projektnummer der Wert, am sich alle Angebote, Aufträge, etc. ableiten lassen.
Also anhand der Projektnummer kann ich den Kunden, die bestellten Artikel, den Warenverkehr, etc. ableiten.

Ich exportiere aus meinem ERP System folgende Daten:

Projektnummer, Kundennummer, Artikel, Preis, Menge

Diese Daten möchte ich nun in mein Programm laden.
Mein Programm hat eine eigene Datenbank, in der der ID-Wert nur der Wert ist, den die Datenbank zur Zurodnung des Datensatzes benötigt. Beim Ändern des Datensatzen z.B.!
Beim abgleichen der Daten, bekommt jeder neue Eintrag in meine Datenbank eine ID zugewisen (Autowert).
Wenn ich meine Datenbank mit der exportierten Excel-Tabelle abgleiche, soll überprüft werden, ob die Projektnummer schon vorhanden ist. Wenn ja, sollen die Daten in meiner Tabelle überschrieben werden. Wenn nicht, Neuanlegen.


Ich hoffe, es ist verständlich :-)

hcscherzer
29.08.2008, 16:07
Zuerst:UPDATE t
INNER JOIN t_neu ON t.proj_nr = t_neu.proj_nr
SET t.k_nr = t_neu.k_nr, t.art = t_neu.art, t.preis = t_neu.preis, t.menge = t_neu.menge;

Und dann:INSERT INTO t (proj_nr, k_nr, art, preis, menge)
SELECT t_neu.proj_nr, t_neu.k_nr, t_neu.art, t_neu.preis, t_neu.menge
FROM t_neu where t_neu.proj_nr not in (select proj_nr from t);

rheiner
02.09.2008, 12:57
Leider klappt das nicht. Besser gesagt, ich versteh das nicht ganz.

Über ein OpenFileDialog suche ich mir die Datei aus.
Wenn ich auf den OK Button klicke, sollen die Daten übertragen werden.

Der name der Datei steht in einem textfeld auf dem Formular.
Er soll quasi die Spalten der Excel-Tabelle mitder DB-Tabelle abgleichen.

hcscherzer
02.09.2008, 14:57
Moin.

Leider klappt das nicht. Besser gesagt, ich versteh das nicht ganz.Ich hatte vorausgesetzt, dass Du die Anbindung an die Datenbank, in der die Tabelle sich befindet, in die die Excel Daten sollen, bereits realisiert hast.
Wenn ich auf den OK Button klicke, sollen die Daten übertragen werden.

Also: ein Connection-Objekt muss definiert und initialisiert sein.
Oder wie kommst Du an die Access Daten ran?

Meine beiden SQL Statements gehen davon aus, dass die Daten bereits in der Access DB sin und zwar in der Tabelle t_neu während die vorhandenen Daten in der Tabelle t sind. Diese Befehle müssen dann aus der Anwendung unter Verwendung des Connection-Objekts gegen die Datenbank geschickt werden.

Wie schon erwähnt würde ich den Import der Daten nicht neu programmieren sondern mit den in Access vorhandenen Import-Tools bewerkstelligen.

Wenn Du in Beitrag #1 schreibstNun möchte ich die Daten gerne in mein VB.Net Programm importieren. sollte Dir klar sein, dass das mit vb.net geschriebene Programm (FrontEnd) die Daten nicht verwaltet: das macht die angebundene Datenbank (BackEnd).

rheiner
05.09.2008, 09:47
Danke schön...

War mein Gedanken Fehler :D

Hat super funktioniert!