Mi problema es que al actualizar manualmente un valor de una fila y columna dada, en el momento que el programa ejecuta "Me.TableAdapterManager.UpdateAll" se detiene y me sale el mensaje: "Una consulta UPDATE o DELETE no puede contener un campo multivalor".
He buscado información al respecto y he hecho muchas pruevas pero sin resultado positivo y no tengo ni idea de como resolverlo. Agradecería mucho cualquier ayuda.
Este proyecto llamado prueba5 contiene un formulario que lo que hace es manipular los datos de una tabla llamada "tbl_visitas" y de otra tabla llamada "tbl_ciudades_".
Todo funciona bien hasta que modifico alguna casilla del checkedlistbox "clb_ciudades" y le doy al boton guardar del BindingNavigator. He tenido que actualizar los valores del checkedlistbox manualmente porque no sé como enlazarlo a los datos automáticamente como en los listbox.
El esquema de los datos es el siguiente:
tbl_ciudades_
· CiudadesID
· Ciudad
· Provincia
· Pais
tbl_visitas_
· id_visita
· Nombre
· CiudadesID
El campo tbl_visitas_.ciudadesID es de tipo string y contiene índices de tbl_ciudades.CiudadesID separados por ";"
Al añadir crear las conexiones a la base de datos y añadir las tablas al Dataset, Visual Studio añadió automáticamente los siguientes objetos:
Prueba5DataSet
Tbl_ciudades_TableAdapter
Tbl_visitasTableAdapter
TblciudadesBindingSource
Tbl_visitasBindingSource
TableAdapterManager
Tbl_visitasBindingNavigator
Este es el error: http://img201.imageshack.us/img201/3932/dibujoqe6.jpg
Adjunto parte deñ código que creo que está involucrado en el error:
Código:
Un saludo,Private Sub clb_ciudades_SelectedIndexChanged _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles clb_ciudades.SelectedIndexChanged Dim CiudadesID_str As String = ("") For Each item As Object In clb_ciudades.CheckedItems Dim index As Int32 = clb_ciudades.Items.IndexOf(item) If CiudadesID_str.Length = 0 Then CiudadesID_str = index + 1 Else CiudadesID_str = CiudadesID_str & ";" & (index + 1) End If Next 'Si comento la linea siguiente, no tengo ningun error pero los items marcados 'del checkedlistbox se graban en el dataset pero no en el fichero de access. Me.Prueba5DataSet.tbl_visitas.Rows_ (Posicion - 1)("ciudadesID") = CiudadesID_str CiudadesID_str = "" End Sub Private Sub Tbl_visitasBindingNavigatorSaveItem_Click _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Tbl_visitasBindingNavigatorSaveItem.Click Me.Validate() Me.Tbl_visitasBindingSource.EndEdit() 'Después de la línea de a continuación ocurre el error Me.TableAdapterManager.UpdateAll(Me.Prueba5DataSet) End Sub
Nico.