combobox.selectedindes speichern

29/05/2009 - 13:09 von Mario Krsnic | Report spam
Hallo zusammen,
ich will den Wert für Geschlecht aus einem ComboBox in mssql-DB
speichern. Irgendwie làßt sich die Änderung im Combobox nicht abspeichern.
Im ComboBox habe ich zwei Zeilen: "Frau" und "Mann", im Modul ist sqlstring:
SQLQuery = "SELECT
PatientID,Last_name,first_name,Gender,[Disabled]

und in der Programmform habe ich:
Private Sub FillControls(ByRef dt As DataTable)
Me.txtFName.Text = dt.Rows(iRowIndex).Item("first_name").ToString()
Me.txtLName.Text = dt.Rows(iRowIndex).Item("Last_name").ToString()
Me.cmbGender.SelectedIndex =
Convert.ToInt16(IIf(Convert.ToBoolean(dt.Rows(iRowIndex).Item("Gender")) True, 0, 1))
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSave.Click
Dim CommandBuilder As New SqlClient.SqlCommandBuilder(objadapter),
drPatients As DataRow
If btnNew.Enabled = False Then
objadapter.InsertCommand = CommandBuilder.GetInsertCommand
drPatients = dtPatients.NewRow
With drPatients
.Item("first_name") = Me.txtFName.Text
.Item("Last_name") = Me.txtLName.Text
.Item("Gender") = Me.cmbGender.SelectedIndex
End With
iRowIndex = iRowIndex + 1
dtPatients.Rows.Add(drPatients)
btnNew.Enabled = True
FillControls(dt:=dtPatients)
Else
objadapter.UpdateCommand = CommandBuilder.GetUpdateCommand
With dtPatients.Rows(iRowIndex)
.Item("first_name") = Me.txtFName.Text
.Item("Last_name") = Me.txtLName.Text
.Item("Gender") = Me.cmbGender.SelectedIndex
End With
End If

objadapter.Update(dtPatients)
End Sub

Den richtigen Wert làßt sich nicht abspeichern beim Anlegen eines neuen
Satzes und genausowenig beim Update.
Was mache ich falsch?
Mario
 

Lesen sie die antworten

#1 Peter Fleischer
29/05/2009 - 14:12 | Warnen spam
"Mario Krsnic" schrieb im Newsbeitrag
news:4a1fc26e$0$30231$
Hallo zusammen,
ich will den Wert für Geschlecht aus einem ComboBox in mssql-DB
speichern. Irgendwie làßt sich die Änderung im Combobox nicht abspeichern.



Hi Mario,
die ComboBox bietet für solche Fàlle eine geniale Möglichkeit:

Die ComboBox zeigt Daten aus einer Datenquelle im Langtext über die
DisplayMember-Eigenschaft an. Synchron dazu wird im Hintergrund ValueMember
und SelectedValue mitgeführt. Damit reduziert sich das Problem auf das
Binden eine 2-spaltigen Datenquelle. Die Objekt in der Datenquelle haben
einen LangText (z.B. "Frau" und "Mann") und eine ID, die zum Typ des
korrospondieren Datenbankfeldes passt (z.B. 1 und 2 oder true und false).

Im ComboBox habe ich zwei Zeilen: "Frau" und "Mann", im Modul ist
sqlstring:
SQLQuery = "SELECT
PatientID,Last_name,first_name,Gender,[Disabled]

und in der Programmform habe ich:
Private Sub FillControls(ByRef dt As DataTable)
Me.txtFName.Text = dt.Rows(iRowIndex).Item("first_name").ToString()
Me.txtLName.Text = dt.Rows(iRowIndex).Item("Last_name").ToString()
Me.cmbGender.SelectedIndex =
Convert.ToInt16(IIf(Convert.ToBoolean(dt.Rows(iRowIndex).Item("Gender")) > True, 0, 1))



Es reicht dann, SelectedValue zuzuweisen:

Me.cmbGender.SelectedValue = dt.Rows(iRowIndex).Item("Gender")

End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSave.Click
Dim CommandBuilder As New SqlClient.SqlCommandBuilder(objadapter),
drPatients As DataRow
If btnNew.Enabled = False Then
objadapter.InsertCommand = CommandBuilder.GetInsertCommand
drPatients = dtPatients.NewRow
With drPatients
.Item("first_name") = Me.txtFName.Text
.Item("Last_name") = Me.txtLName.Text
.Item("Gender") = Me.cmbGender.SelectedIndex



Und hier der umgekehrte Weg:

.Item("Gender") = Me.cmbGender.SelectedValue

End With
iRowIndex = iRowIndex + 1
dtPatients.Rows.Add(drPatients)
btnNew.Enabled = True
FillControls(dt:=dtPatients)
Else
objadapter.UpdateCommand = CommandBuilder.GetUpdateCommand
With dtPatients.Rows(iRowIndex)
.Item("first_name") = Me.txtFName.Text
.Item("Last_name") = Me.txtLName.Text
.Item("Gender") = Me.cmbGender.SelectedIndex
End With
End If

objadapter.Update(dtPatients)
End Sub

Den richtigen Wert làßt sich nicht abspeichern beim Anlegen eines neuen
Satzes und genausowenig beim Update.
Was mache ich falsch?



Probier es mal, wie ich beschrieben habe.

Viele Grüsse
Peter

Ähnliche fragen