Access Datenbank mit Vb2010 in Dataset einbinden und mit Filter Teile suchen.

  • VB.NET

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

    Access Datenbank mit Vb2010 in Dataset einbinden und mit Filter Teile suchen.

    Access Datenbank mit Dataset suchfunktion mit "Buchstabe" & "%"




    hi,

    ich habe eine Access Datenbank.

    Mit Visual Basic 2010 habe ich die Datenbank als neue Datenquelle hinzugefügt und dann ein Dataset erzeugt.

    In einer Windows Form ist eine Textbox und eine Listbox. die Datenbank enthält elektronik-Bauelemente.

    ich möchte jetzt durch eingabe eines Buchstaben in der Listbox anzeigen lassen, welche Bauelemente mit diesem

    Buchstaben beginnen. Wenn nun der nächste Buchstabe eingegeben wird, soll die Liste erneut aufgebaut werden,

    nun aber mit den beiden Buchstaben.

    Durch dobbleclick in der Listbox wird das gefundene Bauteil mit allen Daten in einer Datagridview angezeigt.



    gefunden habe ich :



    dim foundrows() as data.dataRow

    foundrows = BauteileDataSet.tables("Transistoren").Select("Bauteilname Like '" & suchname & "%'","")

    Listbox1.items.add(foundRows(0))



    Die Suche wird ja wohl nur im Dataset erfolgen und entsprechend schnell sein, oder ??

    Es erfolgt Fehlermeldung Der Index ist außerhalb des Arraybereichs. Was ja wohl heißt, das Array Foundrows ist leer.

    Kann jemand helfen, wie ich das Problem lösen kann?



    Gruß conger890
    Der Select-Befehl der DataTables taugt ungefähr für garnix. Zum einen isses kein Select wie du es vlt. von Sql her erwartest, sondern es ist eher ein Filter - also wesentlich weniger mächtig als Sql.
    Zum anderen kannst du einfacher filtern, wenn du die BindingSource.Filter-Property setzst. gugge DataExpressions
    Hi ErfinderdesRades,
    danke für deine Antwort, die aber nicht so richtig verstanden habe. Ich bin wohl eher son' Typ der einfaches Denken vorzieht.
    Also Mein Code = Falsch weil Richtiger Code = xxxxx

    Ok, ich glaube, ich habe ein anderes Problem!
    Ich kann nichts „normal“ aus dem Dataset lesen, geschweige denn schreiben.
    Wie man eine Datenbank direkt anspricht, über Oledb – kein Problem!
    Ich würde das so machen:

    VB.NET-Quellcode

    1. Dim connStr As String = ("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Ordner1\dokudb1.accdb")
    2. Dim Sql As String ="SELECT * FROM(Tabelle1)"
    3. Dim Conn As New OleDbConnection(connStr)
    4. Dim Cmd As New OleDbCommand(Sql, Conn)
    5. Try
    6. Conn.Open()
    7. Dim dr As OleDbDataReader = Cmd.ExecuteReader()
    8. While dr.Read
    9. TagNun = dr("dst_Datum")
    10. Exit While
    11. End While
    12. Catch….

    hier habe ich ein Problem am Rande: wie sage ich dem Programm, es soll nur den ersten Satz auslesen.
    Ich mache das im Moment mit brutaler Methode = „Exit While“ ich habe keinen Weg gefunden
    ohne While dr.Read .. end While zu arbeiten.
    Wenn ich das gleiche aber mit dem von dokudb1.accdb gemachten DataSet versuche, keine Chance.
    Ein DataGridView lässt sich allerdings durch Bindung problemlos füllen.
    Mein oben beschriebenes Problem liegt dann wohl auch daran, dass ich keine Daten aus den DataSet Tabellen einzeln
    auslesen kann.

    Was funktioniert ist:

    VB.NET-Quellcode

    1. Dim IrgendeinTag = Dokudb1DataSet.Tabelle1(x)
    2. Dim SenZahl = IrgendeinTag.TagNun

    Dann steht in SenZahl der Wert, den ich haben will.
    Das muss doch einfacher gehen, oder?
    Vielleicht kann man mir sagen, wie man grundsätzlich Daten aus der DataSet holt.
    Gruß conger890
    Wahrscheinlich hast du recht. Ich arbeite schon lange mit den diversen Datenbanken unter DAO, ADO SQL usw, aber
    das Dataset ist mir nicht geheuer. Bis jetzt hat man den Eindruck Dataset sei nur mit Datagridview zu benutzen, wenn man
    nach Dataset googled. Ich hoffte, man könnte es nutzen wie eine in den Speicher geladene Access oder SQL Datenbank.
    Naja ich glaube ich mache wieder in gehabter weise mit ADO.Net weiter.
    gruß conger890
    Dataset geht mit allen Controls zusammen, dies gibt.
    Nur in Demos wird vmtl. gerne Datagridview verwendet, weil das ein überaus mächtiges Control ist, was die gesamte CRUD-Funktionalität einer DB-Anwendung abzudecken imstande ist.

    Also wenn man zeigen kann, wie etwas mit DatagridView geht, dann ist damit gleichzeitig gezeigt, dasses mit allen Controls geht.
    Natürlich ists unbenommen, das Dataset an annere Controls anzubinden, aber dazu braucht man erstmal viele Controls, und dann muß man die Bindings zurechtklicksen, und dann kommt da eher ein Spezialfall heraus, der vlt. gefälliger aussehen mag, aber vonne Funktionalität her auch nicht mehr macht als DGV.

    conger890 schrieb:

    Naja ich glaube ich mache wieder in gehabter weise mit ADO.Net weiter.
    Mit Ado.Net kannst du glaub deine Vorgehensweise nicht bezeichnen, weil du verwendest ja nur 3 von 7 KernKonzepten, und zwar nur die primitivsten.
    Und das Ado.Net auf Databinding hin designed ist, das wird nicht mal auf Wikipedia erwähnt (naja, doch - aber nur ganz versteckt).