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: titoct200 en 24 de Noviembre 2015, 23:02
-
Buenas noches.
A ver, yo estudié VB 6, y ahí era más fácil este tema. Yo tengo una BD access, y tengo un formulario donde hay un DGV conectado a una tabla, y aparte tengo unos TextBox, lógicamente con los NAMES cambiados, conectados tb la tabla.
En la parte superior me aparece el navegador de registros por defecto: con su selector, su adición, su borrado...
Mi problema es que cuando añado, modifico o borro registros, luego no graba a BD.
Tengo que decir que estoy con una BD de ACCESS. Este es mii código (tengo 3 tablas, pero sería similar):
Public Class FormPRO
Private Sub ProfesoresBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles ProfesoresBindingNavigatorSaveItem.Click
Me.Validate()
Me.ProfesoresBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.AcaInglesDataSet)
End Sub
Private Sub FormPRO_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'AcaInglesDataSet.Profesores' Puede moverla o quitarla según sea necesario.
Me.ProfesoresTableAdapter.Fill(Me.AcaInglesDataSet.Profesores)
EtqTitPro.Text = "Añadir " & vbCrLf & " Profesores"
End Sub
Private Sub TodoToolStripButton_Click(sender As System.Object, e As System.EventArgs)
Try
Me.ProfesoresTableAdapter.Todo(Me.AcaInglesDataSet.Profesores)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub SalirToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs)
Dim valor As Integer
valor = MsgBox("¿Cerrar Profesores?", vbYesNo, "Academia de Inglés")
If valor = 6 Then
End
Else
Me.Close()
End If
End Sub
Private Function CalcularGastos() As Double
Dim f As Integer
Dim total As Double = 0
For f = 0 To DGVProfesores.RowCount - 1 Step 1
total = total + Convert.ToDouble(DGVProfesores.Item(7, f).Value)
total = total + Convert.ToDouble(DGVProfesores.Item(8, f).Value)
total = total + Convert.ToDouble(DGVProfesores.Item(9, f).Value)
Next
Return total
End Function
Private Sub btnCerrar_Click(sender As System.Object, e As System.EventArgs) Handles btnCerrar.Click
FormPral.txtTGastos.Text = txtGastos.Text
Me.Close()
End Sub
Private Sub txtDNI_Leave(sender As System.Object, e As System.EventArgs) Handles txtDNI.Leave
If txtDNI.TextLength > 9 Then
MsgBox("No puede meter más de 9 caracteres", vbOKOnly, "Acaddemia de Inglés")
txtDNI.Text = ""
txtDNI.Focus()
End If
End Sub
Private Sub btnCalcGastos_Click(sender As System.Object, e As System.EventArgs) Handles btnCalcGastos.Click
txtGastos.Text = Convert.ToString(CalcularGastos())
FormPral.totalGastos = txtGastos.Text & " €"
End Sub
Private Sub txtTel_Leave(sender As System.Object, e As System.EventArgs) Handles txtTel.Leave
If txtTel.TextLength > 9 Then
MsgBox("No puede meter más de 9 caracteres", vbOKOnly, "Acaddemia de Inglés")
txtTel.Text = ""
txtTel.Focus()
End If
End Sub
Private Sub BindingNavigatorAddNewItem_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
txtId.Focus()
End Sub
End Class
He mirado un montón de ejemplos, pero todos utilizan conexiones por código. Yo soy una persona con problemas físicos y lo que me iteresa es ahorrarme código.No ostante, tb podría hacerme un módul BAS y hacer la conexión por código.
Muchas gracias
-
Hola titoct200, para pegar código en los foros por favor hazlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, si no lo haces así no queda bien formateado
Pienso que lo que se comenta en https://www.aprenderaprogramar.com/foros/index.php?topic=2980.0 te pueda servir de ayuda
También en este hilo se comenta https://www.aprenderaprogramar.com/foros/index.php?topic=1485.0
Salu2
-
Ahh, vale, con las etiquetas "code". De acuerdo. Perdóname.
Muchas racias, a ver si soluciono esto
-
Gracias por la respuesta, pero puede que no me haya explicado bien.
A ver, estoy hablando desde el modo DISEÑO (si no hay otra solución, veré la forma de implementar un módulo BAS para montar una conexion el plan text).. En el momento en que yo arrastro una tabla del dataset al form como DGV, se me crea abajo:
* AcaInglesDataSet
* ProfesoresBindingSource
* ProfesoresTableAdapter
* TableAdapterManager
* ProfesoresBindingNavigator
Al lado del DGV, arrastro la misma tabla del DGV, pero como DETALLES, con lo cual automáticamente me aparecen los TextBox (y sus etiquetas) conectados a sus respectivos campos en la BD access, textBox's a los que le cambio el nombre por cuestiones de comodidad.
Yo recuerdo que en Visual Basic 6, cuando se utilizaba un recordset (que ahí habían métodos como moveFirst, MoveLAST, etc.) se podía administrar la BD a través del objeto Recordset de ADO, y con esos métodos, yo me hacía mis propios botones, poniendo entonces la propiedad VISIBLE del control ADO a FALSE, con lo cual no se veía y quedaba la aplicación curiosita. ¿Esto mismo se puede hacer ahora con el 2010 o 2015?
Yo lo único quee quiero saber es si existe algún método, algún sistema, alguna arquitectura para conseguirlo. Muchas gracias
-
Buenas no entiendo bien por qué piensas que es necesario crear un módulo bas. En este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=2980.0 no se comenta nada de que sea necesario crear un módulo bas pero a lo mejor es que no estoy enteniendo bien
Salu2
-
Muchas gracias. De momento ya está solucionado.
Una pregunta: ¿Es posible ver el código de los botones de la barra superior que te inserta al añadir un origen de datos? Porque al darle doble click se crea otro evento click. El objetivo es personalizar esos botones: pa atrás, pa alante, primero, último, etc.
Saludos
-
Buenas si haces doble click sobre por ejemplo un DataGridView te inserta el código correspondiente al evento click:
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
End Sub
Al mismo tiempo en la parte superior de la ventana de código aparecen dos combobox desplegables, uno que pone DataGridView1 y otro que pone CellContentClick.
Si seleccionas en el combobox de eventos otro evento, te aparecerá el código para ese evento, por ejemplo si seleccionas CellEndEdit te aparecerá:
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
End Sub
Este código digamos que es el código marco para escribir un código de respuesta al evento seleccionado, en este caso sería para respuesta al evento CellEndEdit
Salu2