Visual Basic.NET - Problema binding

 
Vista:

Problema binding

Publicado por Beatriz (38 intervenciones) el 12/01/2008 15:16:56
Buenas tardes:

Tengo un problema del cual no encuentro solución, por más vueltas que le estoy dando. Se lo expongo a ver si me pueden echar una mano.

Necesito filtrar, para buscar una expedición (envío) y mostrarla en pantalla, y/o a traves de un datagridview, al hacer doble click. La primera vez que busco, o hago doble click sobre una expedición me la muestra sin problemas. Es en la segunda búsqueda cuando me da el error:
"Provoca que dos enlaces en la colección se enlacen a la misma propiedad.
Nombre del parámetro: binding"

El código que tengo en el formulario es el siguiente:

Dim DV As DataView = ds.Tables("EXPEDICION").DefaultView

DV.RowFilter = "EXPEDICION= '" + Me.txtFiltro.Text + "'
DV.Sort = "EXPEDICION"

bs.DataSource = DV
Dim enlace As Binding

Me.txtId.DataBindings.Add(New Binding("text", DV, "ID", True))
enlace = Nothing
Me.txtExpedicion.DataBindings.Add(New Binding("TEXT", DV, "EXPEDICION", True))
enlace = Nothing
Me.txtRemitente.DataBindings.Add(New Binding("TEXT", DV, "REMITENTE", True))
enlace = Nothing

En el botón donde me filtra, o en el evento doble click del datagridview:

Dim ExpFiltro As String
ExpFiltro = Me.DataGridView1.CurrentRow.Cells("EXPEDICION").Value

With My.Forms.ExpedicionFiltro
.txtFiltro.Text = ExpFiltro
End With
My.Forms.ExpedicionFiltro.ShowDialog()

¿Alguien sabría decirme como evitar dicho error?
Muchas gracias por su atención. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema binding

Publicado por Eduardo (32 intervenciones) el 12/01/2008 22:16:55
Hola Beatriz

Me prece q ocurre ese error x q no limpias los DataBling, osea q estas enlazando 2 veces y eso no permite el VB para eso tienes q limpiar el databinding de cada caja de texto.

esta parte limpia los DataBling:
Me.txtId.DataBindings.Add(New Binding("text", DV, "ID", True))
enlace = Nothing
Me.txtExpedicion.DataBindings.Add(New Binding("TEXT", DV, "EXPEDICION", True))
enlace = Nothing
Me.txtRemitente.DataBindings.Add(New Binding("TEXT", DV, "REMITENTE", True))
enlace = Nothing

pero solo esta en el form no en el boton, primero tiene q limpiar los valores anteriores para poder enlazar otra vez.

Bueno espero q haber ayudado en algo. Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema binding

Publicado por Beatriz (38 intervenciones) el 13/01/2008 02:32:18
Hola Eduardo, muchas gracias por tu consejo. En el botón he puesto:

My.Forms.ExpedicionFiltro.DataBindings.Clear()

Pero, no he conseguido nada. ¿Es lo que me aconsejabas?
Muchas gracias. Un saludo:

Beatriz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema binding

Publicado por Eduardo (32 intervenciones) el 13/01/2008 15:58:00
Hola Beatriz, tienes q aplicar el "Clear" del DataBinding a cada TextBox y/o control q se este enlazando con los datos de la BD. yo para filtar hago esto:

Dim DapProveedor As New SqlDataAdapter("Select * from Proveedor where " & CboCondicion.Text & " like'%" & TxtBuscar.Text & "%' order by " & CboCondicion.Text & " " & My.Settings.OrdenarListas, cn)
Dim dst As New DataSet
Try
DapProveedor.Fill(dst, "Proveedor")
If cn.State = ConnectionState.Open Then
cn.Close()
End If
cn.Open()
'AQUI LIMPIO LOS DATABINDING DE CADA CONTROL(LO Q TE ACONSEJO A HAGAS)
'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TxtRUC.DataBindings.Clear()
TxtNombre.DataBindings.Clear()
TxtDireccion.DataBindings.Clear()
CboDistrito.DataBindings.Clear()
TxtTelefono.DataBindings.Clear()
TxtCorreo.DataBindings.Clear()
'///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

'AQUI AGREGO LOS DATOS ACADA CONTROL
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TxtRUC.DataBindings.Add("Text", dst.Tables("Proveedor"), "RUC")
TxtNombre.DataBindings.Add("Text", dst.Tables("Proveedor"), "Nombres")
TxtDireccion.DataBindings.Add("Text", dst.Tables("Proveedor"), "Direccion")
CboDistrito.DataBindings.Add("Text", dst.Tables("Proveedor"), "Distrito")
TxtTelefono.DataBindings.Add("Text", dst.Tables("Proveedor"), "Telefono")
TxtCorreo.DataBindings.Add("Text", dst.Tables("Proveedor"), "Correo")

'AKI AGREGA DATOS A UN LISTBOX
LstProveedor.DataSource = dst.Tables("Proveedor")
LstProveedor.ValueMember = "RUC"
LstProveedor.DisplayMember = CboCondicion.Text
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Bueno espero haber aclarado tu duda, cualquier duda estoy para ayudarte.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema binding

Publicado por Beatriz (38 intervenciones) el 13/01/2008 17:06:00
Muchísimas gracias Eduardo por tu ayuda. Por más vueltas que le daba no me salía, y había realizado otra aplicación muy parecida y no me había pasado ese problema. Sin vuestra desinteresada ayuda, donde taría aún.....

Gracias de veras por dedicarnos vuestro tiempo para enseñarnos y "permitirnos seguir adelante".

Un cordial y afectuoso saludo:

Beatriz
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

te agradesco Eduardo

Publicado por Jaime Rojas (3 intervenciones) el 19/07/2008 12:55:57
Gracias eduardo de paso me ayudaste tb tenia alguna pista por ahi pero medio q no me daba jejej pero ahora t cuento q tengo otro pequeño problemita a cause de arreglar este yo cargaba 2 textbox y 2 labels con un combobox y ahora con lo q me dijiste me cargan los datos de maravilla pero cuando le doy click al combobox y selecciono otro nombre, en el combobox_SelectedIndexChanged medio q no funciona algo pero no se q es exactamente aqui t apunto el codigo ojala puedas darme una manito llevo 5 dias amaneciendome solo en esta partecita de codigo ya no tengo cabeza pa pensar jejejje

Private Sub cbInsumo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbInsumo.SelectedIndexChanged

Me.cbInsumo.ValueMember = "Cod_Insumo"
Dim DapInsumo As New SqlClient.SqlDataAdapter("Select * from Insumo where Cod_Insumo like'%" & Me.cbInsumo.ValueMember & "%' order by Cod_Insumo ", My.Settings.OdontoBDConnectionString1)
DapInsumo.Fill(ds, "Insumo")
Me.txtCantidadInsumo.DataBindings.Clear()
Me.lblStockmin.DataBindings.Clear()
Me.lblx.DataBindings.Clear()
Me.txtCantidadInsumo.DataBindings.Add("Text", ds.Tables("Insumo"), "Cantidad_Insu")
Me.lblx.DataBindings.Add("Text", ds.Tables("Insumo"), "Cod_Insumo")
Me.lblStockmin.DataBindings.Add("Text", ds.Tables("Insumo"), "Stock_Min")

end sub
AQUI ES DONDE CARGO EL BINDING AL CARGAR EL FORMULARIO
Private Sub frmSesion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cargarbinding()
With cbInsumo
.DataSource = ds.Tables("dtsListarInsumo")
.ValueMember = "Cod_Insumo"
.DisplayMember = "Nombre_Insu"
End With
End Sub
Public Function cargarbinding()
Dim objInsumo As New BRL.Insumo
ds = objInsumo.Listar_Insumo
LimpiarBinding()
Me.BindingSource1.DataSource = ds.Tables("dtsListarInsumo")
Me.txtCantidadInsumo.DataBindings.Add(New Binding("Text", ds, "dtsListarInsumo.Cantidad_Insu", True))
End Function

Y ESTO ES PARA LIMPIARLO ES LO Q UTILIZABA ANTES
Public Sub LimpiarBinding()
Dim objInsumo As New BRL.Insumo
ds = objInsumo.Listar_Insumo
Me.BindingSource1.DataSource = ds.Tables(0)
Me.txtCantidadInsumo.DataBindings.Clear()
End Sub
Y EL BOTON PARA DISMINUIR EL INSUMO Q FUNCIONA BIEN POR CIERTO LO UNICO Q NO LOGRO ES ACTUALIZAR LA CANTIDAD EN SELECTINDEX CHANGE DEL COMBOBOX Y ME RESTA AL VALOR DEL PRIMER DATO TODO JJEJE
Private Sub btnDisminuirInsumo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisminuirInsumo.Click
Dim nuevacantidad As Integer
nuevacantidad = Me.txtCantidadInsumo.Text - Me.txtCantidadUsada.Text
Dim DisminuirInsu As New BRL.Insumo
'Me.cbInsumo.ValueMember = "Cod_Insumo"
'Me.CodigoModificar = Me.cbInsumo.SelectedValue
'Me.CodigoModificar()
DisminuirInsu.Codigo_Insumo = Me.cbInsumo.SelectedValue
DisminuirInsu.Cantidad = nuevacantidad
If DisminuirInsu.Disminuir_Insumo > 0 Then
MsgBox("Se disminuyo el insumo correctamente")
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema binding

Publicado por Ogilve Ortiz (1 intervención) el 16/03/2016 05:19:53
Te felicito por tu explicación Eduardo, tenía el mismo problema que se cita al principio y al limpiar los databindings de cada txt se resolvió el problema. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema binding

Publicado por Jaime Rojas (3 intervenciones) el 19/07/2008 10:43:49
mira yo estoy con el mismo problema pero me parece q en la parte donde cargas el binding deberias limpiar los campos algo asi no se si me entiendas

Public Function cargarbinding()
Dim objx As New BRL.Clase <-------------donde tienes la funcion
ds = objx.funcion
LimpiarBinding()
Me.BindingSource1.DataSource = ds.Tables("dtstabbla")
Me.txtTextbox.DataBindings.Add(New Binding("Text", ds, "dtstabla.campo"))
End Function

y limpiar binding seria asi

Public Sub LimpiarBinding()
Dim objx As New BRL.Clase
ds = objx.funcion
Me.BindingSource1.DataSource = ds.Tables(0)
Me.txtTextbox.DataBindings.Clear()
End Sub

bueno ojala t sirva de algo porq yo estoy en las misma el q primero lo descifre le dice al otro ok
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Auxilio

Publicado por Jaime Rojas (3 intervenciones) el 19/07/2008 10:51:34
Beatriz lo resolvieron no dime como por favor yo toy con lo mismo porfa solo explicame a q se debe y lo cambioo please
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar