Problem mit VB und Acces Datenbank

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Kampi.

    Problem mit VB und Acces Datenbank

    Hallo Forum,

    ich bin recht neu in dem Gebiet VB und habe erst vor ein paar Tagen mit VB angefangen.
    Nun möchte ich eine Datenbank auslesen. In meinem Datenbankfile stehen verschiedene Softwareversionen zu verschiedenen Geräten drin.
    Über einen Button soll die Datenbank ausgelesen werden und die Software in einer Textbox dargestellt werden.
    Ich habe mir auch schon dieses Turtorial durchgelesen:

    [VB 2008] Grundkurs Datanbank Programmierung

    Auf Grundlage dieses Turtorials habe ich folgenden Code geschrieben:

    Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= C:\Users\Daniel\Desktop\Konfigurator\Software.accdb"
    3. cmd.Connection = con
    4. Try
    5. con.Open()
    6. cmd.CommandText = "SELECT * FROM Software WHERE ID = 0"
    7. reader = cmd.ExecuteReader
    8. Do While reader.Read
    9. Auslesen.Text = reader("Software MPU SR520")
    10. Loop
    11. reader.Close()
    12. con.Close()
    13. Catch ex As Exception
    14. con.Close()
    15. MsgBox(ex.Message)
    16. End Try
    17. End Sub


    Aber wenn ich das Programm starte und auf den Button klicke kommt dieser Fehler:



    Meine Datenbank ist in dem selben Ordner gespeichert wie mein VB Programm. Beides befindet sich in einem Ordner auf meinem Desktop.
    Welchen Fehler habe ich gemacht?

    Wäre schön wenn mir jemand helfen kann :)

    Gruß
    Daniel
    Ja ich nutze Win7 64. Und ich nutze als Provider nun "Microsoft.ACE.OLEDB.12.0".
    Nun kommt der Fehler "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben." Was bedeutet das? Hab ich in der Datenbank was vergessen oder bezieht sich das auf die Verbindung zur Datenbank?
    ich empfehle, bevor man sich mit Sql, DBCommands und DBReadern verkünstelt, sich erstmal mit typisiertem Dataset und Databinding zu beschäftigen.
    Weil ADO.Net ist so konzipiert, dass man sich jeweils einen DB-Ausschnitt in ein typDataset lädt, und im weiteren ausschließlich mit diesem arbeitet (vorzugsweise mit Databinding).

    Die meisten Sql-Abfragen sind mit typDataset garnicht kompatibel und daher unbrauchbar, sodaß Leute, die von der Sql-Seite in die Datenbänkerei einsteigen, üblicherweise erhebliche Probleme haben, ADO.Net richtig für sich zu nutzen.

    ADO.Net-Anwendungen kann man auch ganz ohne DB entwickeln, und erst später eine beliebige DB hinterlegen - gugge DB-Programmierung ohne Datenbank

    Zum Anbinden einer Access-DB bastelte ich einstens folgendes Tutorial: "Datenbank in 10 Minuten" auf Movie-Tuts

    Aber der Sample-Code wird bei dir nicht laufen, denn der Tutorial-Code verwendet noch olle Jet-DBProvider.
    Also bestenfalls könnteste das Tut nach bauen, unter Verwendung einer DB auf deinem System.

    Ansonsten werde ich demnächst mal guggen, ob ich auch einen Sample-Code dranmachen kann, der mit OLEDB.12.0 auf die DB zugreift - hoffe, kriege das bis morgen abend hin.
    Danke für die Antwort.
    Ich hab dann gleich noch eine Frage....die hat nichts mit Datenbanken zu tun aber ich möchte dafür jetzt keinen extra Thread aufmachen.
    Kann man in Visual Basic eine Dokumentenvorlage einlesen, wo je nach Variablenwert was anderes drin steht? Also das man ein blankes Dokument hat was sich dynamisch verändern kann.
    Beispiel:
    In dem Dokument gibt es ein Feld "Name:" und das man dann z.B. einen Namen aus einer Datenbank auslesen kann und in dem Dokument dann steht "Name: Paul".
    Geht sowas?
    glaub nich.

    erschiene mir auch nicht sinnvoll
    hier eine DB-App, die hofflich auch die Win7-geknechteten Progger unterstützt.

    (War nich so schwer - hab einfach mein Tut selbst nachgemacht)
    Dateien

    ErfinderDesRades schrieb:

    hier eine DB-App, die hofflich auch die Win7-geknechteten Progger unterstützt.

    (War nich so schwer - hab einfach mein Tut selbst nachgemacht)

    Danke :)
    Ich probiere es heute abend mal aus.
    Kann ich den mit VB überhaupt ein Word-Dokument erstellen? Es geht mit darum, dass ich in meinem Programm verschiedene Sachen auswählen möchte und nachher wenn man das drucken möchte sollen die Sachen, die man ausgewählt, hat auf einem Dokument stehen.

    Kampi schrieb:

    Kann ich den mit VB überhaupt ein Word-Dokument erstellen? Es geht mit darum, dass ich in meinem Programm verschiedene Sachen auswählen möchte und nachher wenn man das drucken möchte sollen die Sachen, die man ausgewählt, hat auf einem Dokument stehen.

    VB kann keine Word-Dokumente bearbeiten.
    VB kann über Office-InterOp die Word-Anwendung steuern, wenn diese auf dem Zielrechner installiert ist.
    Das ist aber eine ganz andere Baustelle, die mit Datenbanking garnix zu tun hat.

    Allenfalls hat sie soviel damit zu tun, dass bei der Datenmodellierung entschieden werden muß, ob nur Dateinamen in der DB verwaltet werden, oder ob die kompletten Dokumente als Blob eingespeichert werden.
    Will man die Blobs dann bearbeiten, muß man sie als Dokumente wieder auf Platte schreiben, damit man mit Office-InterOp die zuständigen Anwendungen fernsteuern kann.

    Aber wie gesagt, als Problem-Reihenfolge täte ich empfehlen:
    1. typisiertes Dataset und Databinding an DatagridView - DB-Programmierung ohne Datenbank, oder Daten laden, speichern, verarbeiten
    2. Datenmodellierung
    3. fortgeschrittenes Databinding - vier Views
    4. Office-InterOp
    5. Datenmodellierung unter Berücksichtigung von Office-InterOp
    6. Datenbank hinterlegen

    ErfinderDesRades schrieb:

    Kampi schrieb:

    Kann ich den mit VB überhaupt ein Word-Dokument erstellen? Es geht mit darum, dass ich in meinem Programm verschiedene Sachen auswählen möchte und nachher wenn man das drucken möchte sollen die Sachen, die man ausgewählt, hat auf einem Dokument stehen.

    VB kann keine Word-Dokumente bearbeiten.
    VB kann über Office-InterOp die Word-Anwendung steuern, wenn diese auf dem Zielrechner installiert ist.
    Das ist aber eine ganz andere Baustelle, die mit Datenbanking garnix zu tun hat.

    Allenfalls hat sie soviel damit zu tun, dass bei der Datenmodellierung entschieden werden muß, ob nur Dateinamen in der DB verwaltet werden, oder ob die kompletten Dokumente als Blob eingespeichert werden.
    Will man die Blobs dann bearbeiten, muß man sie als Dokumente wieder auf Platte schreiben, damit man mit Office-InterOp die zuständigen Anwendungen fernsteuern kann.

    Aber wie gesagt, als Problem-Reihenfolge täte ich empfehlen:
    1. typisiertes Dataset und Databinding an DatagridView - DB-Programmierung ohne Datenbank, oder Daten laden, speichern, verarbeiten
    2. Datenmodellierung
    3. fortgeschrittenes Databinding - vier Views
    4. Office-InterOp
    5. Datenmodellierung unter Berücksichtigung von Office-InterOp
    6. Datenbank hinterlegen

    Ok dank dir dafür :)
    Die Frage war auch erstmal nur am Rande. Für mein fertiges Programm muss
    ich sowieso beide Probleme lösen....ich probiere heute abend erstmal
    nochmal das mit der Datenbank.
    siehe Post#4 - die DB ist dein letztes und kleinstes Problem. Das Tut "Datenbank in 10 Minuten" auf Movie-Tuts empfehle ich dir nur zu deiner Beruhigung, dass du mal gesehen hast, dass ein effizienter DB-Zugriff ohne Sql-Klamüser, DBCommands und DataReader vonstatten geht.

    Dann wäre vordringlich, die anneren Technologien zu erlernen, insbesondere Datenmodellierung (was ja eine Denkweise ist - keine Technologie).
    Zu Datenmodellierung die relationale GrundIdee verstehen, und das Main.doc von "Datenbank in 10 Minuten" auf Movie-Tuts lesen.
    Das Problem ist, dass WinXp den Jet-Provider installiert hat, und Win7 den Ole12-Provider.

    Beim portieren muss man halt bei Connection, Commands, DataAdapter und Zeugs die richtigen Objekte angeben, die auf einem verfügbaren Provider basieren.

    Vlt. am einfachsten isses bei Verwendung der DBExtensions.
    Hier gibt man an nur einer Stelle eine ProviderFactory an - den Rest konfiguriert das Teil selbst.

    Aber das ist schon mittelhohe Schule - wie gesagt: DB hinterlegen sollte zu den letzten zu lösenden Problemen gehören.

    Kampi schrieb:

    die Ausgabe in ein Word oder Excel Dokument
    Ich fürchte, du hast die Grundidee noch nicht ganz verstanden.
    Du solltest erst mal über ein relationales Datenmodell nachdenken, bevor du dir über die technische Datenhaltung überhaupt Gedanken machst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --