Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2005, 08:56
Mary_
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Problemas con checkedlistbox

Hola, solicito de nuevo ayuda con un checkedlistobx.
El problema es que cargo uno con los datos de una tabla fija, kiero decir q en esta tabla ni inserto registros ni los borro. Esta tabla está relacionada con otra por medio de una relación N:M con lo que se crea otra tabla intermedia que tiene como clave primaria la clave primaria d las otras dos. Las tablas serían sesion, clave idsesion; terapias, clave idterapia y sesionterapia, clave idsesion e id terapia. En el checkedlistbox muestro el campo nombre de la tabla terapias. Entonces puede q una sesión esté compuesta de varias terapias que es lo q m aparece en la tabla sesionterapia. Si en el checkedlistbox marco una determinada terapia significa q utilizo esa terapia en la sesion.
Cómo puedo guardar esos valores en la tabla sesionterapia? y si desmarco la terapia como puedo eliminarlo?
Había pensado hacerlo en el evento itemcheck q detecta un cambio de check.

Private Sub checkedListBox1_ItemCheck(ByVal sender As Object, _
ByVal e As ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck
If e.NewValue = CheckState.Unchecked Then
Dim sql = "delete from sesionterapia where idsesion=" & Val(txtIdSesion.Text)
sql = sql & " and idterapia=" & Val(txtIdSesion.Text)
If MsgBox("¿Desea eliminar esta terapia?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Eliminación de terapia") = _
MsgBoxResult.Yes Then
procesasql(sql)
End If
Else
Dim Sql = "insert into sesionterapia(idsesion,idterapia,duracion,parametr os)"
Sql = Sql & "Values('" & txtIdSesion.Text & "','" & txtIdTerapia.Text & "','" & txtDuracion.Text & "','"
Sql = Sql & txtParametros.Text & "')"
procesasql(Sql)
End If
End Sub

pero el problema es que cuando cargo el formulario y va a la base de datos a mostrar (y poner) el check d las terapias correspondientes a la sesión q estamos ya detecta el cambio de unchecked (inicialmente desactivo todos los check) a checked y m intenta insertar con lo que me da error "infracción de la restricción primary key pk_sesioneterapia. No se puede insertar una clave duplicada en el objeto 'sesionterapia'" pq ese registro ya está n la base de datos.
No sé como hacer todo esto, a ver si alguien m puede exar una mano, gracias.