tengo dos datagridview cunado seleccione una linea del data grid se debe actualizar el otro datagridview, el asunto es que se muetra peor no muestra la data correcta
y ademas se va agregando el mismo registro
este es el codigo:
Código:
este es el formularioImports System.Configuration Imports System.Data Imports System.Data.SqlClient Imports System.IO Public Class Registro Dim nCnxRRHH As New SqlClient.SqlConnection("server=SRVDC01;database=RRHH;integrated security =FALSE;User ID=sa;Password=Chosica;") Dim dsBasedatos As New DataSet Dim cIdTrabajador As String = "" Dim cIddestaque As String = "" Dim nIdFicha As Integer Dim daAntecedentesPersonales As New SqlDataAdapter Private dtFicha As DataTable = dsBasedatos.Tables("Ficha_Medica") Private daFichas As New SqlDataAdapter Private drFila As DataRow Private cModulo As String Dim nContador As Integer Public cCmd As New SqlCommand Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim cSql1 As String Dim cSql2 As String Dim cSql3 As String Dim cSql4 As String Dim cSql5 As String cSql1 = " Select distinct nombre , s.Abreviada as Tipo_Documento , substring(t.idtrabajador,3,16) as Numero_Documento, t.idtrabajador ,d.Iddestaque" cSql2 = " from pL_Trabajadores T" cSql3 = " right join pl_destaques d on d.idtrabajador = t.idTrabajador" cSql4 = " left join pl_sunat S on s.idTabla = '003' and s.codigo =left(t.idtrabajador,2)" cSql5 = " where d.fechacese is null " Dim daTrabajadores As New SqlDataAdapter(cSql1 & cSql2 & cSql3 & cSql4 & cSql5, nCnxRRHH) daTrabajadores.Fill(dsBasedatos, "Trabajadores") ' nCnxRRHH.Close() dgvTrabajadores.DataSource = dsBasedatos.Tables("Trabajadores") ' dgvTrabajadores.DataMember = "Trabajadores" ' Formato_Trabajadores() End Sub Sub Formato_Trabajadores() With dgvTrabajadores ' .RowsDefaultCellStyle.BackColor = Color.White ' .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue ' Color.Coral 'Color.AliceBlue .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(0).Width = 260 ' nombre .Columns(1).Width = 60 ' Documento .Columns(2).Width = 70 ' Numero .Columns(0).HeaderText = "Apellidos y Nombre" .Columns(1).HeaderText = "Documento" .Columns(2).HeaderText = "Numero" End With End Sub Sub Formato_Fichas() With dgvFichas ' .RowsDefaultCellStyle.BackColor = Color.White ' .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue ' Color.Coral 'Color.AliceBlue .Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns(0).Width = 50 ' nombre .Columns(1).Width = 147 ' Documento .Columns(2).Width = 70 ' Numero .Columns(0).HeaderText = "Ficha" .Columns(1).HeaderText = "Evaluacion" .Columns(2).HeaderText = "Fecha" End With End Sub Private Sub dgvTrabajadores_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvTrabajadores.CellContentDoubleClick 'Val Para la edicion With dgvTrabajadores.CurrentRow cIdTrabajador = .Cells("idTrabajador").Value ' If IsDBNull(.Cells("idDestaque").Value) Then frmRegistro.txtIddestaque.Text = "" Else frmRegistro.txtIddestaque.Text = .Cells("iddestaque").Value End With End Sub Private Sub PictureBox2_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseHover Me.PictureBox2.Location = New Point(313, 20) Me.PictureBox2.Size = New Size(520, 582) End Sub Private Sub PictureBox2_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox2.MouseLeave Me.PictureBox2.Location = New Point(549, 20) Me.PictureBox2.Size = New Size(284, 313) End Sub Private Sub Lista_Fichas() Dim cSql1 As String Dim cSql2 As String Dim cSql3 As String Dim cSql4 As String Dim cSql5 As String Dim cIdtrabajador As String Dim nFilas As Integer 'Dim dtFicha As DataTable = dsBasedatos.Tables("Ficha_Medica") Try ' Set up structured error handling. cIdtrabajador = dsBasedatos.Tables("Trabajadores").Rows(dgvTrabajadores.CurrentCell.RowIndex).Item("IDtrabajador").ToString.Trim Catch ex As Exception ' Catch the error. ' Beep() cIdtrabajador = "" MsgBox(ex.Message) ' aca sale el error "Referencia a objeto no establecida como instancia de un objeto" Finally Beep() ' This line is executed no matter what. End Try If dsBasedatos.Tables.CanRemove(dtFicha) Then dsBasedatos.Tables.Remove(dtFicha) End If ' carga la foto If File.Exists("R:\fotos\" & cIdtrabajador.Trim & ".jpg") Then PictureBox2.Image = System.Drawing.Image.FromFile("R:\fotos\" & cIdtrabajador.Trim & ".jpg") Else End If PictureBox2.Show() If Len(cIdtrabajador) > 0 Then cSql1 = " SELECT idficha,TE.NOMBRE,FECHA " cSql2 = " FROM FICHA_MEDICA F " cSql3 = " LEFT JOIN SYS_DETALLEgENERAL TE ON TE.IDITEM = F.TIPO_EVALUACION AND IDGENERAL = '401' " cSql4 = " where f.idtrabajador = '" & cIdtrabajador & "'" cSql5 = " Order by Fecha DESC " cCmd = New SqlCommand(cSql1 & cSql2 & cSql3 & cSql4 & cSql5, nCnxRRHH) daFichas = New SqlDataAdapter '(cSql1 & cSql2 & cSql3 & cSql4 & cSql5, nCnxRRHH) daFichas.SelectCommand = cCmd 'Dim cbComando As New SqlCommandBuilder(daFichas) daFichas.Fill(dsBasedatos, "Ficha_Medica") ' nCnxRRHH.Close() dgvFichas.DataSource = dsBasedatos.Tables("Ficha_Medica") Formato_Fichas() 'nFilas = dgvFichas.GetCellCount(DataGridViewElementStates.Selected) nFilas = dgvFichas.Rows.Count() Else nFilas = 0 End If If nFilas > 0 Then With dgvFichas.CurrentRow 'nIdFicha = .Cells("idfICHA").Value ' If IsDBNull(.Cells("ficha").Value) Then nidFicha = 0 Else nidFicha = .Cells("idficha").Value ' If IsDBNull(.Cells("idFicha").Value) Then lblidficha.Text = "" Else lblidficha.Text = .Cells("idFicha").Value End With Botones(True) 'Me.ToolNuevo.Enabled = True Else nIdFicha = 0 lblidficha.Text = Str(nIdFicha) Botones(True) End If End Sub Sub Botones(ByVal lAccion As Boolean) Me.ToolNuevo.Enabled = lAccion Me.ToolEditar.Enabled = lAccion Me.ToolEditar.Visible = lAccion Me.ToolGrabar.Enabled = Not lAccion Me.ToolGrabar.Visible = Not lAccion Me.ToolEliminar.Enabled = Not lAccion End Sub Private Sub dgvTrabajadores_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgvTrabajadores.CurrentCellChanged Lista_Fichas() End Sub Private Sub ToolNuevo_Click(sender As System.Object, e As System.EventArgs) Handles ToolNuevo.Click cModulo = "Nuevo" With dgvTrabajadores.CurrentRow cIdTrabajador = .Cells("idTrabajador").Value End With Me.txtDocumento.Text = Mid(cIdTrabajador, 1, 2) & "-" & Mid(cIdTrabajador, 3, 16) ' Inserta_Nueva() ' Cargar_Datos() Botones(True) End Sub Private Sub ToolSalir_Click(sender As System.Object, e As System.EventArgs) Handles ToolSalir.Click Close() Salud.barras(True) End Sub Private Sub ToolEditar_Click(sender As System.Object, e As System.EventArgs) Handles ToolEditar.Click cModulo = "Editar" ' nIdFicha = dsBasedatos.Tables("FICHA_MEDICA").Rows(0).Item(1) With dgvFichas.CurrentRow nIdFicha = .Cells("idfICHA").Value lblidficha.Text = .Cells("idFicha").Value.ToString.Trim ' If IsDBNull(.Cells("idDestaque").Value) Then frmRegistro.txtIddestaque.Text = "" Else frmRegistro.txtIddestaque.Text = .Cells("iddestaque").Value End With With dgvTrabajadores.CurrentRow cIdTrabajador = .Cells("idTrabajador").Value cIddestaque = .Cells("idDestaque").Value End With Botones(False) Cargar_Datos() End Sub