Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: fezaca en 11 de Febrero 2014, 21:27
-
Hola otra vez, ya solucioné el problema anterior, resulta que me había despistado un poco.
Pero traigo otro problema y por mas que busco no encuentro respuestas correctas y ahora lo traigo aquí, y es lo siguiente:
Quiero introducir datos en 4 TextBox y con un boton hacer que se guarden en una DataGridView que está enlazada a datos y que al salir del formulario me guarde los datos introducidos en mi base de datos.
¿Alguien puede ayudarme?
Gracias
-
Al salir del formulario se produce un evento, y como respuesta a dicho evento puedes introducir código para el guardado de datos, que aparezca un mensaje en pantalla, etc.
Ejemplo código para visual basic .net:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
MsgBox("Se produce el cierre del formualrio")
End Sub
End Class
Para poder ver tu problema en concreto, pega el código hasta donde hayas podido llegar para tratar de ver dónde surgen los problemas...
Saludos.
-
Hola ALEX.
El código que tengo es este, y me inserta los datos que introduzco en los TextBox dentro de la dataGrid, pero no me deja en blanco los TextBox y cuando reinicio la aplicación desaparecen los datos de la DataGrid.
Dim row As DataGridViewRow = DataGridView1.Rows(0)
row.Cells(0).Value = TextBox4.Text
row.Cells(3).Value = TextBox3.Text
row.Cells(2).Value = TextBox2.Text
row.Cells(1).Value = TextBox1.Text
Puedes hacer algo y Ayudarme?
Gracias.
-
Una opción que se me ocurre es que guardes los datos en un archivo, pero no sé si te resulta de interés. Necesitaría ver el código completo y el diseño del formulario, si es muy extenso puedes ponerlo en un archivo de texto adjunto.
-
Hola ALEX, Mi código es el esta puesto un poco mas arriba y ademas es el que tengo, pero solo me agrega los datos a la DataGrid pero no me deja en blanco los TextBox y no los guarda en la base de datos, asi que cuando retorno a ejecutar la aplicación no tengo nada en la DataGrid.
Tengo un formulario con una DataGrdView, 4 TextBox y un Botón para Guardar los datos que introduzco en la DataGrid en la cual veo los campos de mi base de datos, y tengo enlazado la DataGrid a una base de datos local SQL
Espero me ayudes y por si acaso te pongo el código que he puesto
Dim row As DataGridViewRow = DataGridView1.Rows(0)
row.Cells(0).Value = TextBox4.Text
row.Cells(3).Value = TextBox3.Text
row.Cells(2).Value = TextBox2.Text
row.Cells(1).Value = TextBox1.Text
Gracias
-
Como ves el código es muy sencillo pero es el único que tengo y el formulario que te envio (solo es esta mi aplicación) le falta dos botones uno eliminar y otro modificar, para borrar un registro de la base de datos ya en desuso ó modificar un dato equivocado.
Mi base de datos se lama DataBase2.mdf.
Y la tabla se llama BARCINO.
Dim row As DataGridViewRow = DataGridView1.Rows(0)
row.Cells(0).Value = TextBox4.Text
row.Cells(3).Value = TextBox3.Text
row.Cells(2).Value = TextBox2.Text
row.Cells(1).Value = TextBox1.Text
Gracias.
-
Con este código para Visual Basic 2010 puedes ir añadiendo todas las filas que quieras a una datagridview insertando datos y pulsando guardar, hasta que decidas terminar pulsando cerrar. Cada vez que insertas datos, los textBox se limpian de los datos anteriores.
Public Class Form1
Dim row(4) As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Guardar"
Button2.Text = "Cerrar"
DataGridView1.ColumnCount = 4
DataGridView1.Columns(0).Name = "Fabricante"
DataGridView1.Columns(1).Name = "Modelo"
DataGridView1.Columns(2).Name = "Nombre recambio"
DataGridView1.Columns(3).Name = "Referencia"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
row(0) = TextBox1.Text
row(1) = TextBox2.Text
row(2) = TextBox3.Text
row(3) = TextBox4.Text
Dim rowToSave As String() = New String() {row(1), row(2), row(3), row(4)}
DataGridView1.Rows.Add(row)
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End
End Sub
End Class
Saludos
-
Gracias ALEX lo podré en cuanto pueda.
Y una pregunta informativa, los códigos se puede poner sin importar lo largo o lo corto que sean poner en el formulario principal o se tiene que poner cada parte en su evento.
Si tuviera que ir cada código en su evento existe alguna forma de poner todos los códigos de una aplicación en un sitio y que todo guncione bien?
Gracias
-
Hola ALEX.
Instalé el código y me da este error (lo que está entre corchete).
DataGridView1[.Rows.Add(row)]
Y me dice el siguiente información.
No se controló InvalidOperationException
No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos.
Supongo que tu sabrás lo que significa esa información.
Espero que lo puedas solucionar, GRACIAS.
-
Hola, para eliminar ese mensaje tienes que pulsar sobre el objeto datagrid en la vista de diseño y en una pequeña flecha que aparece en la parte superior derecha desplegar el menú y elegir como opción "Elegir origen de datos: ninguno".
Sobre lo que preguntabas:
Y una pregunta informativa, los códigos se puede poner sin importar lo largo o lo corto que sean poner en el formulario principal o se tiene que poner cada parte en su evento.
Los códigos se deben organizar modularmente (es decir, separadamente cada código asociado a su evento e incluso los procedimientos que puedan identificarse como tareas unitarias deben estar separadas).
Para entender cómo organizar el código: curso Bases de la programación nivel II, https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=36&Itemid=60
Para entender cómo organizar el código con Visual Basic: curso Visual Basic nivel I, https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
Saludos.
-
Sinto tener que darte la lata otra vez ALEX.
Haciendo lo que me dijistes los registros que tengo en la base de datos no salen en la DataGrid y los registros nuevos no los guarda en la base de datos, solo los tengo a la vista en la DataGrid.
Gracias y espero tu solución.
-
Tienes que conectar la aplicación con la base de datos. El primer paso es hacer click sobre el menú "Ver(view)" y seleccionar "Otras ventanas - > Explorador de bases de datos". En el lateral izquierdo se te abrirá un panel que pone explorador de bases de datos, y desde ahí tienes que buscar la base de datos. Yo estoy haciéndolo con una base de datos de Microsfot Access. Ahora pulsa sobre el icono que pone "conectar con base de datos". En mi caso elijo origen de datos Archivo de datos de Microsoft Access y le doy a continuar, luego donde pide nombre del archivo de la base de datos pulso examinar y busco el archivo. Si tuviera nombre de usuario y contraseña hay que meterla, y luego pulsar probar conexión y comprobar que ponga "La conexión de prueba se realizó correctamente" y pulsar aceptar.
-
Hola ALEX. Haciendo como dices tengo que decirte que en Visual Studio 2010 que tengo en el menu VER y en OTRAS VENTANAS no sale ninguna opción que diga "Explorador de Bases de Datos.
de Hecho no sale nada que mencione Bases de Datos.
ya me diras si en este Visual Studio 2010 es otra opción.
Gracias
-
¿Qué versión de Visual Studio tienes?
-
La Versión es: 10.0.30319.1RTMRel
-
La Versión es: 10.0.30319.1RTMRel
He cambiado algun código y quitado el que daba error y ahora introduzco datos en el DataGrid, cierro la aplicación y la abro y todavia tengo los datos en la DataGrid pero si cierro Visual Studio ya no los tengo porque no los graba en la base de datos.
Aqui te dejo los códigos por si vieras algo que falte para grabarlos en la base de datos.
Un saludo, Ya me diras algo.
Imports System.Data.SqlClient
Publi.Class Form2
Dim row(4) As String
Private Property Queryable As String
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'Database2DataSet.BARCINO' Puede moverla o quitarla según sea necesario.
Me.BARCINOTableAdapter.Fill(Me.Database2DataSet.BARCINO)
Button2.Text = "Salir"
Button1.Text = "Guardar"
DataGridView1.ColumnCount = 4
DataGridView1.Columns(0).Name = "Fabricante"
DataGridView1.Columns(1).Name = "Modelo"
DataGridView1.Columns(2).Name = "Denominacion del Recambio"
DataGridView1.Columns(3).Name = "Referencia"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
Form1.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BARCINOBindingSource.AddNew()
BARCINOBindingSource.Current("fabricante") = TextBox4.Text
BARCINOBindingSource.Current("modelo") = TextBox3.Text
BARCINOBindingSource.Current("denominacion del recambio") = TextBox2.Text
BARCINOBindingSource.Current("referencia") = TextBox1.Text
TextBox4.Text = ""
TextBox3.Text = ""
TextBox2.Text = ""
TextBox1.Text = ""
Me.Validate()
BARCINOBindingSource.EndEdit()
BARCINOTableAdapter.Update(Database2DataSet.BARCINO)
End Sub
-
Si no te aparece la opción de otras ventanas - > Explorador de base de datos, he estado viendo que hay un atajo de teclado para que se muestre el explorador de bases de datos: Ctrl + Alt + S
Pulsa Ctrl + Alt + S (al mismo tiempo las teclas Ctrl, Alt y S para ver si se muestra el explorador de bases de datos.
-
Ok. Lo miraré cuando llegue a casa.