Principales respuestas
Insertar datos de tabla en combobox

Pregunta
-
Hola a todos:
Una pregunta sobre algo que debe ser muy simple, pero que no encuentro la manera de solucionar (es lo que tiene llevar menos de una semana con el Visual Studio 2010)
A ver: tengo tres tablas creadas con sus correspondientes relaciones, de manera que a través de tres submenús en un formulario principal accedo a los formularios correspondientes para modificar sus datos, y funciona perfectamente. El problema me viene al incluir un combobox en el formulario principal que quiero que recoja los registros de uno de los campos de una de las tablas. Los datos se actualizan en la tabla, pero no el combobox... de hecho, para probar, he incluido en el formulario principal el bindinsource de la tabla en cuestión y al introducir un nuevo registro en la tabla a través de su formulario, después de guardar y cerrarlo, el bindinsource se queda igual, no se entera de los cambios y, claro, el combobox tampoco... al cerrar y abrir el programa, ya sí se actualiza
No sé si me he explicado bien... muchas gracias de antemano
Jose
Respuestas
-
Buenas de nuevo, Leandro,
Ya funciona perfectamente lo que quería... ahora solo me queda "digerir" y asimilar el código para que me sirva para otras aplicaciones.
Si no es mucho abusar, quisiera preguntarte otra duda:
Una de las tablas que he creado se llama "Fichas", debiendo almacenarse de alguna manera la imagen correspondiente. En la tabla "Fichas" he creado un campo llamado "ImagenFicha" de tipo "image" y en el formulario correspondiente un botón de búsqueda para seleccionar la imagen, funcionando bien al ejecutar la aplicación. Ahora bien, los problemas que tengo son los siguientes:
- En la tabla "Fichas", quisiera grabar por defecto 6 registros de fichas (posteriomente el usuario podría incluir más), pero no sé cómo incluir la imagen en la vista "Mostrar datos de tabla"... las imágenes las seleccionaría de las disponibles en "Resources"
- En el formulario principal, al seleccionar un equipo en el combobox que me has ayudado a resolver, quisiera que en un "PictureBox" se actualizara la imagen de la ficha correspondiente al equipo seleccionado (tengo una relación creada entre las tablas "Equipos" y "Fichas" de manera que un equipo tiene una ficha asignada)... he probado con una consulta, pero no las controlo lo suficiente en VisualStudio
Gracias una vez más, ya solo por lo que me has ayudado
Jose
- Marcado como respuesta jmbegara sábado, 15 de octubre de 2011 21:54
Todas las respuestas
-
claro porque no es magico, no se actualiza solo tu debes poner el codigo que recargue el Bindingsource con la nueva informacion cuando hay un cambio
debes comunicar los formulario
Comunicar formularios de forma desacoplada
y desde uno enviar el inform al padre para que se actualice, o se alance la query que recarga los datos del combo
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Buenas tardes, Leandro
En primer lugar, gracias por responder. El tema es que no estoy muy familiarizado con el código que utilizas en el ejemplo, ya que me parece lioso, fruto de mi inexperiencia (yo otras veces, para cambiar el control de texto de otro formulario lo he hecho simplemente como form2.textbox.text="text" desde el formulario en que me encuentre, pero claro, supongo que eso en determinadas circunstacias dará problemas). El caso es, ¿cuál es el método exacto para "recargar" el Bindingsource?... he probado a utilizar a la desesperada las siguientes posibilidades, en el evento "formClosing":
frm_Principal.EquiposDataGridView.Refresh()
frm_Principal.EquiposDataGridView.RefreshEdit()
frm_Principal.Refresh()
frm_Principal.Panel2.Refresh()
frm_Principal.EquiposTableAdapter.Update(Datos)
frm_Principal.EquiposDataGridView.Update()
frm_Principal.Update()(Equipos es la tabla que quiero actualizar, frm_Principal es el el formulario de inicio en el que quiero que se actualicen los datos nuevos insertados en otro formulario frm_Equipos... en el momento en que tuviera los datos actualizados en el formulario principal creo que sí sabría enlazarlo bien al combobox
Perdona mi ignorancia y gracias de nuevo
Jose
-
claro el tema es que necesitas dew la instancia del formulario para poder realizar la accion
usando el nombre del formulario como haces alli no funciona, es por eso que veras en el ejemplo que se pasa el valor en el Show() pasando la instancia del form padre al hijo para que este pueda invocarlo
sino otra forma de actualziar el padre es detectando el cierre del form hijo
como se describe aqui
http://social.msdn.microsoft.com/Forums/es/vbes/thread/508c6966-7a76-4415-810d-74c6af86134a
o sea en el form padre pondrias
Private Sub cmdAbrirForm2_Click(sender As Object, e As EventArgs)
Dim form As New Form2()
AddHandler form.FormClosing, AddressOf form_Closing
form.Show()
End Sub
Private Sub form_Closing(..)
' aqui es donde recargas el control pero estando en el form principal
End Subcomo veras desde el form padre (principal) detectas el cierre del form hijo para realziar la accion de refresh
pero como esta en el propio form accedes directo al bindingsource
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Hola de nuevo, Leandro
Primero, darte de las gracias de nuevo por tomarte la molestia
Mira, siguiendo tus instrucciones e intentando adaptarlas a mi aplicación, cosa que parece ser que no he conseguido, he incluido el siguiente código en el Frm_Principal:
(el acceso al formulario lo hago a través de un submenú)
Private Sub PruebaEquiposToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PruebaEquiposToolStripMenuItem.Click
Dim form As New frm_Equipos
AddHandler form.FormClosing, AddressOf form_Closing
form.Show()
End Sub
Private Sub form_Closing()
' aqui es donde recargas el control pero estando en el form principalTableAdapterManager.UpdateAll(Me.Datos)
EquiposDataGridView.Update()
With Me.cbo_Equipo
.DataSource = Me.EquiposBindingSource
.DisplayMember = "NombreEquipo"
.ValueMember = "IdEquipo"
End With
End Suby en el evento Form_closing del formulario frm_Equipos (que supongo que será el hijo):
Private Sub frm_Equipos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
EquiposDataGridView.Update()
EquiposTableAdapter.Fill(Me.Datos.Equipos)
End SubAl compilar no da problemas, pero al ejecutar y cerrar el frm_Equipos no me acutualiza el datagridview. También comentarte que mi idea es no dejar ese datagridview como definitivo, sino que lo he incluido para confirmar visualmente que se actualiza... en realidad lo que quiero es que al cerrar el form Equipos, se actualize automáticamente el combobox con todos los equipos
Un saludo y gracias de... me estás ayudando mucho
Jose
-
un punto que noto es que en el metodo
Private Sub form_Closing()
has olvidado lo parametro del evento, el sender y el "e", deberia ser igual al
Private Sub frm_Equipos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
ahora bien en el frm_Equipos no deberas definir este evento, ya que la ides es que en la accion del boton del frm_Equipos realices la actualizacion y luego uses el Me.Close()
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Buenas de nuevo, Leandro,
Ya funciona perfectamente lo que quería... ahora solo me queda "digerir" y asimilar el código para que me sirva para otras aplicaciones.
Si no es mucho abusar, quisiera preguntarte otra duda:
Una de las tablas que he creado se llama "Fichas", debiendo almacenarse de alguna manera la imagen correspondiente. En la tabla "Fichas" he creado un campo llamado "ImagenFicha" de tipo "image" y en el formulario correspondiente un botón de búsqueda para seleccionar la imagen, funcionando bien al ejecutar la aplicación. Ahora bien, los problemas que tengo son los siguientes:
- En la tabla "Fichas", quisiera grabar por defecto 6 registros de fichas (posteriomente el usuario podría incluir más), pero no sé cómo incluir la imagen en la vista "Mostrar datos de tabla"... las imágenes las seleccionaría de las disponibles en "Resources"
- En el formulario principal, al seleccionar un equipo en el combobox que me has ayudado a resolver, quisiera que en un "PictureBox" se actualizara la imagen de la ficha correspondiente al equipo seleccionado (tengo una relación creada entre las tablas "Equipos" y "Fichas" de manera que un equipo tiene una ficha asignada)... he probado con una consulta, pero no las controlo lo suficiente en VisualStudio
Gracias una vez más, ya solo por lo que me has ayudado
Jose
- Marcado como respuesta jmbegara sábado, 15 de octubre de 2011 21:54