Einzelne Zellen aus Access Auslesen und nach Verabeitung nächste zeile

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Neux.

    Einzelne Zellen aus Access Auslesen und nach Verabeitung nächste zeile

    hi

    ich häng mal wieder ein den kleinsten problemen

    ich hab eine Access DB ich möchte aus der tabelle 0815 die erste Zeile der Spalte Material auslesen
    hab schon versucht über den ExecuteReader() die Tabelle auszulesen bekomm aber immer eine Fehlermeldung
    das er die Spalte nicht finden kann.

    wenn ich aber mit dem Selben code die ID spalte auslesen will klappt es blos ließt er alle werte aus und nicht nur
    den einen Speziellen den ich will. kann mir jemand helfen ?

    VB.NET-Quellcode

    1. Private Sub Box_wahl(ByVal Objekt As Object)
    2. Con.ConnectionString = _
    3. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    4. "Data Source=C:\Users\Jochen\Desktop\Techniker Arbeit\Software\Datenbank\0815.mdb"
    5. cmd.Connection = Con
    6. cmd.CommandText = "select * from " + Programm
    7. Try
    8. Con.Open()
    9. reader = cmd.ExecuteReader()
    10. 'hier möchte ich die Zeile 1. von der Spalte Material auslesen
    11. Con.Close()
    12. Catch ex As Exception
    13. MsgBox(ex.Message)
    14. End Try
    15. End Sub
    Hey,

    was steht in der Variable Programm?
    Ich sehe nämlich nicht dass diese einen Wert bekommt. Desweiteren kannst du den Tabellen Namen doch direkt in den String schreiben und nicht als Variable. Der muss ja nicht Variabel sein.

    lg.

    LucaWelker
    lg.

    LucaWelker
    in der Variablen "Programm" steht der Programm name der auch geichzeitig der Tabellenname (0815) ist
    hat Verwaltungsgründe für Später aufrufe des funktioniert auch wie gesagt der aufruf von ID fuktioniert auch wunderbar
    blos von Material bekomm ich keinen wert.

    ich hab es auch schon hin bekommen die ID also die Spalte mit den index nr. der DB abzufragen
    aber halt nur die ganze Spalte wo ich dann immernur den höchsten wert ausgegeben bekomm.

    und ich will ja nur einen Spezielle zelle auslesen.
    Hey,

    du musst dem reader auch noch sagen dass er was auslesen soll. Wenn du nur sagst "was er ist" und ihm nicht sagst dass er was lesen soll, dann tut er es auch nicht.

    Normaler weiße gibt es so methoden wie reader.GetString(int index) oder sowas ;) damit bekommst du dann den wert der Spalte. Dass ganze musst du mit einer While schleife durchlaufen.

    Also z.B.

    VB.NET-Quellcode

    1. while Reader.Read()
    2. iEineVariable = Reader.GetString(1)
    3. End While


    der Index ist immer die nullbasierte Position der Spalte. Also z.B. ID = 0, Material = 1 usw.

    lg.

    LucaWelker
    lg.

    LucaWelker
    danke für die schnelle antwort

    hab des jetzt mal genau so reingeschrieben wie du geschrieben hast

    jetzt kommt bei mir die meldung

    "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

    VB.NET-Quellcode

    1. Private Sub Box_wahl(ByVal Objekt As Object)
    2. Con.ConnectionString = _
    3. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    4. "Data Source=C:\Users\Jochen\Desktop\Techniker Arbeit\Software\Datenbank\0815.mdb"
    5. cmd.Connection = Con
    6. cmd.CommandText = "select * from 0815"
    7. Try
    8. Con.Open()
    9. While reader.Read()
    10. lbl_Mat_nr.Text = (reader.GetString(0))
    11. End While
    12. reader.Close()
    13. Con.Close()
    14. Catch ex As Exception
    15. MsgBox(ex.Message)
    16. End Try
    17. End Sub
    danke für die Hilfe
    leider funktioniert es immer noch nicht bin hier noch am durchdrehen
    es kann doch im grunde nicht so schwer sein einen einzelnen wert aus einer DB abzurufen

    find im i-net leider nur Anleitungen um ganze Spalten auszulesen

    gruß

    Neux

    VB.NET-Quellcode

    1. Try
    2. Con.Open()
    3. While reader.Read()
    4. lbl_Mat_nr.Text = (reader.GetString(3))
    5. End While
    6. reader.Close()
    7. Con.Close()
    8. Catch ex As Exception
    9. MsgBox(ex.Message)
    10. End Try


    der steigt nach der While anweisung aus
    und die Fehlermeldungt kommt dann direkt von der msgBox ... des ist ja dann der feheler wo von Access zurückgegeben wird

    VB.NET-Quellcode

    1. Try
    2. Con.Open()
    3. If reader.HasRows then
    4. While reader.Read()
    5. lbl_Mat_nr.Text = (reader.GetString(3))
    6. End While
    7. End If
    8. reader.Close()
    9. Con.Close()
    10. Catch ex As Exception
    11. MsgBox(ex.Message)
    12. End Try


    Probier das ganze mal so, dann dürfte immerhin die Exception nicht mehr kommen.

    lg.

    LucaWelker
    lg.

    LucaWelker
    Also gut, wenn er in der While schleife rausspringt, dann kann es fast nur sein dass an irgendeiner Stelle im Programm der Wert von dem Feld mit dem Index 3 "null" ist. Geb doch allen Spalten einen Standart Wert z.B. " ", dann sollte der Fehler nicht mehr passieren.

    lg.

    LucaWelker
    lg.

    LucaWelker
    Hab jetzt mal versuch alles in einer Jungfräulichen Testumgebung zu probieren
    ein neues projekt wo ich nur 1 label zum füllen habe
    und eine DB die ich von der Galileo CD habe

    und siehe da es funktioniert wunderbar zumindest halb ;P

    anscheinend stimmt was an der DB nicht die ich selbst erstellt habe. Hab aber selbst keine Ahnung was an der sein könnte.

    auf jeden fall stellt sich jetzt immernoch die frage das ich mit dieser ausleseschleife die kommplette Spalte auslese. Gibt es keine
    möglichkeit nur die erste spalte auszulesen ?
    sonst muss ich versuchen die einzelnen werte in einem String Array abzufangen

    aber danke für deine Bemühungen bei der Fehlersuche hast mir echt sehr weitergeholfen das zu Verstehen was ich da schreibe.

    lg Neux

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

    so für jeden der das selbe Problem auch mal vor sich hat hier meine lösung

    im ersten schritt lese ich die Tabelle aus um zu ermitteln wie groß das Array sein muss um alle werte zu Speichern

    VB.NET-Quellcode

    1. Try
    2. con.Open()
    3. reader = cmd.ExecuteReader()
    4. While (reader.Read())
    5. ZwischenSpeicher = (reader.GetString(3))
    6. Tab_größe = Tab_größe + 1
    7. End While
    8. reader.Close()
    9. con.Close()
    10. Catch ex As Exception
    11. MsgBox(ex.Message)
    12. End Try


    zwischenSpeicher ist wirklich nur eine Nutzvariable um die daten halt irgendwo hin zu schreiben

    im Zweiten schritt werden die einzelnen zeilen geziehlt in das Array gefüllt

    VB.NET-Quellcode

    1. Try
    2. con.Open()
    3. reader = cmd.ExecuteReader()
    4. pos = 0
    5. While reader.Read()
    6. mat_nr(pos) = (reader.GetString(3))
    7. pos = pos + 1
    8. End While
    9. reader.Close()
    10. con.Close()
    11. Catch ex As Exception
    12. MsgBox(ex.Message)
    13. End Try


    jetzt kann ich jederzeit auf meine Daten in dem Array Mat_nr zugreifen. Wer will kann auch noch den Array beginn auf 1 statt 0 setzen mit dem befehl

    VB.NET-Quellcode

    1. Option Base 1