Buenas a todos, os pongo en situación, estoy realizando una aplicación en visual.net con una bases de datos de Access. (Utilizo visual studio 2010).
Tengo un datagridview llamada “datos” con los siguientes campos de una tabla (nombre, apellidos, un checkbox y comentarios). Nombre y apellidos tienen datos escritos pero el checkbox esta desmarcado y comentarios esta vacío.
Cuando selecciono en el checkbox del datagridview se me abre otro form que solo tiene un textbox y un botón aceptar. Lo que quiero hacer es que cuando haya escrito algo en el textbox y pulse el botón aceptar este me guarde en la tabla “datos” en el campo “Cometarios” lo que este escrito en el textbox y este me actualice el datagrid para que me salga el comentario en el.
El problema que tengo es que no sé cómo hacer para que me guarde en un solo campo de esa tabla lo escrito en el textbox y lo que considero mas complicado es que sepa en qué línea de la tabla tiene que guardarlo. Pongo un ejemplo de la tabla:
Así sería la tabla cuando la muestro en el datagridview
Nombre Apellidos checbox comentario
Javier lopez no seleccionado
Alberto martinez no seleccionado
Manuel fernandez no seleccionado
Así se tendría que ver, una vez he introducido el comentario en el textbox y se pulso el botón aceptar para introducir los datos en la base de datos y actualice el datagridview
Nombre Apellidos checbox comentario
Javier lopez no seleccionado
Alberto martinez seleccionado hemos hablado con el
Manuel fernandez no seleccionado
Lo difícil para mí es saber que tiene que introducir el comentario en la línea de Alberto Martínez en el campo comentario.
Os pongo un poco del código:
Este es el formulario donde se muestra el datagridview
Imports System.Data.OleDb
Public Class FrmSencuestas
Private Sub FrmSencuestas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.LstVendedor.Items.Add("Ángel Santos")
Me.LstVendedor.Items.Add("Antonio Codesido")
Me.LstVendedor.Items.Add("Cesar López")
Me.LstVendedor.Items.Add("Federico Reigosa")
Me.DataGridView1.Visible = False
End Sub
Private Sub LstVendedor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LstVendedor.SelectedIndexChanged
DataGridView1.Rows.Clear()
conectarBD()
Dim SQLCargar As String
SQLCargar = "SELECT * FROM DatosSencuestas WHERE Vendedor LIKE '%" & LstVendedor.Text & "%' ORDER BY FechaVenta"
Dim da As New OleDb.OleDbDataAdapter(SQLCargar, conexion)
Dim ds As New Data.DataSet
Dim i As Integer
da.Fill(ds, "DatosSencuestas")
For i = 0 To ds.Tables("DatosSencuestas").Rows.Count - 1
DataGridView1.Rows.Add(ds.Tables("DatosSencuestas" ).Rows(i).Item(0).ToString, ds.Tables("DatosSencuestas").Rows(i).Item(1).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(2).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(3).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(4).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(6).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(7).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(8).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(9).ToStr ing, ds.Tables("DatosSencuestas").Rows(i).Item(10).ToSt ring)
If Me.DataGridView1.Rows(i).Cells("Contactado").Value = True Then 'Compueba que el checkbox de cada celda esta activado o no
Me.DataGridView1.Rows(i).Cells("contactado").ReadO nly = True 'Activa la propiedad de solo lectura para que no pueda ser modificado
End If
DataGridView1.Refresh()
Next
conexion.Close()
With Me.DataGridView1
.ColumnHeadersDefaultCellStyle.BackColor = Color.CornflowerBlue
.ColumnHeadersDefaultCellStyle.ForeColor = Color.White
.RowHeadersDefaultCellStyle.BackColor = Color.LightGray
.Columns(0).Width = "100"
.Columns(1).Width = "170"
.Columns(2).Width = "180"
.GridColor = Color.Orange
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
.AlternatingRowsDefaultCellStyle.BackColor = Color.Moccasin 'muestra otro color de fondo en las filas impares
.Columns("Nombre").ReadOnly = True
.Columns("Apellidos").ReadOnly = True
.Columns("Comentarios").ReadOnly = True
.Visible = True
End With
End Sub
Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
If Me.DataGridView1.Rows(e.RowIndex).Cells("Contactad o").Value = True Then 'Devuelve un mensaje cuando el checkbox ya esta seleccionado
MessageBox.Show("Ya has contactado con el cliente")
dato = Me.DataGridView1.Rows(e.RowIndex).Cells("Comentari os").RowIndex
Else
Dim myFrmComentariosSencuestas As New FrmComentariosSencuestas
myFrmComentariosSencuestas.ShowDialog()
End If
End Sub
End Class
Y este es el formulario donde introduzco el comentario
Imports System.Data.OleDb
Public Class FrmComentariosSencuestas
Private Sub FrmComentariosSencuestas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub BtnAcomentario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAcomentario.Click
If TxtComentarios.Text = "" Then
MessageBox.Show("Escribe un comentario")
Else
conectarBD()
'a partir de aqui no se como hacerlo
'me da error en la secuencia SQL no debe estar bien hecha
Dim SQLguardar As String
SQLguardar = "UPDATE DatosSencuestas SET '%" & TxtComentarios.Text & "%' WHERE Comentarios"
Dim oComando As New OleDbCommand(SQLguardar, conexion)
oComando.ExecuteNonQuery()
conexion.Close()
Me.Close()
MessageBox.Show("Comentario guardado en el seguimiento")
End If
End Sub
End Class
Espero que me haya explicado bien y me podáis ayudar. Un saludo y gracias.