Si alguien desearía
apoyarme tengo una tarjeta Oxxo Saldazo
con el número: 4766-8408-7508-1593,
cualquier apoyo lo pueden hacer en cualquier tienda Oxxo o en Banamex, les
agradezco y que sus proyectos lleguen a buen fin.
Amigos, les platico mi experiencia, hace tiempo
hice una rutina para llenar un combobox desde un datable, por exigencias de mi
rutina, tenía que volver a entrar una y otra vez si cierta condición se cumplía,
yo probé a limpiar el combobox con varios métodos como:
Cbocompan.DataSource
= Nothing
Cbocompan.Items.Clear()
Cbocompan.Refresh()
Y ¡NADA de NADA! me seguía añadiendo otro registro u
otros registros al combobox de tal manera que si entraba 20 veces a la rutina
me duplicaba 20 veces la información del combobox
Razone que puesto que el combobox venia de un
datatable, algo estaba pasando con el datatable, yo asumía erróneamente que
cuando se crea una instancia del sqldataadapter y llena(fill) el datatable lo
dejaba limpio o lo reinicializaba, pues ¡RESULTA QUE NO! VUELVE A ÑADIR OTROS
REGISTROS A ESA DATABLE A PESAR DE QUE EN LA BASE DE DATOS SOLO TIENE 3
REGISTROS.
Para que quede claro, a continuación les muestro la
forma en que llenaba el combobox, donde DT es es mi datatable y sp_traecompan
es mi stored procedure que me trae los datos d la base de datos
Dim miadaptador As SqlDataAdapter
miadaptador = New SqlDataAdapter("sp_traecompan",
nvacnn.miConexion)
miadaptador.SelectCommand.CommandType
= CommandType.StoredProcedure
miadaptador.Fill(dt)
Cbocompan.DataSource = dt
Cbocompan.DisplayMember =
dt.Columns("desccompania").Caption.ToString
Cbocompan.ValueMember = dt.Columns("cvecia").Caption.ToString
Cbocompan.SelectedValue = ""
‘aquí verifico cuantos registros tiene mi
datatable, en la tabla de la base original solo tengo tres registros, esto lo
hice cuando me canse de tratar de limpiar el combo y nada
Dim
numeroreg As Integer
= dt.Rows.Count
‘aqui esta el quid de la cuestión, si entraba una
sola vez, el dt.Rows.Count tenía tres ítems(puesto que en mi tabla de la base
de datos tengo 3 registros) pero si volvía a entrar ya tenia 6 y si entaba otra
vez a esta rutina ya tenia 9 y asi sucesivamente, yo asumi entonces que el
datatable no se limpia automáticamente y que hay que añadir la siguiente
instrucción antes de hacer la rutina
dt.Clear() ‘¡AQUI ESTA LA SOLUCIÓN, LIMPIAR ANTE DE
LLENAR NUEVAMENTE LA DATABLE Y OBVIAMENTE ANTES DE LLENAR EL COMBOBOX!
Dim miadaptador As SqlDataAdapter
miadaptador = New SqlDataAdapter("sp_traecompan", nvacnn.miConexion)
Bueno si tienen una mejor solución o sugerencia a
este problema , no duden en compartirla
¡Saludos!