none
Control TDBGrid Agregar y eliminar filas y demas eventos? RRS feed

  • Pregunta

  • Buenos Dias

    Tengo ese control TDBGrid que no logro hacer que agrege o elimine filas, asi de simple, es en VB6, agradezco cualquier ayuda.

    Gracias

    PD

    No se encuentra mucho de este control por la web no?, a lo sumo pude crear una nueva columna a la izqueirda, pero eso no necesito ahroa


    Iparraguirre Meza Kenny

    lunes, 27 de enero de 2014 20:16

Todas las respuestas

  • El control TrueDbGrid  tiene la propiedad AllowAddNew que debe tener el valor True si quieres que el usuario pueda agregar registros desde el propio TrueDbGrid   y la propiedad AllowDelete que tendrá el valor True si el usuario puede eliminar filas.

    No se como estás utilizando este control, si lo enlazas a base de datos o si lo utilizas en unbound. Tampoco dices que versión es la que usas.


    Saludos, Javier J

    martes, 28 de enero de 2014 8:04
  • Es al versión 7 del control, desconozco si hay otra forma de trabajarlo que no sea enlazarlo a un origen de datos.

    Con lo de agregar me referia a pasar de un textbox, un combo a filas de TDBGrid, despues de hacer click en un boton.

    Como era para ayer tuve que hacer lo siguiente, claro no es la mejor forma, si pudieras decirme como acortar este codigo, te agradeceria mucho.

    Function fn_AgregarDatos()
        
        Set rst = New ADODB.Recordset
        rst.CursorType = adOpenKeyset
        rst.LockType = adLockBatchOptimistic
        rst.CursorLocation = adUseClient    
    
        Dim xNumero As String
        Dim xCodigo As String
        Dim xProducto As String
        Dim xCantidad As String
        Dim i As Integer
        
        rst.Fields.Append "Numero", adBSTR, 10, adFldUpdatable
        rst.Fields.Append "Codigo", adBSTR, 10, adFldUpdatable
        rst.Fields.Append "Producto", adBSTR, 50, adFldUpdatable
        rst.Fields.Append "Cantidad", adBSTR, 10, adFldUpdatable
            
        If (dtpReceta.ApproxCount = 0) Then
            rst.Open
            rst.AddNew
            rst.Fields("Numero").Value = ""
            rst.Fields("Codigo").Value = txtCodigoProductoAlmacen.Text
            rst.Fields("Producto").Value = cboProductoAlmacen.Text
            rst.Fields("Cantidad").Value = txtCantidad.Text
            rst.MoveFirst
            
            Set dtpReceta.DataSource = rst
        Else
            rst.Open
            
            For i = 1 To dtpReceta.ApproxCount
    
                xNumero = Trim(dtpReceta.Columns(0))
                xCodigo = Trim(dtpReceta.Columns(1))
                xProducto = Trim(dtpReceta.Columns(2))
                xCantidad = Trim(dtpReceta.Columns(3))
                
                rst.AddNew
                rst.Fields("Numero").Value = xNumero
                rst.Fields("Codigo").Value = xCodigo
                rst.Fields("Producto").Value = xProducto
                rst.Fields("Cantidad").Value = xCantidad
                rst.Update
            
                dtpReceta.MoveNext
                
            Next
            
            rst.AddNew
            rst.Fields("Numero").Value = Trim("")
            rst.Fields("Codigo").Value = Trim(txtCodigoProductoAlmacen.Text)
            rst.Fields("Producto").Value = Trim(cboProductoAlmacen.Text)
            rst.Fields("Cantidad").Value = Trim(txtCantidad.Text)
            rst.Update
                
            Set dtpReceta.DataSource = Nothing
            Set dtpReceta.DataSource = rst
            rst.MoveFirst
        End If
        
        CmdGenerar.Enabled = True
    End Function

    Y este es el de Eliminar

    Function fn_EliminarDatos()
        Dim xPosicion As String
        Dim i As Integer
        Dim xNumero As String
        Dim xCodigo As String
        Dim xProducto As String
        Dim xCantidad As String
        
        Set rstVacio = New ADODB.Recordset
        rstVacio.CursorType = adOpenKeyset
        rstVacio.LockType = adLockBatchOptimistic
        rstVacio.CursorLocation = adUseClient
        
        rstVacio.Fields.Append "Numero", adBSTR, 10, adFldUpdatable
        rstVacio.Fields.Append "Codigo", adBSTR, 10, adFldUpdatable
        rstVacio.Fields.Append "Producto", adBSTR, 50, adFldUpdatable
        rstVacio.Fields.Append "Cantidad", adBSTR, 10, adFldUpdatable
        rstVacio.Open
           
        If (dtpReceta.ApproxCount >= 1) Then
            xPosicion = Trim(dtpReceta.Columns(1))
            dtpReceta.MoveFirst
            For i = 1 To dtpReceta.ApproxCount
                xNumero = Trim(dtpReceta.Columns(0))
                xCodigo = Trim(dtpReceta.Columns(1))
                xProducto = Trim(dtpReceta.Columns(2))
                xCantidad = Trim(dtpReceta.Columns(3))
                
                If (xCodigo = xPosicion) Then
                    dtpReceta.MoveNext
                Else
                    rstVacio.AddNew
                    rstVacio.Fields("Numero").Value = xNumero
                    rstVacio.Fields("Codigo").Value = xCodigo
                    rstVacio.Fields("Producto").Value = xProducto
                    rstVacio.Fields("Cantidad").Value = xCantidad
                    rstVacio.Update
                    
                    dtpReceta.MoveNext
                End If
            Next
            Set dtpReceta.DataSource = Nothing
            Set dtpReceta.DataSource = rstVacio
        Else
            MsgBox "No hay filas que eliminar", vbCritical, "Mantenimiento Receta"
        End If
    End Function

    Cualquier cosa me comentas

    Gracias


    Iparraguirre Meza Kenny

    martes, 28 de enero de 2014 14:23