66 Tabellen nach einem Wert durchsuchen?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von DJ_Mic.

    66 Tabellen nach einem Wert durchsuchen?

    Hallo zusammen,

    ich habe ein Frage, und zwar: Ist es möglich eine Datenbank duch ein paar String angaben zu suchen?

    SAgen wir, ich erstelle eine Suchfunktion und gebe in die TExtbox: BMW haube oder haube bmw iwie so

    dass ich diesen String teile und eine komplette DB durchsuche ?
    Meine DB hat mehrere Tabellen, car_bmw, car_audi etc....

    Und darin Spalten (ID, ersatzteil, fachnummer etc...)

    Wie schaffe ich es, dass er mir die komplette DB durchsucht und dann die Fachnummer des Teils sagt?

    mfg
    dennis

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

    Du kannst den eingegbenen String teilen und danach suchen.
    Zum Teilen kannste dir mal die Split() funktion anschauen.

    Was den SQL Befehl angeht.

    Da du ja nach Teilnamen suchst empfiehlt sich like und Jokerzeichen.

    SQL-Abfrage

    1. Select * from tabelle1,tabelle2,..., where ersatzteil like '%haube%' or ersatzteil like '%BMW%'


    Edit: Also eine nach der anderen halt, alle auf einmal geht glaub ned..oder nur mit Join.
    Ok also quasi so:

    //EDIT: Falscher Gedankengang von mir..... sry

    Wenn er danach sucht: bmw haube

    VB.NET-Quellcode

    1. Dim Auto As String = "BMW"
    2. Dim Ersatzteil As String = "Haube"


    SQL-Abfrage

    1. Select * from car_'Auto' where ersatzteil like 'Ersatzteil'


    Aber was mache ich wenn er anderst sucht? Zb: haube bmw

    Habe ich das richtig verstanden?



    mfg
    dennis

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

    Also im Prinzip schon :).

    Vielleicht, solltst du die Eingegebenen Wörter mit einem Array vergleichen in dem alle Hersteller enthalten sind.

    VB.NET-Quellcode

    1. Dim Autoarray as new ArrayList
    2. Dim Auto As String
    3. Autoarray.Insert(0,"BMW")
    4. Autoarray.Insert(1,"Audi")
    5. ...
    6. For each i as String in Autoarray ' Durchläuft jedes Feld im Array
    7. If Eingabe = i then
    8. Auto = i
    9. End if
    10. Next



    Also im Grunde über prüfst du jedes Wort das eingegeben wurde ob es im Array enthalten ist. Wenn das zutrifft sprichst du mit diesem Wort die Tabelle an. Alle anderen Wörter kannst du für die ersatzteilsuche benutzen.

    Denk dran das Ersatzteil in Jokerzeichen (%) zu fassen bei der SQL Abfrage, dann findet er auch bei dem Suchbegriff Haube, das Ersatzteil Motorhaube.

    Die SQL Abfrage sieht in VB dann halt etwas anders aus

    VB.NET-Quellcode

    1. "Select * from car_" & Auto & " where Ersatzteil like %" & Ersatzteil & "%"

    glaub ich zu mindest das es so stimmt :)
    Wenn nicht verzeih mir, bin ein Intelli Sense Kind :D und das kam ausm Kopf

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

    Hey, meine Tabelle is so aufgebaut:

    Quellcode

    1. id ersatzteil farbe menge preis fachnummer


    so habe ich die tabelle für jedes gerät erstellt.

    Leider habe ich immer noch das Problem mit der Suche... Ich habe ca. 66 Tabellen mit verschiedenen Serien in diesem Aufbau....

    Und wenn ich sagen wir 10 Tabellen durchlaufen will, hängt sich das ganze auf.... Hat einer eine Lösung für mich? Background worker funktioniert leider auch nicht.... Der arbeitet sich tot, resultat = 0....

    EDIT: Sorry habe vergessen meinen aktuelle Code hinzuzufügen...

    VB.NET-Quellcode

    1. Dim myAdapter As New MySqlDataAdapter
    2. Dim SQLAbfrage As String = "SELECT * FROM desk_js,desk_j WHERE desk_js.farbe ='Schwarz' OR desk_j.farbe ='Schwarz'"
    3. Dim myCommand As New MySqlCommand
    4. myCommand.Connection = conn
    5. myCommand.CommandText = SQLAbfrage
    6. myAdapter.SelectCommand = myCommand
    7. Dim myData As MySqlDataReader
    8. myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
    9. Try
    10. If myData.HasRows Then
    11. myData.Read()
    12. ListBox1.Items.Add("Ist da! Fach : " + myData.Item("fachnummer").ToString)
    13. conn.Close()
    14. conn.Open()
    15. End If
    16. Catch ex As MySqlException
    17. MsgBox(ex.Message)
    18. End Try


    Muss ich nun für jede Serie die tabelle vor "farbe" schreiben? Weil so liest er mir die 2 tabbellen aus.

    Mfg
    dennis

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