none
Problema al Guardar Datos en tiempo de Ejecucion datagridView hacia Tabla sql ;y como hacer un codigo consecutivo RRS feed

  • Pregunta

  • Bueno estado haciendo buscando guias y todo ya he logrado hacer el guardado el problema es que me guarda filas numas y no deberia

    La fila 2 y 3 por ejemplo se han generado y no debería pasar eso como solucionar eso.

    Por otro lado el CodigoMuestra lo ingreso la idea es que se genero solo consecutivo a los registros que yo haga como lograr eso? con ese formato dependiendo del codigo de la cadena.

    Saludos

    domingo, 11 de marzo de 2018 13:55

Respuestas

  • Ok ¿qué hace este código después del FOR ahí?  Porque uno de ellos es cmdp, que es el comando del bucle, que estará cargado con los datos del último registro.  Si la condición se cumple (la conexión está abierta), duplicará el último registro.

                    If cnx.State = ConnectionState.Open Then
                        cmda.ExecuteNonQuery()
                        cmdp.ExecuteNonQuery()
                    End If


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Javier Roque martes, 13 de marzo de 2018 13:30
    martes, 13 de marzo de 2018 4:30
    Moderador

Todas las respuestas

  • Imposible ayudarle sin saber qué codigo está utilizando para la creación de las filas.

    El consecutivo me es familiar.  Ya tuvimos una extensa charla acerca de él.  ¿Qué parte no le quedó claro?  Pensé que la generación del consecutivo ya estaba listo.


    Jose R. MCP
    Code Samples

    domingo, 11 de marzo de 2018 21:34
    Moderador
  • Disculpe no recuerdo que se haiga mencionado sobre el consecutivo lo otro dde como lleno esta asi. Parte del codigo pero la del datagrid es esta:

    ''DataGridView
                        Dim datosingresadosgrilla As New String(CType("Insert into DetalleCadena (CodigoCadena,CodigoMuestra,PuntoMuestreo,Localizacion,Ubicacion,FechaMuestra,HoraMuestra,TipoContenedor,Ncontenedor,Analisis1,Ma1,Pr1,Analisis2,Ma2,Pr2,Analisis3,Ma3,Pr3,Analisis4,Ma4,Pr4,Analisis5,Ma5,Pr5,Analisis6,Ma6,Pr6,Analisis7,Ma7,Pr7,Analisis8,Ma8,Pr8,Analisis9,Ma9,Pr9,Analisis10,Ma10,Pr10,Analisis11,Ma11,Pr11,Analisis12,Ma12,Pr12,Analisis13,Ma13,Pr13,Analisis14,Ma14,Pr14,Analisis15,Ma15,Pr15,Analisis16,Ma16,Pr16,Analisis17,Ma17,Pr17,Analisis18,Ma18,Pr18,Analisis19,Ma19,Pr19,Analisis20,Ma20,Pr20) values(@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20,@21,@22,@23,@24,@25,@26,@27,@28,@29,@30,@31,@32,@33,@34,@35,@36,@37,@38,@39,@40,@41,@42,@43,@44,@45,@46,@47,@48,@49,@50,@51,@52,@53,@54,@55,@56,@57,@58,@59,@60,@61,@62,@63,@64,@65,@66,@67,@68,@69)", Char()))
                        Dim cmdp As New SqlCommand(datosingresadosgrilla, cnx)
    
                        Dim fila As DataGridViewRow = New DataGridViewRow
    
                        For Each fila In dgvDetalle.Rows
                            cmdp.Parameters.Clear()
    
                            cmdp.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)
                            cmdp.Parameters.AddWithValue("@2", Convert.ToString(fila.Cells("CodigoMuestra").Value))
                            cmdp.Parameters.AddWithValue("@3", Convert.ToString(fila.Cells("PuntoMuestreo").Value))
                            cmdp.Parameters.AddWithValue("@4", Convert.ToString(fila.Cells("Localizado").Value))
                            cmdp.Parameters.AddWithValue("@5", Convert.ToString(fila.Cells("Ubicacion").Value))
                            cmdp.Parameters.AddWithValue("@6", Convert.ToString(fila.Cells("FechaMuestra").Value))
                            cmdp.Parameters.AddWithValue("@7", Convert.ToString(fila.Cells("HoraMuestra").Value))
                            cmdp.Parameters.AddWithValue("@8", Convert.ToString(fila.Cells("TipodeContenedor").Value))
                            cmdp.Parameters.AddWithValue("@9", Convert.ToString(fila.Cells("Ncontenedor").Value))
    
                            cmdp.Parameters.AddWithValue("@10", Convert.ToString(fila.Cells("Analisis1").Value))
                            cmdp.Parameters.AddWithValue("@11", Convert.ToString(fila.Cells("Ma_1").Value))
                            cmdp.Parameters.AddWithValue("@12", Convert.ToString(fila.Cells("Pr_1").Value))
                            cmdp.Parameters.AddWithValue("@13", Convert.ToString(fila.Cells("Analisis2").Value))
                            cmdp.Parameters.AddWithValue("@14", Convert.ToString(fila.Cells("Ma_2").Value))
                            cmdp.Parameters.AddWithValue("@15", Convert.ToString(fila.Cells("Pr_2").Value))
                            cmdp.Parameters.AddWithValue("@16", Convert.ToString(fila.Cells("Analisis3").Value))
                            cmdp.Parameters.AddWithValue("@17", Convert.ToString(fila.Cells("Ma_3").Value))
                            cmdp.Parameters.AddWithValue("@18", Convert.ToString(fila.Cells("Pr_3").Value))
                            cmdp.Parameters.AddWithValue("@19", Convert.ToString(fila.Cells("Analisis4").Value))
                            cmdp.Parameters.AddWithValue("@20", Convert.ToString(fila.Cells("Ma_4").Value))
                            cmdp.Parameters.AddWithValue("@21", Convert.ToString(fila.Cells("Pr_4").Value))
                            cmdp.Parameters.AddWithValue("@22", Convert.ToString(fila.Cells("Analisis5").Value))
                            cmdp.Parameters.AddWithValue("@23", Convert.ToString(fila.Cells("Ma_5").Value))
                            cmdp.Parameters.AddWithValue("@24", Convert.ToString(fila.Cells("Pr_5").Value))
                            cmdp.Parameters.AddWithValue("@25", Convert.ToString(fila.Cells("Analisis6").Value))
                            cmdp.Parameters.AddWithValue("@26", Convert.ToString(fila.Cells("Ma_6").Value))
                            cmdp.Parameters.AddWithValue("@27", Convert.ToString(fila.Cells("Pr_6").Value))
                            cmdp.Parameters.AddWithValue("@28", Convert.ToString(fila.Cells("Analisis7").Value))
                            cmdp.Parameters.AddWithValue("@29", Convert.ToString(fila.Cells("Ma_7").Value))
                            cmdp.Parameters.AddWithValue("@30", Convert.ToString(fila.Cells("Pr_7").Value))
                            cmdp.Parameters.AddWithValue("@31", Convert.ToString(fila.Cells("Analisis8").Value))
                            cmdp.Parameters.AddWithValue("@32", Convert.ToString(fila.Cells("Ma_8").Value))
                            cmdp.Parameters.AddWithValue("@33", Convert.ToString(fila.Cells("Pr_8").Value))
                            cmdp.Parameters.AddWithValue("@34", Convert.ToString(fila.Cells("Analisis9").Value))
                            cmdp.Parameters.AddWithValue("@35", Convert.ToString(fila.Cells("Ma_9").Value))
                            cmdp.Parameters.AddWithValue("@36", Convert.ToString(fila.Cells("Pr_9").Value))
                            cmdp.Parameters.AddWithValue("@37", Convert.ToString(fila.Cells("Analisis10").Value))
                            cmdp.Parameters.AddWithValue("@38", Convert.ToString(fila.Cells("Ma_10").Value))
                            cmdp.Parameters.AddWithValue("@39", Convert.ToString(fila.Cells("Pr_10").Value))
                            cmdp.Parameters.AddWithValue("@40", Convert.ToString(fila.Cells("Analisis11").Value))
                            cmdp.Parameters.AddWithValue("@41", Convert.ToString(fila.Cells("Ma_11").Value))
                            cmdp.Parameters.AddWithValue("@42", Convert.ToString(fila.Cells("Pr_11").Value))
                            cmdp.Parameters.AddWithValue("@43", Convert.ToString(fila.Cells("Analisis12").Value))
                            cmdp.Parameters.AddWithValue("@44", Convert.ToString(fila.Cells("Ma_12").Value))
                            cmdp.Parameters.AddWithValue("@45", Convert.ToString(fila.Cells("Pr_12").Value))
                            cmdp.Parameters.AddWithValue("@46", Convert.ToString(fila.Cells("Analisis13").Value))
                            cmdp.Parameters.AddWithValue("@47", Convert.ToString(fila.Cells("Ma_13").Value))
                            cmdp.Parameters.AddWithValue("@48", Convert.ToString(fila.Cells("Pr_13").Value))
                            cmdp.Parameters.AddWithValue("@49", Convert.ToString(fila.Cells("Analisis14").Value))
                            cmdp.Parameters.AddWithValue("@50", Convert.ToString(fila.Cells("Ma_14").Value))
                            cmdp.Parameters.AddWithValue("@51", Convert.ToString(fila.Cells("Pr_14").Value))
                            cmdp.Parameters.AddWithValue("@52", Convert.ToString(fila.Cells("Analisis15").Value))
                            cmdp.Parameters.AddWithValue("@53", Convert.ToString(fila.Cells("Ma_15").Value))
                            cmdp.Parameters.AddWithValue("@54", Convert.ToString(fila.Cells("Pr_15").Value))
                            cmdp.Parameters.AddWithValue("@55", Convert.ToString(fila.Cells("Analisis16").Value))
                            cmdp.Parameters.AddWithValue("@56", Convert.ToString(fila.Cells("Ma_16").Value))
                            cmdp.Parameters.AddWithValue("@57", Convert.ToString(fila.Cells("Pr_16").Value))
                            cmdp.Parameters.AddWithValue("@58", Convert.ToString(fila.Cells("Analisis17").Value))
                            cmdp.Parameters.AddWithValue("@59", Convert.ToString(fila.Cells("Ma_17").Value))
                            cmdp.Parameters.AddWithValue("@60", Convert.ToString(fila.Cells("Pr_17").Value))
                            cmdp.Parameters.AddWithValue("@61", Convert.ToString(fila.Cells("Analisis18").Value))
                            cmdp.Parameters.AddWithValue("@62", Convert.ToString(fila.Cells("Ma_18").Value))
                            cmdp.Parameters.AddWithValue("@63", Convert.ToString(fila.Cells("Pr_18").Value))
                            cmdp.Parameters.AddWithValue("@64", Convert.ToString(fila.Cells("Analisis19").Value))
                            cmdp.Parameters.AddWithValue("@65", Convert.ToString(fila.Cells("Ma_19").Value))
                            cmdp.Parameters.AddWithValue("@66", Convert.ToString(fila.Cells("Pr_19").Value))
                            cmdp.Parameters.AddWithValue("@67", Convert.ToString(fila.Cells("Analisis20").Value))
                            cmdp.Parameters.AddWithValue("@68", Convert.ToString(fila.Cells("Ma_20").Value))
                            cmdp.Parameters.AddWithValue("@69", Convert.ToString(fila.Cells("Pr_20").Value))
    
                            cmdp.ExecuteNonQuery()
                        Next

    lunes, 12 de marzo de 2018 0:31
  • Ese es código para guardar.  Imagino que también tiene código para insertar filas en la grilla.  Muéstrenos ese.

    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 1:25
    Moderador
  • ? insertar no es lo mismo alli dice  Insert Into yo ingreso filas no columnas ¿? la insercion la hace la cosa es porque crea 2 columnas vacias despues de insertar  ya sea 1 o mas filas al final agrega 2 mas
    lunes, 12 de marzo de 2018 1:54
  • Ok, es que una cosa es insertar en la base de datos, y otra cosa es insertar filas en la grilla.  Una cosa no conlleva a la otra.

    Ahora bien, cuénteme por qué tiene esta línea:

    Dim fila As DataGridViewRow = New DataGridViewRow

    ¿Por qué New DataGridViewRow?  Si lo que le interesa es iterar sobre las existentes, no debe crear una nueva.  ¿Este es todo el código?  ¿Y las filas en blanco se agregan después de que este código ejecuta?


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 3:46
    Moderador
  • Las filas en blanco se añaden luego de haber completado los registros requeridos; si se añaden luego de ese codigo el resto de codigo es de cabecera solo esa parte es detalle lo que es del datagridview

    el New DataGridViewRowlo uso para que me agregue la nueva fila que he creado digitando en el dgv pues sino uso eso no me registra nada en los detalles.

    lunes, 12 de marzo de 2018 4:17
  • Lo siento, pero es difícil ayudarle solamente viendo partes.  También sería muy dificil ayudarle si le pidiera que mostrara todo el código porque podría ser muy extenso.

    Lo que usted debe hacer para determinar en qué punto de su código la línea nueva aparece, es ejecutar su código paso a paso y determinar cuál línea de código está causando filas extra.  Puede monitorear Rows.Count paso a paso y ver cuándo el valor cambia, por ejemplo.  Una vez que determine la línea, muéstrenos el código alrededor de ésta y nos explica cuál es la intención del código.  Con lo que ha puesto no puedo identificar el problema.  Todo ese código es únicamente para ejecutar un SQL.

    Lo "malo" que veo allí solamente es:

    • El uso de CType escribiendo la consulta.  No programo en VB.net pero me atrevo a decir que si declara una variable tipo String, puede asignarla directamente.  Usar CType para convertirla a Char me parece fuera de lugar.
    • El New DataGridViewRow también está mal.  Debe ser Dim fila As DataGridViewRow.  De todas formas el nuevo objeto se pierde en cuanto ele bucle FOR inicia.
    • No necesita convertir los valores de los parámetros con Convert.ToString().  Los parámetros pueden construirse con valores tipo Object.  La conversión solamente impone ciclos innecesarios al procesador.  Tampoco es necesario borrarlos y crearlos en cada iteración.  Con cambiar su valor es suficiente.

    Aparte de eso, no veo nada más fuera de lugar.


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 4:53
    Moderador
  • Bueno respecto a esas filas que se añaden sucede en tiempo de ejecucion solo al escribir en la primera fila y columna cunaod solo ingreso algun texto automaticamente se crean abajo le muestro una imagen esto se da sin antes guardar. Quizas sea algo del datagrid

    Respecto a lo demas que menciona ya lo modificare y probare.

    De la guia de donde segui el del video dijo que pasaba eso pero que borrando las filas en modo de ejecucion se solucionaba pero me parece algo raro que tenga que hacer eso bueno en ese tabla el codigocadena  la visibilidad es false pero se llena con los codigodecadena entonces analizando algo de eso al digitar se crea una fila demas y al guardar a esa fila le guarda el codigo de cadena al haberle generado ese codigo de cadena se crea una fila mas eso es lo que parece, pero si no le registro el codigo como relaciono la cabecera con su detalle?

    cmdp.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)

    y por alli quizas sea la razon por la que esta generandose esas filas demas.

    Aqui le dejo el codigo extenso

    Private Sub Guardar_Click(sender As Object, e As EventArgs) Handles Guardar.Click
            If txtCodCadena.Text.Trim().Length = 0 Or
                cboSolicitante.Text.Trim().Length = 0 Or
                cboContacto.Text.Trim().Length = 0 Or
                cboPrograma.Text.Trim().Length = 0 Or
                cboDireccion.Text.Trim().Length = 0 Or
                txtMuestreador.Text.Trim().Length = 0 Or
                dtpFecha.Text.Trim().Length = 0 Then
                MsgBox("Complete los campos coloreados")
                ColorearVacios.ColorearTextBox(GroupBox1, Color.LightSalmon)
                ColorearVacios.ColorearTextBox(GroupBox3, Color.LightSalmon)
                Exit Sub
            End If
            Using cnx As New SqlConnection(ConfigurationManager.ConnectionStrings("cnxString").ToString())
                If contador_para_guardar = 1 Then
                    Try
                        cnx.Open()
                        Dim textosqIngresar As New String(CType("Insert into CabeceraCustodia (CodigoCadena,Solicitante,Contacto,Programa,Direccion,Distrito,Provincia,Departamento,Email,Telefono,Muestreado,FechaRegistro,Transportado,EmpresaTransportado,FirmaTransportado,FechaTransportado,HoraTransportado,Entregado,EmpresaEntregado,FirmaEntregado,FechaEntregado,HoraEntregado,Ingresado,EmpresaIngresado,FirmaIngresado,FechaIngresado,HoraIngresado,Recibido,EmpresaRecibido,FirmaRecibido,FechaRecibido,HoraRecibido,MuestraConservada,ObservRecepcion,ObservLaboratorio)values(@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20,@21,@22,@23,@24,@25,@26,@27,@28,@29,@30,@31,@32,@33,@34,@35)", Char()))
                        Dim cmda As New SqlCommand(textosqIngresar, cnx)
                        cmda.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)
                        cmda.Parameters.AddWithValue("@2", Me.cboSolicitante.Text)
                        cmda.Parameters.AddWithValue("@3", Me.cboContacto.Text)
                        cmda.Parameters.AddWithValue("@4", Me.cboPrograma.Text)
                        cmda.Parameters.AddWithValue("@5", Me.cboDireccion.Text)
                        cmda.Parameters.AddWithValue("@6", Me.cboDistrito.Text)
                        cmda.Parameters.AddWithValue("@7", Me.cboProvincia.Text)
                        cmda.Parameters.AddWithValue("@8", Me.cboDepartamento.Text)
                        cmda.Parameters.AddWithValue("@9", Me.cboEmail.Text)
                        cmda.Parameters.AddWithValue("@10", Me.cboTelefono.Text)
                        cmda.Parameters.AddWithValue("@11", Me.txtMuestreador.Text)
                        cmda.Parameters.AddWithValue("@12", Me.dtpFecha.Text)
                        cmda.Parameters.AddWithValue("@13", Me.cboTransporta.Text)
                        cmda.Parameters.AddWithValue("@14", Me.cboInsti1.Text)
                        cmda.Parameters.AddWithValue("@15", Me.F1.Checked)
                        cmda.Parameters.AddWithValue("@16", Me.Fecha1.Text)
                        cmda.Parameters.AddWithValue("@17", Me.Hora1.Text)
                        cmda.Parameters.AddWithValue("@18", Me.cboEntrega.Text)
                        cmda.Parameters.AddWithValue("@19", Me.cboInsti2.Text)
                        cmda.Parameters.AddWithValue("@20", Me.F2.Checked)
                        cmda.Parameters.AddWithValue("@21", Me.Fecha2.Text)
                        cmda.Parameters.AddWithValue("@22", Me.Hora2.Text)
                        cmda.Parameters.AddWithValue("@23", Me.cboIngreso.Text)
                        cmda.Parameters.AddWithValue("@24", Me.cboInsti3.Text)
                        cmda.Parameters.AddWithValue("@25", Me.F3.Checked)
                        cmda.Parameters.AddWithValue("@26", Me.Fecha3.Text)
                        cmda.Parameters.AddWithValue("@27", Me.Hora3.Text)
                        cmda.Parameters.AddWithValue("@28", Me.cboRecibe.Text)
                        cmda.Parameters.AddWithValue("@29", Me.cboInsti4.Text)
                        cmda.Parameters.AddWithValue("@30", Me.F4.Checked)
                        cmda.Parameters.AddWithValue("@31", Me.Fecha4.Text)
                        cmda.Parameters.AddWithValue("@32", Me.Hora4.Text)
                        cmda.Parameters.AddWithValue("@33", Me.txtMC.Text)
                        cmda.Parameters.AddWithValue("@34", Me.txtObsMuestra.Text)
                        cmda.Parameters.AddWithValue("@35", Me.txtObsLab.Text)
    
    
                        ''DataGridView
                        Dim datosingresadosgrilla As New String(CType("Insert into DetalleCadena (CodigoCadena,CodigoMuestra,PuntoMuestreo,Localizacion,Ubicacion,FechaMuestra,HoraMuestra,TipoContenedor,Ncontenedor,Analisis1,Ma1,Pr1,Analisis2,Ma2,Pr2,Analisis3,Ma3,Pr3,Analisis4,Ma4,Pr4,Analisis5,Ma5,Pr5,Analisis6,Ma6,Pr6,Analisis7,Ma7,Pr7,Analisis8,Ma8,Pr8,Analisis9,Ma9,Pr9,Analisis10,Ma10,Pr10,Analisis11,Ma11,Pr11,Analisis12,Ma12,Pr12,Analisis13,Ma13,Pr13,Analisis14,Ma14,Pr14,Analisis15,Ma15,Pr15,Analisis16,Ma16,Pr16,Analisis17,Ma17,Pr17,Analisis18,Ma18,Pr18,Analisis19,Ma19,Pr19,Analisis20,Ma20,Pr20) values(@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20,@21,@22,@23,@24,@25,@26,@27,@28,@29,@30,@31,@32,@33,@34,@35,@36,@37,@38,@39,@40,@41,@42,@43,@44,@45,@46,@47,@48,@49,@50,@51,@52,@53,@54,@55,@56,@57,@58,@59,@60,@61,@62,@63,@64,@65,@66,@67,@68,@69)", Char()))
                        Dim cmdp As New SqlCommand(datosingresadosgrilla, cnx)
    
                        Dim fila As DataGridViewRow = New DataGridViewRow()
    
                        For Each fila In dgvDetalle.Rows
                            cmdp.Parameters.Clear()
    
                            cmdp.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)
                            cmdp.Parameters.AddWithValue("@2", Convert.ToString(fila.Cells("CodigoMuestra").Value))
                            cmdp.Parameters.AddWithValue("@3", Convert.ToString(fila.Cells("PuntoMuestreo").Value))
                            cmdp.Parameters.AddWithValue("@4", Convert.ToString(fila.Cells("Localizado").Value))
                            cmdp.Parameters.AddWithValue("@5", Convert.ToString(fila.Cells("Ubicacion").Value))
                            cmdp.Parameters.AddWithValue("@6", Convert.ToString(fila.Cells("FechaMuestra").Value))
                            cmdp.Parameters.AddWithValue("@7", Convert.ToString(fila.Cells("HoraMuestra").Value))
                            cmdp.Parameters.AddWithValue("@8", Convert.ToString(fila.Cells("TipodeContenedor").Value))
                            cmdp.Parameters.AddWithValue("@9", Convert.ToString(fila.Cells("Ncontenedor").Value))
    
                            cmdp.Parameters.AddWithValue("@10", Convert.ToString(fila.Cells("Analisis1").Value))
                            cmdp.Parameters.AddWithValue("@11", Convert.ToString(fila.Cells("Ma_1").Value))
                            cmdp.Parameters.AddWithValue("@12", Convert.ToString(fila.Cells("Pr_1").Value))
                            cmdp.Parameters.AddWithValue("@13", Convert.ToString(fila.Cells("Analisis2").Value))
                            cmdp.Parameters.AddWithValue("@14", Convert.ToString(fila.Cells("Ma_2").Value))
                            cmdp.Parameters.AddWithValue("@15", Convert.ToString(fila.Cells("Pr_2").Value))
                            cmdp.Parameters.AddWithValue("@16", Convert.ToString(fila.Cells("Analisis3").Value))
                            cmdp.Parameters.AddWithValue("@17", Convert.ToString(fila.Cells("Ma_3").Value))
                            cmdp.Parameters.AddWithValue("@18", Convert.ToString(fila.Cells("Pr_3").Value))
                            cmdp.Parameters.AddWithValue("@19", Convert.ToString(fila.Cells("Analisis4").Value))
                            cmdp.Parameters.AddWithValue("@20", Convert.ToString(fila.Cells("Ma_4").Value))
                            cmdp.Parameters.AddWithValue("@21", Convert.ToString(fila.Cells("Pr_4").Value))
                            cmdp.Parameters.AddWithValue("@22", Convert.ToString(fila.Cells("Analisis5").Value))
                            cmdp.Parameters.AddWithValue("@23", Convert.ToString(fila.Cells("Ma_5").Value))
                            cmdp.Parameters.AddWithValue("@24", Convert.ToString(fila.Cells("Pr_5").Value))
                            cmdp.Parameters.AddWithValue("@25", Convert.ToString(fila.Cells("Analisis6").Value))
                            cmdp.Parameters.AddWithValue("@26", Convert.ToString(fila.Cells("Ma_6").Value))
                            cmdp.Parameters.AddWithValue("@27", Convert.ToString(fila.Cells("Pr_6").Value))
                            cmdp.Parameters.AddWithValue("@28", Convert.ToString(fila.Cells("Analisis7").Value))
                            cmdp.Parameters.AddWithValue("@29", Convert.ToString(fila.Cells("Ma_7").Value))
                            cmdp.Parameters.AddWithValue("@30", Convert.ToString(fila.Cells("Pr_7").Value))
                            cmdp.Parameters.AddWithValue("@31", Convert.ToString(fila.Cells("Analisis8").Value))
                            cmdp.Parameters.AddWithValue("@32", Convert.ToString(fila.Cells("Ma_8").Value))
                            cmdp.Parameters.AddWithValue("@33", Convert.ToString(fila.Cells("Pr_8").Value))
                            cmdp.Parameters.AddWithValue("@34", Convert.ToString(fila.Cells("Analisis9").Value))
                            cmdp.Parameters.AddWithValue("@35", Convert.ToString(fila.Cells("Ma_9").Value))
                            cmdp.Parameters.AddWithValue("@36", Convert.ToString(fila.Cells("Pr_9").Value))
                            cmdp.Parameters.AddWithValue("@37", Convert.ToString(fila.Cells("Analisis10").Value))
                            cmdp.Parameters.AddWithValue("@38", Convert.ToString(fila.Cells("Ma_10").Value))
                            cmdp.Parameters.AddWithValue("@39", Convert.ToString(fila.Cells("Pr_10").Value))
                            cmdp.Parameters.AddWithValue("@40", Convert.ToString(fila.Cells("Analisis11").Value))
                            cmdp.Parameters.AddWithValue("@41", Convert.ToString(fila.Cells("Ma_11").Value))
                            cmdp.Parameters.AddWithValue("@42", Convert.ToString(fila.Cells("Pr_11").Value))
                            cmdp.Parameters.AddWithValue("@43", Convert.ToString(fila.Cells("Analisis12").Value))
                            cmdp.Parameters.AddWithValue("@44", Convert.ToString(fila.Cells("Ma_12").Value))
                            cmdp.Parameters.AddWithValue("@45", Convert.ToString(fila.Cells("Pr_12").Value))
                            cmdp.Parameters.AddWithValue("@46", Convert.ToString(fila.Cells("Analisis13").Value))
                            cmdp.Parameters.AddWithValue("@47", Convert.ToString(fila.Cells("Ma_13").Value))
                            cmdp.Parameters.AddWithValue("@48", Convert.ToString(fila.Cells("Pr_13").Value))
                            cmdp.Parameters.AddWithValue("@49", Convert.ToString(fila.Cells("Analisis14").Value))
                            cmdp.Parameters.AddWithValue("@50", Convert.ToString(fila.Cells("Ma_14").Value))
                            cmdp.Parameters.AddWithValue("@51", Convert.ToString(fila.Cells("Pr_14").Value))
                            cmdp.Parameters.AddWithValue("@52", Convert.ToString(fila.Cells("Analisis15").Value))
                            cmdp.Parameters.AddWithValue("@53", Convert.ToString(fila.Cells("Ma_15").Value))
                            cmdp.Parameters.AddWithValue("@54", Convert.ToString(fila.Cells("Pr_15").Value))
                            cmdp.Parameters.AddWithValue("@55", Convert.ToString(fila.Cells("Analisis16").Value))
                            cmdp.Parameters.AddWithValue("@56", Convert.ToString(fila.Cells("Ma_16").Value))
                            cmdp.Parameters.AddWithValue("@57", Convert.ToString(fila.Cells("Pr_16").Value))
                            cmdp.Parameters.AddWithValue("@58", Convert.ToString(fila.Cells("Analisis17").Value))
                            cmdp.Parameters.AddWithValue("@59", Convert.ToString(fila.Cells("Ma_17").Value))
                            cmdp.Parameters.AddWithValue("@60", Convert.ToString(fila.Cells("Pr_17").Value))
                            cmdp.Parameters.AddWithValue("@61", Convert.ToString(fila.Cells("Analisis18").Value))
                            cmdp.Parameters.AddWithValue("@62", Convert.ToString(fila.Cells("Ma_18").Value))
                            cmdp.Parameters.AddWithValue("@63", Convert.ToString(fila.Cells("Pr_18").Value))
                            cmdp.Parameters.AddWithValue("@64", Convert.ToString(fila.Cells("Analisis19").Value))
                            cmdp.Parameters.AddWithValue("@65", Convert.ToString(fila.Cells("Ma_19").Value))
                            cmdp.Parameters.AddWithValue("@66", Convert.ToString(fila.Cells("Pr_19").Value))
                            cmdp.Parameters.AddWithValue("@67", Convert.ToString(fila.Cells("Analisis20").Value))
                            cmdp.Parameters.AddWithValue("@68", Convert.ToString(fila.Cells("Ma_20").Value))
                            cmdp.Parameters.AddWithValue("@69", Convert.ToString(fila.Cells("Pr_20").Value))
    
                            cmdp.ExecuteNonQuery()
                        Next
                        'MessageBox.Show("")
    
    
                    '/////*
    
                    If cnx.State = ConnectionState.Open Then
                        cmda.ExecuteNonQuery()
                        cmdp.ExecuteNonQuery()
                    End If
                    cnx.Close()
                    MsgBox("Datos Guardados Correctamente")
                    pre = 0
                    Desactivado()
                    contador_para_guardar = 0
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                End If
                If contador_para_guardar = 2 Then
                    Try
                        cnx.Open()
                        Dim textosqeditar As New String(CType("Update CabeceraCustodia$ set (CodigoCadena=@1,Solicitante=@2,Contacto=@3,Programa=@4,Direccion=@5,Distrito=@6,Provincia=@7,Departamento=@8,Email=@9,Telefono=@10,Muestreado=@11,FechaRegistro=@12,Transportado=@13,EmpresaTransportado=@14,FirmaTransportado=@15,FechaTransportado=@16,HoraTransportado=@17,Entregado=@18,EmpresaEntregado=@19,FirmaEntregado=@20,FechaEntregado=@21,HoraEntregado=@22,Ingresado=@23,EmpresaIngresado=@24,FirmaIngresado=@25,FechaIngresado=@26,HoraIngresado=@27,Recibido=@28,EmpresaRecibido=@29,FirmaRecibido=@30,FechaRecibido=@31,HoraRecibido=@32,MuestraConservada=@33,ObservRecepcion=@34,ObservLaboratorio=@35 where CodigoCadena =@1", Char()))
                        Dim cmda As New SqlCommand(textosqeditar, cnx)
                        cmda.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)
                        cmda.Parameters.AddWithValue("@2", Me.cboSolicitante.Text)
                        cmda.Parameters.AddWithValue("@3", Me.cboContacto.Text)
                        cmda.Parameters.AddWithValue("@4", Me.cboPrograma.Text)
                        cmda.Parameters.AddWithValue("@5", Me.cboDireccion.Text)
                        cmda.Parameters.AddWithValue("@6", Me.cboDistrito.Text)
                        cmda.Parameters.AddWithValue("@7", Me.cboProvincia.Text)
                        cmda.Parameters.AddWithValue("@8", Me.cboDepartamento.Text)
                        cmda.Parameters.AddWithValue("@9", Me.cboEmail.Text)
                        cmda.Parameters.AddWithValue("@10", Me.cboTelefono.Text)
                        cmda.Parameters.AddWithValue("@11", Me.txtMuestreador.Text)
                        cmda.Parameters.AddWithValue("@12", Me.dtpFecha.Text)
                        cmda.Parameters.AddWithValue("@13", Me.cboTransporta.Text)
                        cmda.Parameters.AddWithValue("@14", Me.cboInsti1.Text)
                        cmda.Parameters.AddWithValue("@15", Me.F1.Checked)
                        cmda.Parameters.AddWithValue("@16", Me.Fecha1.Text)
                        cmda.Parameters.AddWithValue("@17", Me.Hora1.Text)
                        cmda.Parameters.AddWithValue("@18", Me.cboEntrega.Text)
                        cmda.Parameters.AddWithValue("@19", Me.cboInsti2.Text)
                        cmda.Parameters.AddWithValue("@20", Me.F2.Checked)
                        cmda.Parameters.AddWithValue("@21", Me.Fecha2.Text)
                        cmda.Parameters.AddWithValue("@22", Me.Hora2.Text)
                        cmda.Parameters.AddWithValue("@23", Me.cboIngreso.Text)
                        cmda.Parameters.AddWithValue("@24", Me.cboInsti3.Text)
                        cmda.Parameters.AddWithValue("@25", Me.F3.Checked)
                        cmda.Parameters.AddWithValue("@26", Me.Fecha3.Text)
                        cmda.Parameters.AddWithValue("@27", Me.Hora3.Text)
                        cmda.Parameters.AddWithValue("@28", Me.cboRecibe.Text)
                        cmda.Parameters.AddWithValue("@29", Me.cboInsti4.Text)
                        cmda.Parameters.AddWithValue("@30", Me.F4.Checked)
                        cmda.Parameters.AddWithValue("@31", Me.Fecha4.Text)
                        cmda.Parameters.AddWithValue("@32", Me.Hora4.Text)
                        cmda.Parameters.AddWithValue("@33", Me.txtMC.Text)
                        cmda.Parameters.AddWithValue("@34", Me.txtObsMuestra.Text)
                        cmda.Parameters.AddWithValue("@35", Me.txtObsLab.Text)
    
                        If cnx.State = ConnectionState.Open Then
                            cmda.ExecuteNonQuery()
                        End If
                        cnx.Close()
                        MsgBox("Datos modificados Correctamente")
                        Desactivado()
                        contador_para_guardar = 0
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                End If
                Guardar.Enabled = False
                Nuevo.Enabled = True
                Editar.Enabled = True
                Eliminar.Enabled = False
                Call Limpiar()
                Desactivado()
            End Using
        End Sub

    Saludos


    lunes, 12 de marzo de 2018 13:59
  • Ok, según veo en la imagen, creo que no tiene problemas.  Si mal no recuerdo, la fila con * es la fila "fantasma" que el DGV muestra para que un usuario pueda agregar una nueva fila.  Esta vila aparece cuando AllowUsersToAddRows es true.  Si no desea este comportamiento, puede cambiar esa propiedad a false y proveerle al usuario una ruta alternativa para agregar filas.


    Jose R. MCP
    Code Samples


    lunes, 12 de marzo de 2018 18:10
    Moderador
  • Con respecto a proveerle  la usuario la ruta alternativa de agregar filas? como asi. Otro punto hay la posibilidad que yo le indique al dgv que voy a ingresar 5 filas y y 4 analisis (los analisis son columnas analisis,ma,pr lo ue serian 12 mas) hay esa posibilidad para que no se añadan mas filas?

    Respecto a AllowUsersToAddRows es false. me sale vacio sin posibilidad de agregar nada no queda de otro que este en true he alli eso de proveerle agregar x codigo se refiere no?


    lunes, 12 de marzo de 2018 19:03
  • Una ruta alternativa es proveer un botón para agregar una fila.  El código es dgv.Rows.Add(); si no está vinculado a datos.

    Si tiene AllowUsersToAddRows habilitado, el objeto row tendrá una propiedad que creo que se llama IsNewRow cuyo valor será true.  Cuando itere en un bucle sobre las filas, sáltese la nueva fila con un IF.

    For Each fila in dgvDetalls.Rows
        If (fila.IsNewRow) Then Continue 'En C# existe continue.  Supongo que en VB.Net también.
        ...
    Next


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 19:26
    Moderador
  • Salieron muchos errores de parametros usando eso.

    Alguna otra idea para que los usuarios pueda ingresar sus datos 20 columnas 20 filas pero no siempre son 20 aveces es menos solo es un limite maximo posible pues me esta generando problemas ellos no quieren registrar 1x1 osea fila x fila con textbox sino agregar todo de porrazo. 

    lunes, 12 de marzo de 2018 20:32
  • Usted puede, en tiempo de ejecución, modificar las columnas de la grilla a lo que le plazca, o puede tener la propiedad del DGV llamada AutoGenerateColumns en true.  Cuando esta propiedad está habilitada, la grilla determina las columnas automáticamente basándose en lo que diga lo que sea que usted asigne a su propiedad DataSource.

    Otra alternativa es tener 2 grillas en tiempo de diseño:  Una para cada tipo de detalle.  Luego simplemente oculta una grilla y muestra otra dependiendo del tipo de detalle que desea mostrar.


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 20:40
    Moderador
  • Salieron muchos errores de parametros usando eso.

    Si quiere que le ayude con esos errores, deberá mostrarlos e indicar la o las líneas de código que los generan.

    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 20:41
    Moderador
  • Salio error de parametro @1 @3 @13 y a lado decia el tipo de datos por lo tanto no los registra


    lunes, 12 de marzo de 2018 20:53
  • Salio error de parametro @1 @3 @13 y a lado decia el tipo de datos
    Es curioso porque AddWithValue() acepta objects como argumentos.  Cualquier cosa sirve.  Pero bueno, no soy partidario de usar AddWithValue() porque hace que se necesite determinar el tipo de datos del parámetro y esto a veces falla.  Lo mejor es Add("nombreDeParametro", SqlDbType.<tipo de datos SQL>).Value = <valor, no hay necesidad de convertir>.

    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 20:59
    Moderador
  • sera en el caso de datagridv porque de hacer insercion desde textbox siempre lo he trabajado asi y sin problemas pero eso solo pasa cuando uso 

     If (fila.IsNewRow) Then Continue For

    si lo quito todo ok pero sigue el problema de agregar filas extras.

    Respecto a convertir ya no estoy usando eso como mencionaste antes 

                        For Each fila In dgvDetalle.Rows
                            If (fila.IsNewRow) Then Continue For
                            cmdp.Parameters.Clear()
    
                            cmdp.Parameters.AddWithValue("@1", Me.txtCodCadena.Text)
                            cmdp.Parameters.AddWithValue("@2", fila.Cells("CodigoMuestra").Value)
                            cmdp.Parameters.AddWithValue("@3", fila.Cells("PuntoMuestreo").Value)
                            cmdp.Parameters.AddWithValue("@4", fila.Cells("Localizado").Value)
                            cmdp.Parameters.AddWithValue("@5", fila.Cells("Ubicacion").Value)
                            cmdp.Parameters.AddWithValue("@6", fila.Cells("FechaMuestra").Value)
                            cmdp.Parameters.AddWithValue("@7", fila.Cells("HoraMuestra").Value)
                            cmdp.Parameters.AddWithValue("@8", fila.Cells("TipodeContenedor").Value)
                            cmdp.Parameters.AddWithValue("@9", fila.Cells("Ncontenedor").Value)
    
                            cmdp.Parameters.AddWithValue("@10", fila.Cells("Analisis1").Value)
                            cmdp.Parameters.AddWithValue("@11", fila.Cells("Ma_1").Value)
                            cmdp.Parameters.AddWithValue("@12", fila.Cells("Pr_1").Value)

    lunes, 12 de marzo de 2018 21:13
  • Yo creo que algo puede tener que ver el CodigodeCadena ese se repite xk ese si es posible agregarse sin ingresarlo lo toma del textbox al tomar genera otra fila mas y se ponen 2 filas vacias hay alguna forma que no se agregue a la siguente  fila solo hasta que yo haya digitado algun valor en el dgv?
    lunes, 12 de marzo de 2018 21:30
  • Este es un ejemplo en la documentación oficial de Microsoft de DataGridViewRow.IsNewRow:

        For Each row As DataGridViewRow In dataGridView.Rows
            If row.IsNewRow Then Continue For
            row.HeaderCell.Value = "Row " & rowNumber
            rowNumber = rowNumber + 1
        Next

    Tal vez es los paréntesis que puse, no lo sé bien porque VB.net y yo no nos llevamos, jeje.  :-)  Pero como verá, es básicamente lo que yo le puse.  Esto es totalmente necesario si usará AllowUsersToAddRows en true.  Depure el bucle FOR y véalo por usted mismo.


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 21:32
    Moderador
  • No lo sé.  Es solamente un ejemplo que se ve aquí.  No es importante para su caso.  Lo que le quiero demostrar es la importancia de saltarse la fila que tenga IsNewRow en true.

    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 21:52
    Moderador
  • Ya he probado eso y nada el mismo error yo estoy seguro que el problema o pienso es eso lo general al agregarse el codigo de cadena x si solo y eso añade 2 filas mas
    lunes, 12 de marzo de 2018 21:57
  • ¿Dice usted que agregar el código produce 2 filas en blanco?  ¿Eso es 1 fila en blanco más la fila con asterisco, o eso es 2 filas en blanco más la fila con asterisco?  En las primeras imágenes veo 1 extra + *.

    ¿Tiene algo en algún evento como KeyPress que agregue una fila nueva al DGV, ya sea directamente al DGV o bien, si es que lo usa, Al DataSource?


    Jose R. MCP
    Code Samples

    lunes, 12 de marzo de 2018 22:06
    Moderador
  • el dgv esas columnas estan en modo diseño el codigocadena esta no visible asi que para vincular la cabecera al detalle lo tomo del textbox ese textbox siempre esta con el codigo no se borra hasta guardar asi que el resultado en la tabla en sql sale eso:

    Para el ejemplo porque da pereza solo estoy registrando una cadena observe la imagen se repite 2 vecs en cada 1  el caso del 010 bueno ese era solo para porbar algo no registrar muestras ni anilisis solo generar el codigo de cadena eso es un apartado despues que logre solucionar esto.

    Entonces si por digitar me añade la fila * y cuando la relleno me añade otra * entonces asumo que esta tomando al txtcocidocadena para llenar esa fila supuesta del  * al llenarse esa esta generando otra y x default me esta creando 2 filas supuestamente vacias supuestamente digo xk esta introduciendo el codigocadena pero yo no quiero pase eso asi que supongo x ese motivo esta dando problemas no tengo nada en keypress el el usuario solo rellena el consecutivo segun sus hojas fisicas y  se genera el 1803### por eso si en las imagenes superiores mostre que cuando inserto el codigomuestra genera una fila mas (*) ese codigo cadena se registra solo en el interno y genera otra mas que yo no veo

    como evitaria eso suceda?


    lunes, 12 de marzo de 2018 22:14
  • Ya me estoy rindiendo con esto.

    He agregado esto pero los errores parameters estan saliendo nuevamente hice esto para que quite la fila que se genera  deberia funcionar pero no com osale ese error no se

    For Each fila In dgvDetalle.Rows If fila.Index = dgvDetalle.Rows.Count - 1 Then Exit For End If cmdp.Parameters.Clear()

    .... 'Resto de codigo

    lo marcado en negrita entonces dame un ejemplo de como insertar los registros eso que mencionas del add() porque de verdad me esta generando problemas ahora aunque he leido que addwithvalue se usa en sql y add () en mysql

    lunes, 12 de marzo de 2018 22:27
  • Haciendo eso pero y dejandolo como antes ya no salen 2 filas vacias sino que me agrega 1 fila mas pero repetido los campos q registre si hago 2 registros siempre repite el ultimo que haya registrado y repite todos los campos-
    martes, 13 de marzo de 2018 4:21
  • Ok ¿qué hace este código después del FOR ahí?  Porque uno de ellos es cmdp, que es el comando del bucle, que estará cargado con los datos del último registro.  Si la condición se cumple (la conexión está abierta), duplicará el último registro.

                    If cnx.State = ConnectionState.Open Then
                        cmda.ExecuteNonQuery()
                        cmdp.ExecuteNonQuery()
                    End If


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Javier Roque martes, 13 de marzo de 2018 13:30
    martes, 13 de marzo de 2018 4:30
    Moderador
  • Ya me estoy rindiendo con esto.

    He agregado esto pero los errores parameters estan saliendo nuevamente hice esto para que quite la fila que se genera  deberia funcionar pero no com osale ese error no se

    For Each fila In dgvDetalle.Rows If fila.Index = dgvDetalle.Rows.Count - 1 Then Exit For End If cmdp.Parameters.Clear()

    .... 'Resto de codigo

    lo marcado en negrita entonces dame un ejemplo de como insertar los registros eso que mencionas del add() porque de verdad me esta generando problemas ahora aunque he leido que addwithvalue se usa en sql y add () en mysql

    No tiene sentido alguno que agregar un IF marque error de sintaxis donde no había.  Si así fuere, tal vez tiene usted algo malo por ahí.  Pero le repito que es fundamental NO ejecutar el bucle usando la fila en blanco.  Sea que use Index o IsNewRow, tiene que excluir la línea.

    Jose R. MCP
    Code Samples

    martes, 13 de marzo de 2018 4:31
    Moderador
  • Listo bueno aparte de todo no se repite era el excute volvi todo al convert porque sin eso salia el problema de parameters y bueno hice la prueba registre y todo ok ya no se repite y registra normal. por alli tengo un problema de fecha y hora que me olvido y lo ingreso sin - o / no hay forma de poner mask a esa celda asi como la hora __:__   Fecha __-__-__ 


    martes, 13 de marzo de 2018 13:17