Textbox que recupere posiciones de tabla access
Publicado por SweeTy (12 intervenciones) el 25/11/2010 15:08:51
Hola a todos,
Estoy creando un programa en VisualBasic enlazado a una base de datos.
En este formulario, aparte de la opcion de ir actualizando la base con nuevos registros, quiero tener la opcion de hacer una busqueda por un campo en especifico.
Para esto ultimo he creado un combobox un boton y 2 textbox.
En el combo puedo elegir el numero de operacion que viene dado por la columna "Operacion" dentro de la tabla "Provision" de mi access.
Cuando elijo el Codigo de "Operacion" y hago click en el boton se me actualiza un textbox con la columna "Caso" de la misma tabla, mostrandome asi el caso generado por esa "Operacion". Hasta aqui todo bien.
El otro textbox hasta ahora se me actualizaba con la columna "ID" de la misma tabla. Pero me he dado cuenta que si borro un registro el "ID" pasa al siguiente, ya que es autonumerico. Es decir si tengo los registros 1, 2 y 3 y borro el ultimo, al crear un nuevo registro le da el ID 4 y no el tres. Por lo que cuando pongo el ID en el BindingNavigatorpositionItem no me recupera nada o me recupera el ultimo registro.
He querido hacer para que el Textbox en cuestion en vez de mostrar el numero de la columna "ID" me muestre el numero de posicion en la que se encuentra. Pero en ese punto estoy atascado.
El codigo que tengo en el boton para lo descrito arriba es el siguiente:
If Not TypeOf ComboBox1.SelectedValue Is DataRowView Then
Dim row As DataRowView = DirectCast(ComboBox1.SelectedItem, DataRowView)
Caso_btextbox.Text = row.Item("caso").ToString
'aqui cuando el textbox recupere la posicion se igualara con el navigator y se actualizaran los registros con todos los datos de esa operacion.
BindingNavigatorPositionItem.Text = IDTextbox.text
BindingNavigatorPositionItem.Focus()
BindingNavigatorPositionItem_Click(Nothing, Nothing)
End If
La parte que me falta es la que hace que el textbox, al seleccionar un codigo de operacion, se actualice con el numero de registro que tenga, para ponerlo en el Bindingnavigatorpositionitem y al apretar enter se despace hasta esa entrada.
Tambien me ayudaria si en vez de eso, al elegir del Combo la Operacion deseada, me saltara el BindingNavigatorPositionItem a la posicion de esa operacion. Para que cuando quiera actualizar no se reescriban los registros. Porque en algo parecido que intenté. Al actualizarse todos los campos con los de la tabla. Cuando guarde los cambios se actualizó la posicion 1 de la tabla, machacando asi esa operacion.
O incluso si se puede configurar que el ID autonumerico cuando se borre una linea se actualice igualando el numero ID con la posicion del registro.
Gracias por la ayuda que podais darme.
Estoy creando un programa en VisualBasic enlazado a una base de datos.
En este formulario, aparte de la opcion de ir actualizando la base con nuevos registros, quiero tener la opcion de hacer una busqueda por un campo en especifico.
Para esto ultimo he creado un combobox un boton y 2 textbox.
En el combo puedo elegir el numero de operacion que viene dado por la columna "Operacion" dentro de la tabla "Provision" de mi access.
Cuando elijo el Codigo de "Operacion" y hago click en el boton se me actualiza un textbox con la columna "Caso" de la misma tabla, mostrandome asi el caso generado por esa "Operacion". Hasta aqui todo bien.
El otro textbox hasta ahora se me actualizaba con la columna "ID" de la misma tabla. Pero me he dado cuenta que si borro un registro el "ID" pasa al siguiente, ya que es autonumerico. Es decir si tengo los registros 1, 2 y 3 y borro el ultimo, al crear un nuevo registro le da el ID 4 y no el tres. Por lo que cuando pongo el ID en el BindingNavigatorpositionItem no me recupera nada o me recupera el ultimo registro.
He querido hacer para que el Textbox en cuestion en vez de mostrar el numero de la columna "ID" me muestre el numero de posicion en la que se encuentra. Pero en ese punto estoy atascado.
El codigo que tengo en el boton para lo descrito arriba es el siguiente:
If Not TypeOf ComboBox1.SelectedValue Is DataRowView Then
Dim row As DataRowView = DirectCast(ComboBox1.SelectedItem, DataRowView)
Caso_btextbox.Text = row.Item("caso").ToString
'aqui cuando el textbox recupere la posicion se igualara con el navigator y se actualizaran los registros con todos los datos de esa operacion.
BindingNavigatorPositionItem.Text = IDTextbox.text
BindingNavigatorPositionItem.Focus()
BindingNavigatorPositionItem_Click(Nothing, Nothing)
End If
La parte que me falta es la que hace que el textbox, al seleccionar un codigo de operacion, se actualice con el numero de registro que tenga, para ponerlo en el Bindingnavigatorpositionitem y al apretar enter se despace hasta esa entrada.
Tambien me ayudaria si en vez de eso, al elegir del Combo la Operacion deseada, me saltara el BindingNavigatorPositionItem a la posicion de esa operacion. Para que cuando quiera actualizar no se reescriban los registros. Porque en algo parecido que intenté. Al actualizarse todos los campos con los de la tabla. Cuando guarde los cambios se actualizó la posicion 1 de la tabla, machacando asi esa operacion.
O incluso si se puede configurar que el ID autonumerico cuando se borre una linea se actualice igualando el numero ID con la posicion del registro.
Gracias por la ayuda que podais darme.
Valora esta pregunta


0