Einen Wert aus einer Access Tabelle in eine Variable übergeben

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Einen Wert aus einer Access Tabelle in eine Variable übergeben

    Hallo

    ich habe schon damals mit Visual Basic 6.0 in meiner Umschulung erfolgreich programmiert, nun wollte ich mich wieder einarbeiten, nur mit Visual Basic 2013 und Access ist es etwas anders.

    Die Datensätze konnte ich damals mit Recordset auslesen und an Variablen übergeben. Mit Visual Basic 2013 geht es nicht mehr so einfach.

    Soweit habe ich es schon geschafft die Datenbank einzubinden nur das auslesen einzelner Datensätze klappt noch nicht. Möchte gerne den ersten Wert aus der Tabelle im Datensatz in der TextBox "Txt_show.text" anzeigen lassen weil ich gerne mit diesen werten weiter arbeiten möchte.

    Das DataGridView1 habe ich nur zur Testzwecken eingebunden um die Funktion überhaupt zu testen dort bekomme ich auch das Resultat. :/

    -------------------------------------------------Quellecode-----------------------------------------------

    VB.NET-Quellcode

    1. Verbindung zur Datenbank herstellen'
    2. Dim myOleDbConnection As New OleDb.OleDbConnection
    3. Dim db_pfad as string
    4. myOleDbConnection.ConnectionString = _
    5. "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""D:\Pfad.mdb"""
    6. Try
    7. myOleDbConnection.Open()
    8. Catch ex As Exception
    9. MessageBox.Show(ex.Message, _
    10. "Beim Öffnen der Datenbank ist ein Fehler aufgetreten.")
    11. End Try
    12. ' SelectCommand erstellen welches die "Select-Abfrage" gegen die'
    13. ' Datenbank beinhaltet'
    14. Dim myOleDbSelectCommand As New OleDb.OleDbCommand
    15. myOleDbSelectCommand.Connection = myOleDbConnection
    16. myOleDbSelectCommand.CommandText = "select * from Pfad"
    17. ' DataAdapter mit dem SelectCommand verbinden'
    18. Dim myOleDbDataAdapter As New OleDb.OleDbDataAdapter
    19. myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand
    20. ' und mit dem DataAdapter das DataSet füllen'
    21. Dim myDataSet As New DataSet
    22. myOleDbDataAdapter.Fill(myDataSet, "Pfad")
    23. ' Daten an das DataGridView binden'
    24. DataGridView1.DataSource = myDataSet
    25. DataGridView1.DataMember = "Pfad"
    26. txt_show.Clear()
    27. db_pfad = erster Wert aus der Tabelle Pfad '<----------------------- Hilfe Hier!!!! (Konto.mdb)
    28. txt_show.text = db_pfad

    ----------------------------------------------------------------------------------------------------

    Vielen Danke

    Maiki1706

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „maiki1706“ ()

    Ich würde in deinem Fall nicht die Werte in eine Textbox ziehen sondern die Access DB in einem DataGridView anzeigen lassen also DataBinding arbeiten.
    Du kannst dann auch komplett über deine Forms Anwendung Daten bearbeiten usw. aus der Forms Anwendung speicherst du die Daten wieder in die Access DB zurück.
    Soll heißen du müsstest garnicht mehr mit Access selbst arbeiten.

    Aus deinem Post kann ich auch schwer erkennen was dein genaues vorhaben ist bzw. was du bewirken willst?

    Du kannst auch mal reinschnuppern und das ganze ohne Datenbank ausprobieren:
    die vier Views auf Video
    DatasetOnly: DB-Programmierung ohne Datenbank
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snaptu“ ()

    Ja nur ich brauche den Wert aus der Tabelle dafür um damit weiterzuarbeiten. das mit der TextBox habe ich nur aus Testzwecken gemacht. Eigentlich soll dieser Wert in einer Variable zu gewiesen werden!

    Im Jahr 2001 habe ich in meiner Umschulzeit ein Visual Basic Projekt mit Visual Basic 6.0 und Access 2000 entwickelt, es hieß Timeworker ( Arbeitszeiterfassung der Mitarbeiter). Jetzt genau alles zu Erklären würde den Rahmen Sprengen. Nur mit der Aktuellen Plattform Visual Basic 2013 Funktioniert der Quellcode nicht mehr.

    Vielen Dank

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „maiki1706“ ()

    Ok.
    Beim Timeworker gibt es zwei Datenbanken. Die erste ist nur dafür da den Pfad zur Mitarbeiter Datenbank zu Speichern und später beim Aufruf des Programms sofort die Aktuellen Gespeicherten Datenbank einzubinden. Diese zweite Datenbank soll in einen Netzwerk Liegen, damit sich alle Clients auf sie Zentrale Datenbank zugreifen können um dann sofort die Arbeitszeit zu erfassen.

    Da mein Progamm auch später für andere Betriebe genutzt werden sollte soll der Pafd zur Mitarbeiter Datenbank schon Variable sein, und deshalb die Lösung mit der ersten Datenbank die natürlich im selben Verzeichnis liegt wie das Programm auch.

    Nun fragst du dich warum Access? logo wäre mysql besser, nur damals hatte der betrieb nur Access.

    die erste Datenbank ist Lokal im selben Verzeichnis wie das Programm auch, man könnte auch eine Textdatei dafür nehmen und dort den Pfad zur zweiten Datenbank eintragen.
    Also das Programm startet und soll dann aus der ersten Datenbank den Pfad (z.b.: \\server\mitarbeiter\stunden.mdb) auslesen und dann soll das Programm diese Datenbank in Programm einbinden, damit die Mitarbeiter sich dort einloggen können. Beim ersten Start des Programmes gibt es zwar die Datenbank schon aber der wert von Pfad ist NULL und kann somit über das Programm neu eingetragen werden, damit es in jeden Firmen Netzwerk angepasst werden kann. In der ersten Datenbank gibt es im Moment nur eine Tabelle und eine spalte und ist ausschließlich im Moment nur für den Netzwerkpfad gedacht. Deshalb soll der Wert Pfad (z.b.: \\server\mitarbeiter\stunden.mdb) aus der Ersten Datenbank in eine Variable übergeben werden, um damit dann die eigentlich wichtige Mitarbeiterdatenbank in Programm einzubinden, damit die Mitarbeiter Ihre Stunden erfassen können.

    Das Programm hat bis Visual Basic 6.0 noch super funktioniert! Das Problem liegt bis dato nur an die Datenbankverbindung.


    Deshalb noch mal meine wichtige Frage um überhaupt weitermachen zu können. wie kann man aus der Datenbank Pfad den Wert von Pfad in eine Variable übergeben?


    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „maiki1706“ ()

    Du hast ein Projekt in VB6 und willst es in VB.Net umwandeln.
    Da kannst du nicht einfach 1:1 so weiter machen. Da musst du grundlegend von vorne beginnen, sonnst wird das ganze ein Murx. Dein Projekt erfordert ein typ. Dataset usw. (lies dich von @Snaptu angeführten Verweisen einmal ein - das ist erst der Anfang...)
    Das was du oben suchst, ist ein Connectionstring mit variablen DB-Pfad, der sich normalerweise in den Settings befindet.
    Ja das ist mir klar, werde ich auch machen nur aber das Konzept steht ja bereits und werde das Skript in jeden Formular so umsetzen das es für Visual Basic 2103 passt nur der erste schritt ist überhaupt so das ich die Werte aus der Datenbank bekomme um damit weiter arbeiten zu Können. Hätte vielleicht jemand ein Beispiel?

    Gruss

    Maiki
    Wurde alles schon gesagt, v.a., dass du mit deinem vb6-Wissen jetzt nichts mehr anfangen kannst.
    Du musst ganz neu erlernen, wie man Oberflächen gestaltet, Databindings setzt und Pipapo.
    Das hat mit der Datenbank noch gar nichts zu tun, und das ist das typische - sorry - Anfängerverhalten, dass sie die ganze Zeit immer nur auf die Datenbank stieren, und wie krieg ich die Daten aus der Datenbank, aber das ist der Holzweg, der alle Möglichkeiten verbaut.
    Lerne erstmal wie man ein typDataset aufsetzt und abspeichert, dann daran zu binden.
    Dann kannst du schon deine komplette Anwendung entwickeln, und erst ganz zuletzt die Db hinterlegen.
    Denn es ist dem Dataset egal, obs von Platte geladen wird oder aus einer Db, nur wenn man mit Db anfängt, gerät man zwangsläufig auf die untypisierte Schiene, und das wird Murx.

    Aber ein Beispiel, wie man eine Db ins Dataset bekommt: "Datenbank in 10 Minuten" auf Movie-Tuts
    Nur zur Beruhigung, um zu zeigen, dass es einfach geht.
    Nun anfangen mit
    Daten laden, speichern, verarbeiten
    und
    vier Views-Videos, wie Snaptu ja schon in post#2 empfiehlt.