Ich muss Daten aus einer Checklistenliste in eine Access-Datenbank einfügen. Die Elemente in den Checklistenboxen sind Fremdschlüssel und werden anhand ihrer Namen und nicht anhand ihrer IDs angezeigt. Was ich tun musste, ist, wenn ich auf die Schaltfläche "Hinzufügen" klicke, sollten die IDs der Elemente und ihre Namen als String (str) in die Services_Availed-Tabelle in der Datenbank eingefügt werden, aber die Namen werden nicht angezeigt, obwohl neue Daten eingefügt wurden (Fügt jedes Mal, wenn ich auf die Schaltfläche zum Hinzufügen klicke, eine weitere ServicesAvailed_ID hinzu).So fügen Sie Daten von CheckedListBox in die Datenbank ein
Hier ist, was ich versucht:
Private Sub btnAddService_Click(sender As Object, e As EventArgs) Handles btnAddService.Click
Try
Dim con As New OleDb.OleDbConnection
Dim str As String = ""
Dim i As Integer
If chcklstbx1.CheckedItems.Count > 0 Then
For i = 0 To i < chcklstbx1.CheckedItems.Count
If str = "" Then
str = chcklstbx1.CheckedItems(i).ToString
Else
str += "," + chcklstbx1.CheckedItems(i).ToString
End If
Next
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\rose&mike\Desktop\DbSysDel3\salondbaccess.accdb"
con.Open()
Dim cmd As New OleDb.OleDbCommand
cmd = New OleDbCommand("Insert Into Services_Availed(AvailedNames) Values(@ServiceType_Name)", con)
cmd.Parameters.AddWithValue("@ServiceType_Name", str)
cmd.ExecuteNonQuery()
MessageBox.Show("Data inserted successfully")
con.Close()
Else
MessageBox.Show("Please select at least one item")
While (chcklstbx1.CheckedItems.Count > 0)
chcklstbx1.SetItemChecked(chcklstbx1.CheckedIndices(0), False)
End While
End If
Catch ex As Exception
End Try
End Sub
Irgendwelche Vorschläge sehr geschätzt würden.
Ist Ihre Absicht, eine neue Zeile für jedes Element hinzuzufügen, die überprüft wird, oder eine Zeile für alle jsut hinzufügen? Ihr Code fügt nur eine Zeile hinzu. Wie Sie auf Namen und IDs referenzieren, erfahren Sie unter: https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkeditems(v=vs.110).aspx –
@WayneG .Dunn ja Ich wollte eine Zeile hinzufügen, aber für jedes Element, das überprüft wird, sollte es in 'String' konvertiert werden, getrennt durch ein Komma, und in der Tabelle * AvailedNames * gespeichert werden. Der Code funktioniert, aber es scheint ein Problem mit den Werten zu geben, die ich als Referenz verwende. Die Elemente in der Checklistenbox stammen aus einer Tabelle mit dem Namen * Service_Types *. Bitte weisen Sie darauf hin, wo ich es falsch gemacht habe. – luca
In Ihrem Code für das 'Click'-Ereignis überprüfen Sie, ob Elemente überprüft werden (Ihre erste IF-Anweisung), dann durchlaufen Sie alle markierten Elemente, aber Ihr Code zum Einfügen eines neuen Datensatzes ist AUSSERHALB davon Schleife, daher wird es nur einmal ausgeführt. Sie sollten Ihre 'con.conn ..', 'con.open', direkt nach Ihrem 'IF' verschieben, dann bewegen Sie Ihre 'Next' zu kurz vor 'con.close'. Hast du dir den Artikel angesehen, wie man Artikel referenziert? –