Foros del Web » Programación para mayores de 30 ;) » .NET »

Error al depurar: "Una consulta UPDATE o DELETE no puede contener un campo multivalor

Estas en el tema de Error al depurar: "Una consulta UPDATE o DELETE no puede contener un campo multivalor en el foro de .NET en Foros del Web. Hola. Soy muy novato en la programación en VB y en especial .net . He estado elaborando un programita de prueba en VB 2008 Express. ...
  #1 (permalink)  
Antiguo 04/12/2008, 08:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Error al depurar: "Una consulta UPDATE o DELETE no puede contener un campo multivalor

Hola. Soy muy novato en la programación en VB y en especial .net . He estado elaborando un programita de prueba en VB 2008 Express. Este programa se conecta a una base de datos de Microsoft Access 2007.
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:
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
Un saludo,
Nico.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:43.