Was ist hier der Fehler? ASP.Net WebForms

  • VB.NET (ASP)
  • Web Forms

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von zn-gong.

    Was ist hier der Fehler? ASP.Net WebForms

    Hallo Zusammen
    Ich habe mich an der Web Programmierung Versucht, mit WebForms.
    Ich hab den Folgenden Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Data.OleDb
    2. Public Class WebForm1
    3. Inherits System.Web.UI.Page
    4. ' Liste der Fragen
    5. Dim frage As New ArrayList
    6. ' Liste der Antworten
    7. Dim antwort As New ArrayList
    8. ' Zufallszahl für ein Element der beiden Listen
    9. Dim zufallszahl As Integer
    10. ' Richtung der Vokabel-Abfrage
    11. Dim richtung As Integer
    12. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    13. ' Initialisierung des Zufallsgenerators
    14. Randomize()
    15. ' Startrichtung Englisch - Deutsch
    16. richtung = 1
    17. TestStarten()
    18. End Sub
    19. Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    20. ' Falls richtig beantwortet:
    21. ' wort aus Liste nehmen
    22. If TextBox1.Text.Trim.ToLower() = antwort(zufallszahl).Trim.ToLower() Then
    23. Label4.Text = ("Richtig")
    24. frage.RemoveAt(zufallszahl)
    25. antwort.RemoveAt(zufallszahl)
    26. ' Falls falsch beantwortet:
    27. ' richtige Antwort nennen
    28. Else
    29. Label4.Text = (
    30. "Falsch, richtige Antwort ist " &
    31. vbCrLf & "'" &
    32. antwort(zufallszahl) & "'")
    33. End If
    34. ' Nächste Vokabel erscheint
    35. Nächste_Vokabel()
    36. End Sub
    37. Protected Sub TestStarten()
    38. Dim con As New OleDb.OleDbConnection
    39. Dim cmd As New OleDb.OleDbCommand
    40. Dim reader As OleDb.OleDbDataReader
    41. con.ConnectionString =
    42. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    43. "Data Source= C:\EN-3.accdb"
    44. cmd.Connection = con
    45. cmd.CommandText = "select * from vokabel"
    46. frage.Clear()
    47. antwort.Clear()
    48. Try
    49. con.Open()
    50. reader = cmd.ExecuteReader()
    51. ' Speicherung in den Listen gemäß
    52. ' der ausgewählten Richtung
    53. Do While reader.Read()
    54. If richtung = 1 Or richtung = 3 Then
    55. frage.Add(reader("deutsch"))
    56. Else
    57. frage.Add(reader("englisch"))
    58. End If
    59. If richtung = 2 Or richtung = 4 Then
    60. antwort.Add(reader("deutsch"))
    61. Else
    62. antwort.Add(reader("englisch"))
    63. End If
    64. Loop
    65. reader.Close()
    66. con.Close()
    67. ' Erste Vokabel erscheint
    68. Nächste_Vokabel()
    69. Catch ex As Exception
    70. Label3.Text = (ex.Message)
    71. End Try
    72. End Sub
    73. Sub Nächste_Vokabel()
    74. ' Falls keine Vokabel mehr in der Liste: Ende
    75. ' Falls noch Vokabeln in der Liste: Nächste
    76. If frage.Count < 1 Then
    77. Label4.Text = (
    78. "Gratuliere! Alles geschafft")
    79. Test_Init()
    80. Else
    81. zufallszahl = Rnd() * (frage.Count - 1)
    82. Label1.Text = frage(zufallszahl)
    83. TextBox1.Text = ""
    84. End If
    85. End Sub
    86. Sub Test_Init()
    87. ' Felder leeren
    88. Label4.Text = ""
    89. TextBox1.Text = ""
    90. End Sub
    91. End Class




    Wenn ich in die Textbox das Einzige Wort der Datenbank richtig Eingebe kommt aber die Antwort "Fehler....."

    Was mach Ich Falsch?? Könnt ihr mir auf die Sprünge Helfen??

    LG und Danke PPR

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PPR-Dev“ ()

    Bitte was willst du mit ner ArrayList oO
    Nimm entweder nen Dictonary<Question, Answer[]> oder bau dir halt ne Klasse für ne Frage etc.

    Dann solltest du dir noch die System.Random KLasse ansehen sowie Enumerations (nein, nicht Enumerable).
    Außerdem solltest du deinen Controls aussagekräftige Namen verpassen: txtInput, lblSolution bspw.

    Und zu deinem Problem: Hast du mal geguckt was überhaupt in Frage und Antwort drin steht ? Bzw. in der Database ?
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Joa, ist mehr oder weniger eine Frage der Qualität ^^

    Als Idee: Vergleich mal nicht direkt, sondern vergleiche iwie TB.Text.Trim.ToLower = "condition" oder so.
    Als Anregung, guck dir auch mal String.Format an, dann wäre das was du in Zeile 38-41 hast, das:
    Label4.Text = String.Format("Falsch, richtige Antwort ist {0} '{1}'" , Environment.NewLine, antwort(zufallszahl))
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Hab jetzt so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. ' Falls richtig beantwortet:
    3. ' wort aus Liste nehmen
    4. TextBox1.Text.Trim.ToLower()
    5. If TextBox1.Text = antwort(zufallszahl) Then
    6. Label4.Text = ("Richtig")
    7. frage.RemoveAt(zufallszahl)
    8. antwort.RemoveAt(zufallszahl)+
    9. ' Falls falsch beantwortet:
    10. ' richtige Antwort nennen
    11. Else
    12. Label4.Text = (
    13. "Falsch, richtige Antwort ist " &
    14. vbCrLf & "'" &
    15. antwort(zufallszahl) & "'")
    16. End If
    17. ' Nächste Vokabel erscheint
    18. Nächste_Vokabel()
    19. End Sub


    Es funktioniert immer noch nicht:( Liegt dass am Protected Sub??
    Hallo Community
    Ich hab den code weiter Angepasst:

    VB.NET-Quellcode

    1. ​Imports System.Data.OleDb
    2. Public Class WebForm1
    3. Inherits System.Web.UI.Page
    4. ' Liste der Fragen
    5. Dim frage As New ArrayList
    6. ' Liste der Antworten
    7. Dim antwort As New ArrayList
    8. ' Zufallszahl für ein Element der beiden Listen
    9. Dim zufallszahl As Integer
    10. ' Richtung der Vokabel-Abfrage
    11. Dim richtung As Integer
    12. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    13. ' Initialisierung des Zufallsgenerators
    14. Randomize()
    15. ' Startrichtung Englisch - Deutsch
    16. richtung = 1
    17. TestStarten()
    18. End Sub
    19. Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    20. ' Falls richtig beantwortet:
    21. ' wort aus Liste nehmen
    22. If TextBox1.Text.Trim.ToLower() = antwort(zufallszahl).Trim.ToLower() Then
    23. Label4.Text = ("Richtig")
    24. frage.RemoveAt(zufallszahl)
    25. antwort.RemoveAt(zufallszahl)
    26. ' Falls falsch beantwortet:
    27. ' richtige Antwort nennen
    28. Else
    29. Label4.Text = (
    30. "Falsch, richtige Antwort ist " &
    31. vbCrLf & "'" &
    32. antwort(zufallszahl) & "'")
    33. End If
    34. ' Nächste Vokabel erscheint
    35. Nächste_Vokabel()
    36. End Sub
    37. Protected Sub TestStarten()
    38. Dim con As New OleDb.OleDbConnection
    39. Dim cmd As New OleDb.OleDbCommand
    40. Dim reader As OleDb.OleDbDataReader
    41. con.ConnectionString =
    42. "Provider=Microsoft.ACE.OLEDB.12.0;" &
    43. "Data Source= C:\EN-3.accdb"
    44. cmd.Connection = con
    45. cmd.CommandText = "select * from vokabel"
    46. frage.Clear()
    47. antwort.Clear()
    48. Try
    49. con.Open()
    50. reader = cmd.ExecuteReader()
    51. ' Speicherung in den Listen gemäß
    52. ' der ausgewählten Richtung
    53. Do While reader.Read()
    54. If richtung = 1 Or richtung = 3 Then
    55. frage.Add(reader("deutsch"))
    56. Else
    57. frage.Add(reader("englisch"))
    58. End If
    59. If richtung = 2 Or richtung = 4 Then
    60. antwort.Add(reader("deutsch"))
    61. Else
    62. antwort.Add(reader("englisch"))
    63. End If
    64. Loop
    65. reader.Close()
    66. con.Close()
    67. ' Erste Vokabel erscheint
    68. Nächste_Vokabel()
    69. Catch ex As Exception
    70. Label3.Text = (ex.Message)
    71. End Try
    72. End Sub
    73. Sub Nächste_Vokabel()
    74. ' Falls keine Vokabel mehr in der Liste: Ende
    75. ' Falls noch Vokabeln in der Liste: Nächste
    76. If frage.Count < 1 Then
    77. Label4.Text = (
    78. "Gratuliere! Alles geschafft")
    79. Test_Init()
    80. Else
    81. zufallszahl = Rnd() * (frage.Count - 1)
    82. Label1.Text = frage(zufallszahl)
    83. TextBox1.Text = ""
    84. End If
    85. End Sub
    86. Sub Test_Init()
    87. ' Felder leeren
    88. Label4.Text = ""
    89. TextBox1.Text = ""
    90. End Sub
    91. End Class


    Leider tritt immer noch das selbe Problem auf.
    Hat einer eine Lösung??

    VIIIEEEEELLEEN Danke
    PPR
    Hallo,

    Was bitte wilst du mit einen ConString? eigentlich wird in ASP.NET dieser in der "Web.config" notiert und in der Webform kommen LinqToSQL, ObjectDatasurce,SQL-DataSurce,Access Data Surce, XML Data Surce oder sharepoint Data surce zum einsatz. Also es währe sinlos die Datenbanck Connection selbst zu Cooden. Da dir asp.net vieles abnimmt und sogar Escapt (Laufzeitfehler bei ' oder HTML / XML input in Controlls und Daten die an den Server gesendet werden sollen.

    LG, Herbrich
    Hallo,

    eig für den Anfang nur desginer, du erstellst eine LINQ to SQL Klasse, packst da alle Daten Entritäten rein und declarierst einen Datacontext deiner Datenbanck. Und greifst über den auf deine Daten zu.

    LG, Herbrich