Nach zweiten Insert alle Daten gleich !!!!

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von wlfmario.

    Nach zweiten Insert alle Daten gleich !!!!

    Hallo zusammen,

    ich habe da einen Fehler in meinen kleine Programm entdeckt, für den ich im Moment keine Lösung finde !
    Ich öffne ein neues Form mache meine Eingaben und Speichere das alles in einer Access DB danach wird das Form wieder geschlossen und die Daten stehen auch in der Datenbank.
    Wenn ich aber sofort danach noch einen Eintrag machen will, hat der zweite Eintrag die Werte des ersten Eintrags usw.
    Das kann ich fortführen bis zur Unendlichkeit die neu eingegeben Daten werden nicht in die DB geschrieben immer nur die des ersten Eintrags.
    Logisch wenn ich das Programm schließe, klappt es wieder mit dem ersten Eintrag.

    Ich habe mal unten den Code gepostet, evtl. hat jemand einen Tipp was das Falsch läuft.

    Danke schon einmal für eure Antworten.

    Gruß Mario

    VB.NET-Quellcode

    1. ...
    2. ...
    3. Public Sub DBOpen()
    4. 'Datenbank bekant machen und DataGrid beim Form1_Load mit Daten Füllen
    5. HauptForm.con.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" & "Data Source=" & My.Application.Info.DirectoryPath & "\Datenbank\Fangbuch.mdb"
    6. HauptForm.cmd.Connection = HauptForm.con
    7. End Sub
    8. Public Sub InsertDB()
    9. ' Bilder wenn ausgewählt Kopieren und Pfad in die Datenbank schreiben.
    10. Dim Bildpfad As String = ""
    11. If OpenFileDialog1.FileName <> "" Then
    12. Dim fileinfo As New IO.FileInfo(OpenFileDialog1.FileName)
    13. Bildpfad = My.Application.Info.DirectoryPath & "\Bilder\" & DateAndTime.Now.ToString("ddMMyyyyHHmmsstt-") & fileinfo.Name
    14. If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath & "\Bilder") = True Then
    15. My.Computer.FileSystem.CopyFile(fileinfo.FullName, Bildpfad)
    16. End If
    17. End If
    18. 'Daten vorbereiten für den Eintrag in die Datenbank.
    19. Dim datum, Zeit As Date
    20. Dim Angler, laenge, gewicht, distanz, tiefe, lufttemp, luftdruck, wassertemp As Integer
    21. Dim methode, koedername, Fischart, koederart, gewaesser, ort, wasserstand, wassertruebung, wetter, windrichtung, windstaerke, bild As String
    22. Dim zurueck, nichtsgef As Boolean
    23. 'Interger Variabeln
    24. datum = DateTimePickerDatum.Value.ToShortDateString
    25. Zeit = DateTimePickerZeit.Value.ToShortTimeString
    26. laenge = CUInt(TextBoxFischlaenge.Text)
    27. gewicht = CUInt(TextBoxGewicht.Text)
    28. distanz = CUInt(TextBoxDistanz.Text)
    29. tiefe = CUInt(TextBoxTiefe.Text)
    30. lufttemp = CUInt(TextBoxLufttemp.Text)
    31. luftdruck = CUInt(TextBoxLuftdruck.Text)
    32. wassertemp = CUInt(TextBoxWasserTemp.Text)
    33. 'String Variabeln
    34. Fischart = ComboBoxFischart.Text
    35. methode = ComboBoxMethode.Text
    36. koedername = TextBoxName.Text
    37. koederart = ComboBoxKoederArt.Text
    38. gewaesser = TextBoxGewaesser.Text
    39. ort = TextBoxOrt.Text
    40. wasserstand = ComboBoxWasserstand.Text
    41. wassertruebung = ComboBoxwassertruebung.Text
    42. wetter = ComboBoxWetter.Text
    43. windrichtung = ComboBoxWindrichtung.Text
    44. windstaerke = ComboBoxWindstaerke.Text
    45. bild = Bildpfad
    46. 'Boolean Variabel
    47. zurueck = CheckBoxCatchandRelase.Checked
    48. nichtsgef = CheckBoxNichtsGefangen.Checked
    49. 'Nicht ausgewählte Felder Löschen um ein "" in die DB zu schreiben.
    50. If RichTextBox1.Text = "Kommentarfeld" Then RichTextBox1.Clear()
    51. If methode = "- Bitte Auswählen -" Then methode = ""
    52. If koedername = "- Bitte Auswählen -" Then koedername = ""
    53. If koederart = "- Bitte Auswählen -" Then koederart = ""
    54. If wasserstand = "- Bitte Auswählen -" Then wasserstand = ""
    55. If wassertruebung = "- Bitte Auswählen -" Then wassertruebung = ""
    56. If wetter = "- Bitte Auswählen -" Then wetter = ""
    57. If windrichtung = "- Bitte Auswählen -" Then windrichtung = ""
    58. If windstaerke = "- Bitte Auswählen -" Then windstaerke = ""
    59. 'Den ausgewählten Angler eine ID zuweisen aus der Tabelle Fänger.
    60. Try
    61. HauptForm.con.Open()
    62. HauptForm.cmd.CommandText = "SELECT FID FROM Faenger WHERE FName LIKE '%" & ComboBoxUser.SelectedItem.ToString & "'"
    63. HauptForm.Reader = HauptForm.cmd.ExecuteReader()
    64. Do While HauptForm.Reader.Read
    65. Angler = HauptForm.Reader("FID")
    66. Loop
    67. HauptForm.Reader.Close()
    68. Catch ex As Exception
    69. MsgBox(ex.Message)
    70. End Try
    71. HauptForm.con.Close()
    72. 'Daten in die Datenbank schreiben.
    73. Try
    74. HauptForm.con.Open()
    75. HauptForm.cmd.CommandText = "INSERT INTO Fangdaten (Datum, Zeit, Faenger ,Fischart, Laenge, Gewicht, Fangmethode, Distanz, Tiefe, Koedername, Koederart, Gewaesser, Ort, Wasserstand, Wassertruebung, Wetter, LuftTemp, Luftdruck, WasserTemp, Windrichtung, Windstaerke, Kommentar, Bild, Catch, NichtsGefangen) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
    76. Dim pDatum As New OleDbParameter With {.Value = datum}
    77. Dim pZeit As New OleDbParameter With {.Value = Zeit.ToLongTimeString}
    78. Dim pFaenger As New OleDbParameter With {.Value = Angler}
    79. Dim pFischart As New OleDbParameter With {.Value = Fischart}
    80. Dim pLaenge As New OleDbParameter With {.Value = laenge}
    81. Dim pGewicht As New OleDbParameter With {.Value = gewicht}
    82. Dim pFangmethode As New OleDbParameter With {.Value = methode}
    83. Dim pDistanz As New OleDbParameter With {.Value = distanz}
    84. Dim pTiefe As New OleDbParameter With {.Value = tiefe}
    85. Dim pKoedername As New OleDbParameter With {.Value = koedername}
    86. Dim pKoederart As New OleDbParameter With {.Value = koederart}
    87. Dim pGewaesser As New OleDbParameter With {.Value = gewaesser}
    88. Dim pOrt As New OleDbParameter With {.Value = ort}
    89. Dim pWasserstand As New OleDbParameter With {.Value = wasserstand}
    90. Dim pWassertruebung As New OleDbParameter With {.Value = wassertruebung}
    91. Dim pWetter As New OleDbParameter With {.Value = wetter}
    92. Dim pLuftTemp As New OleDbParameter With {.Value = lufttemp}
    93. Dim pLuftdruck As New OleDbParameter With {.Value = luftdruck}
    94. Dim pWasserTemp As New OleDbParameter With {.Value = wassertemp}
    95. Dim pWindrichtung As New OleDbParameter With {.Value = windrichtung}
    96. Dim pWindstaerke As New OleDbParameter With {.Value = windstaerke}
    97. Dim pKommentar As New OleDbParameter With {.Value = RichTextBox1.Text}
    98. Dim pBild As New OleDbParameter With {.Value = bild}
    99. Dim pCatch As New OleDbParameter With {.Value = zurueck}
    100. Dim pNichtgef As New OleDbParameter With {.Value = nichtsgef}
    101. HauptForm.cmd.Parameters.Add(pDatum)
    102. HauptForm.cmd.Parameters.Add(pZeit)
    103. HauptForm.cmd.Parameters.Add(pFaenger)
    104. HauptForm.cmd.Parameters.Add(pFischart)
    105. HauptForm.cmd.Parameters.Add(pLaenge)
    106. HauptForm.cmd.Parameters.Add(pGewicht)
    107. HauptForm.cmd.Parameters.Add(pFangmethode)
    108. HauptForm.cmd.Parameters.Add(pDistanz)
    109. HauptForm.cmd.Parameters.Add(pTiefe)
    110. HauptForm.cmd.Parameters.Add(pKoedername)
    111. HauptForm.cmd.Parameters.Add(pKoederart)
    112. HauptForm.cmd.Parameters.Add(pGewaesser)
    113. HauptForm.cmd.Parameters.Add(pOrt)
    114. HauptForm.cmd.Parameters.Add(pWasserstand)
    115. HauptForm.cmd.Parameters.Add(pWassertruebung)
    116. HauptForm.cmd.Parameters.Add(pWetter)
    117. HauptForm.cmd.Parameters.Add(pLuftTemp)
    118. HauptForm.cmd.Parameters.Add(pLuftdruck)
    119. HauptForm.cmd.Parameters.Add(pWasserTemp)
    120. HauptForm.cmd.Parameters.Add(pWindrichtung)
    121. HauptForm.cmd.Parameters.Add(pWindstaerke)
    122. HauptForm.cmd.Parameters.Add(pKommentar)
    123. HauptForm.cmd.Parameters.Add(pBild)
    124. HauptForm.cmd.Parameters.Add(pCatch)
    125. HauptForm.cmd.Parameters.Add(pNichtgef)
    126. HauptForm.cmd.ExecuteNonQuery()
    127. Catch ex As Exception
    128. MsgBox(ex.Message)
    129. End Try
    130. HauptForm.con.Close()
    131. HauptForm.DataGridLoad()
    132. Close()
    133. End Sub
    134. Public Sub UserLoad()
    135. 'Benutzer aus der Datenbank in die CoboBoxUser Laden
    136. Try
    137. HauptForm.con.Open()
    138. HauptForm.cmd.CommandText = "SELECT * FROM Faenger"
    139. HauptForm.Reader = HauptForm.cmd.ExecuteReader()
    140. ComboBoxUser.Items.Clear()
    141. ComboBoxUser.Items.Add("- Bitte Auswählen -")
    142. Do While HauptForm.Reader.Read
    143. ComboBoxUser.Items.Add(HauptForm.Reader("FName"))
    144. Loop
    145. HauptForm.Reader.Close()
    146. Catch ex As Exception
    147. MsgBox(ex.Message)
    148. End Try
    149. HauptForm.con.Close()
    150. 'Prüfen ob es einen User in der Datenbank gibt.
    151. If ComboBoxUser.Items.Count <> 0 Then
    152. ComboBoxUser.Text = ComboBoxUser.Items.Item(0)
    153. Else
    154. MsgBox("Es gibt keine User in der Datenbank.", MsgBoxStyle.Information)
    155. Close()
    156. End If
    157. ' CheckBoxen auf ersten Eintrag setzen !
    158. CheckBoxNichtsGefangen.Checked = False
    159. CheckBoxCatchandRelase.Checked = False
    160. ComboBoxFischart.Text = ComboBoxFischart.Items.Item(0)
    161. ComboBoxKoederArt.Text = ComboBoxKoederArt.Items.Item(0)
    162. ComboBoxWasserstand.Text = ComboBoxWasserstand.Items.Item(0)
    163. ComboBoxwassertruebung.Text = ComboBoxwassertruebung.Items.Item(0)
    164. ComboBoxWetter.Text = ComboBoxWetter.Items.Item(0)
    165. ComboBoxWindrichtung.Text = ComboBoxWindrichtung.Items.Item(0)
    166. ComboBoxWindstaerke.Text = ComboBoxWindstaerke.Items.Item(0)
    167. ComboBoxMethode.Text = ComboBoxMethode.Items.Item(0)
    168. TextBoxFischlaenge.Text = 0
    169. TextBoxGewicht.Text = 0
    170. TextBoxDistanz.Text = 0
    171. TextBoxTiefe.Text = 0
    172. TextBoxName.Clear()
    173. TextBoxGewaesser.Clear()
    174. TextBoxOrt.Clear()
    175. TextBoxLufttemp.Text = 0
    176. TextBoxWasserTemp.Text = 0
    177. TextBoxLuftdruck.Text = 0
    178. RichTextBox1.Text = "Kommentarfeld"
    179. PictureBox1.Image = New Bitmap(Fangbuch.My.Resources.Resources.NoImage)
    180. End Sub
    181. ....
    182. ....
    Einfacher wohl schon und auch viel weniger Code aber trotzdem sollte es bei mir auch klappen ohne DataSet ect.
    Es scheint ja nur irgendwo der Wurm im Code zu sein warum die Werte beim zweiten Eintrag vom ersten Eintrag stammen.
    na, und du glaubst, jemand im Forum wird dir nun deine 200 Zeilen Code debuggen? dass das ühaupt möglich sei, ohne deine gesammte Anwendung mal in eine IDE laden zu können? und nur, um dich in einem Ansatz zu unterstützen, den du vermutlich in nächster Zeit eh komplett verwerfen wirst?
    Ich will nicht das ich hier eine komplette Lösung Präsentiert bekomme nur ohne Code würde meine Frage auch nichts bringen denn ich glaube nicht das hier jemand eine Glaskugel hat.

    Will ja nur wissen ob jemand eine Tipp hat weil manchmal sucht man an den Falschen stellen überhaupt wenn man noch am Anfang steht.

    ErfinderDesRades schrieb:

    Und meinen Tipp habichja bereits abgegeben.

    Stimmt den habe ich auch berücksichtigt.
    Es ist ja nicht so das ich nicht für andere Möglichkeiten offen bin.

    Nur möchte ich nicht wegen einen Fehler alles umschreiben ohne zu wissen wo der Fehler lag.
    Aber um auf den Fehler zurück zu kommen, ich schätze mal das ich bei den Variablen gucken muss, obwohl meiner Meinung nach die ja bei jeden Aufruf Neu Initialisiert werden.