Suchmaske VB 2005

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Suchmaske VB 2005

    Hallo liebe Mitmember / Admins etc.

    ich bin relativ neu in der VB Scene und habe mir bereits auf diversen Seiten ein entsprechendes "kleines Grundwissen" zu VB 2005 aneignen können.
    So da ich aber etwas mehr machen will als nur stupide irgendwelchen vordefinierten Codes einzufügen und zu starten habe ich mir ein "kleines Ziel" gesetzt.

    Folgende Informationen:
    Ich habe eine Datenbank in VB 2005 erstellt und einem anderem Projekt ( dem künftigem UI ) zugewiesen.
    Ich kann auch super drauf zugreifen, die Datenbank ändern / speichern etc.

    Mein Wunsch ist es allerdings eine Suchmaske einzubringen, die das Programm etwas nützlicher macht, als sich nur langweilig durch die Datenbank zu klicken.

    Ich würde gerne die vorhandenen Textboxes so verwenden das ich nach Eingabe in die Textbox ( Bsp. "Müller" ) und anschließendem betätigen des Buttons "Suche" eine Anzeige über die vorhandende Person "Müller" bekomme.

    Ich habe schon diverse Befehle unter google.de gegooglet und die VB Hilfe sowie die msdn.microsoft suchmaske verwendet bin allerdings auf keine große, brauchbare Hilfe gestoßen.

    Vll. könnt ihr mir ja helfen, oder mich zu Recht weisen, was ich verbockt habe ;)

    Grüße Sebastian
    Ja ein Select Statement schreiben was dir die gewünschten Daten ausgibt. Und die Abfrage mit einem Parameter versehen.

    Beispiel SQL Abfrage:

    SQL-Abfrage

    1. Select Person.Name,Person.Vorname,Person.Wohnort (etc.etc.)
    2. From Person 
    3. Where Vorname = @Vorname


    Hier erwartet das TableAdapter an den die Abfrage übergeben wird einen Parameter (@ vor den Wert = Parameter)

    VB.NET-Quellcode

    1. Me.PersonTableAdapter.Suchen(Me.DataSet.DataTable, txt_SuchenTextFeld.Text)


    Anstatt den Wert der Textbox zu übergeben kannste den natürlich davor in eine Variable übergeben und dann den Variablen Namen anstatt dem Textfeld nehmen. Wenn die einzelnen Textboxen, Labels, etc. an das Feld des TableAdapters gebunden sind, so werden diese nach der Abfrage automatisch aktualisiert.
    danke dir, ich werde das nachher hier mal ausprobieren.
    habe dieses projekt mit der datenbank kurzzeitig paussiert um ein neues anzufangen ;)

    da hab ich allerdings auch n kleines problem, vll kann mir wer dabei helfen?

    es handelt sich hier bei um den bereits bekannten mathetrainer, den so ziemlich jeder greenhorn mal programmiert hat.
    ich bin gerade dabei und möchte aus dem tutorial nicht nur die multiplikation sondern auch die anderen 3 grundrechenarten - division, subtraktion und addition reinklatschen.
    mein problem ist, das ich z.z. bei dem hinzufügen der 2. grundrechenart scheitere, beim laufen des programms tut es alles wie es soll bis auf bei den additionsaufgaben, da stellt er bis zum ende des programms immer die selbe additions aufgabe - und das ist ja nicht sinne eines "trainers"
    mein aktueller code mit kommentaren:

    " Private
    Sub HauptForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Const mt = "Mathematik Trainer"
    Const mt_Maxzahl = 15
    Const mt_Fragen = 10
    Dim nEingabe As Integer 'Speicher für die Benutzereingabe
    Dim nZahl1 As Integer '1 Multiplikator
    Dim nZahl2 As Integer '2 Multiplikator
    Dim nZahl3 As Integer '1 Addition
    Dim nZahl4 As Integer '2 Addition
    Dim sMsg As String
    Dim nFehler As Integer 'Fehlerspeicher
    Dim nLoop As Integer 'Schleifenzähler
    Dim nLoop2 As Integer 'Schleifenzähler Addition

    '################# Multiplikation beginnt hier ####################

    For nLoop = 1 To mt_Fragen
    nZahl1 = Int(Rnd() * mt_Maxzahl) + 1
    nZahl2 = Int(Rnd() * mt_Maxzahl) + 1
    sMsg = "Aufgabe Nr.: " & CStr(nLoop) & vbCrLf & vbCrLf
    sMsg = sMsg & CStr(nZahl1) & " x " & CStr(nZahl2) & " = ?" & vbCrLf
    nEingabe = Val(InputBox(sMsg, mt))
    If nEingabe = nZahl1 * nZahl2 Then
    MsgBox("Die Antwort ist richtig!", vbInformation, mt)
    Else
    nFehler = nFehler + 1
    nEingabe = nZahl1 * nZahl2
    MsgBox("Die Antwort ist Falsch! Lösung:" & vbCrLf & CStr(nZahl1) & " x " & CStr(nZahl2) & " = " & _
    CStr(nEingabe), vbCritical, mt)
    End If
    Next nLoop
    '################## Multiplikation endet hier #####################


    '# Problem: Bei Addition wiederholt er die selbe Aufgabe bis zum Abschluss des Programms! #


    '################# Addition beginnt hier ##########################


    For nLoop2 = 1 To mt_Fragen
    nZahl3 = Int(Rnd() + mt_Maxzahl) + 1
    nZahl4 = Int(Rnd() + mt_Maxzahl) + 1
    sMsg = "Aufgabe Nr.: " & CStr(nLoop2) & vbCrLf & vbCrLf
    sMsg = sMsg & CStr(nZahl3) & " + " & CStr(nZahl4) & " = ?" & vbCrLf
    nEingabe = Val(InputBox(sMsg, mt))
    If nEingabe = nZahl3 + nZahl4 Then
    MsgBox("Die Antwort ist richtig!", vbInformation, mt)
    Else
    nFehler = nFehler + 1
    nEingabe = nZahl3 + nZahl4
    MsgBox("Die Antwort ist Falsch! Lösung:" & vbCrLf & CStr(nZahl3) & " + " & CStr(nZahl4) & " = " & _
    CStr(nEingabe), vbCritical, mt)
    End If
    Next nLoop2
    '################ Addition endet hier ###################

    '############### Meldungsfenster mit Fehlerausgabe #############

    sMsg = "Die Prüfung wurde beendet!" & vbCrLf
    sMsg = sMsg & "Du hatest " & CStr(nFehler) & " Fehler!"
    MsgBox(sMsg, vbInformation, mt)
    Me.Close()
    "

    p.s. ich arbeite immer noch mit vb 2005 professional

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

    So steht das bei dir da (Nicht alles kopiert)

    VB.NET-Quellcode

    1. '################# Addition beginnt hier ##########################
    2. ....
    3. ...
    4. nZahl3 = Int(Rnd() + mt_Maxzahl) + 1
    5. nZahl4 = Int(Rnd() + mt_Maxzahl) + 1
    6. ...
    7. ...
    8. ...
    9. '################ Addition endet hier ###################


    Wenn du nun die + mit * ersetzt klappt es wieder, und zufällige Zahlen werden generiert.
    Warum das Problem mit den + Zeichen auftritt, und mit dem * nicht, habe ich nicht herausgefunden.
    Hab ich bei mir getestet habe auch VS 2005

    VB.NET-Quellcode

    1. '################# Addition beginnt hier ##########################
    2. ....
    3. ...
    4. nZahl3 = Int(Rnd() * mt_Maxzahl) + 1
    5. nZahl4 = Int(Rnd() * mt_Maxzahl) + 1
    6. ...
    7. ...
    8. ...
    9. '################ Addition endet hier ###################
    danke dir, als ich gerade in den thread reingeschaut hab wars schon gelöst
    - wieso dieser fehler auftritt kann ich auch nicht sagen.
    habe mal in der vb hilfe nachgeschaut da ist diese rnd() funktion so deklariert.

    danke dir ;)

    VB.NET-Quellcode

    1. Int(Rnd() + mt_Maxzahl) + 1
    2. 'mt_Maxzahl = konstant
    3. '1 = konstant
    4. 'Rnd() ist eine Gleitkommazahl zwischen 0 und 1 (0 inklusive, 1 exklusive).


    Wenn ich mir das ausrechner, kommt im geringesten Fall (Rnd() = 0)
    0 + mt_Maxzahl + 1 raus

    Für den maximalen Fall kommt
    0.999999 + mt_Maxzahl + 1 raus
    Durch das Int werden die Nachkommastellen abgeschnitten -> gleiches Ergebnis wie oben.
    Das Ergebnis von der Formel ist also immer mt_Maxzahl + 1!


    Wenn du Rnd() mit mt_Maxzahl multiplizierst, kommt irgendein Wert zwischen 0 und mt_Maxzahl raus. Wenn du hinten 1 dazu zählst, kommt ein Wert zwischen 1 und mt_Maxzahl + 1 raus. Wenn du Int verwendest, ist die Obergrenze um 1 kleiner. In deinem Fall gibst du ja sowieso was hinten dazu um das gewünschte Ergebnis zu erreichen.

    Die allgemein gültige Formel ist

    VB.NET-Quellcode

    1. RandomNumber = (Obergrenze - Untergrenze) * Rnd() + Untergrenze

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mad Andy“ ()