Import .xls in Access-Datenbank über mein vb Programm

  • Allgemein

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von chenjung.

    Import .xls in Access-Datenbank über mein vb Programm

    Hallo ihr lieben,

    ich habe da mal wieder eine Frage *g*

    Und zwar: Das Thema Import in Access (mit einer excel Datei).

    .net Visual Studio Ultimate 2012
    .NET Framework 4.5

    Hintergrund:
    Als Ausgangsdatei habe ich eine .txt die fast Täglich von unseren Kartenleser mit Datengefüllt wird.
    Bisher habe ich die neuen Daten manuell über eine Eingabemaske meines Programms in Access gespeichert
    was sehr gut funktioniert.

    Da ich diesen Schritt gern "einfacher" machen würde, habe ich daher eine neue Form gemacht,
    dort 2 Richtextboxen erstellt + Buttons.

    Sieht so aus:


    Richtextbox2 lädt die .txt Datei und zeigt diese an. Mit dem druck auf den Button speichern als .xls speichert den Text in der
    in einer .xls Datei (nach dem öffnen der Datei stimmen alle Angaben und die Anordnung, somit passt das!)

    Richtextbox1 lädt dann die .xls Datei welche gespeichert wurde und zeigt diese an.

    Nur jetzt stellt sich mir die Frage, wenn ich den Import meiner Richtextbox1 in Access importiere, was auch geht, aber er speichert alles in
    eine Spalte und füllt diese dann.

    In Access sieht das dann so aus, nach dem ich den Button "Import to Access" (Daten aus der Richtextbox1) gedrückt habe:


    Code für den Import aus der Richtextbox in Access:
    Spoiler anzeigen
    'Daten Import in Access

    Dim Karte1 As String = RichTextBox1.Text

    Using dbConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\1.mdb")

    dbConn.Open()

    Dim strSql = "INSERT INTO [test] (Karte) VALUES ('" & RichTextBox1.Text & "')"

    Using objcmd = New OleDbCommand(strSql, dbConn)

    objcmd.Parameters.AddWithValue("@Karte", RichTextBox1)

    objcmd.ExecuteNonQuery()

    End Using

    End Using

    MessageBox.Show("Datenexport wurde Importiert")



    In Access, also wenn ich einen Import über meine gespeicherte .xls Datei mache, also manuell, läuft es so, wie es soll, nur über mein Programm will er nicht.

    Ich denke, ich muss wohl anstatt der Richtextbox2 die datei "113.xls" übergeben? Bzw. auch die Spalten angeben, oder?

    Hoffe das ganze ist nicht zu verwirrend *g*
    Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

    chenjung schrieb:

    Als Ausgangsdatei habe ich eine .txt die fast Täglich von unseren Kartenleser mit Datengefüllt wird.
    Was steht den da so alles drinnen?
    Wie es in deinem 2. Bild aussieht, ist das eine .csv-Datei?
    Und die sollte doch richtig in Access übernommen werden...
    Warum der Umweg über Excel?

    Geht das so nicht?
    1. .txt zeilenweile in eine List(Of String) einlesen
    2. Diese Liste dann durchsteppen und jeweils beim ; splitten.
    3. Das beim Splitten erstellte Array enthält nun deine Daten sauber getrennt.
    4. Das Array durchgehen und in die DB schreiben.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Vielen Dank für die Antworten.

    @VB1963: Der Screenshot (Bild2) zeigt die Access DB. (Nach dem Import der .xls in Access).

    @MrMo: Da werde ich mal gucken, bezüglich string.

    Also ich bin den Weg über Excel gegangen, da meine Vermutung war, dass es so einfacher wäre, den Import zu machen, da die Datenstäze via ; getrennt werden.

    Der Inhalt der .txt sieht so aus:

    Karte;PersoNr;Chipnummer;
    455544;210455414547;45414514444
    88558;4545882244877;65232892214
    usw.

    (Sind bis jetzt 260 Einträge.)

    Und so wiederholt sich das Zeile für Zeile.

    Daher war meine Idee, erst den Weg über Excel zu gehen, und die Export-Datei dann in Access zu importieren, via Knopfdruck. Was im Prinzip ja auch geht, er packt alles nur in eine Zeile ^^

    Die Spalten in der Access Datenbank haben jeweils "langen Text" (da es bei kurzen Text zu Fehlern kam).
    Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „chenjung“ ()

    @chenjung

    Mein Vorschlag oben wäre mit dem Aufbau der Datei problemlos machbar.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich danke euch für eure Vorschläge.

    @MrMo: Ich werde mir diese Möglichkeit ebenso ansehen, wie die von VB1963.

    Ich selbst merke gerade, ich muss mir das alles noch mal genau ansehen, da ich selbst diese Art der Dateneingabe / Verarbeiten, erlenen muss!

    Eure Denkanstöße gehen aber genau in die richtige Richtung! Danke dafür.
    Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
    @chenjung Ich mache das in meinem Programm genau so wie @mrMo das beschireben hat. Nur das ich die CSV nach dem Splitten erst einmal in eine Datatable speichere.
    Ich weiß ja nicht ob du die ausgelesenen Daten noch vorher verarbeiten willst, in der DT lassen die sich aber dann schöner verwalten oder z.B. zur Prüfung ansehen.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    HEy

    Eine Frage. Ist die Anwendung in Access? Denn der Import lässt sich auch direkt über Access automatisieren, ohne .NET Anwendung dazu.
    msdn.microsoft.com/en-us/library/office/ff835958.aspx
    Das ist meine Signatur und sie wird wunderbar sein!
    Hi Mono,

    mein Programm greift zum Auslesen / Einfügen auf die Access.mdb zu.

    Der heißt, wenn jetzt zur Zeit eine Änderung in der Datei erfolgt (einscannen einer neuen Karte) füge ich jetzt noch manuell die Daten über meine Suchmaske in die Access Datenbank.

    Der Import in Access direkt über die .txt Datei läuft ja einwandfrei nur eben nicht über meine Methode im Programm :D

    Daher batel ich da noch bisschen.
    Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!