Traer datos de access a ubgrid y modificarlos

Tengo un pequeño problema con un grid llamado ubgrid, te platico un poco de mi situación.
Estoy continuando el trabajo de un programador, es una aplicación en vb6, básicamente es de captura de ventas de artículos, en un grid, la parte de la captura ya esta hecha se captura la información ahí (id producto, descripción, inventarios, precios y pedidos) y después se guarda en una tabla de access todo eso sin problemas, ahora me piden ami que esa información que se capturo, aparezca en el grid para poder revisar la captura y que si tienen errores se pueda modificar, soy nuevo programando ya que solo he leído libros básicos y ahora que se fue el programador me están dando la oportunidad.
1

1 respuesta

Respuesta
1
No conozco la grilla que mencionas, pero para llenarla debes hacer una consulta a la base de datso para traer los datos, la grilla debe tener una propiedad Datasource, allí le asignas el resultado de tu consulta a la base de datos y de esa manera la llenas.
Ya busque lo que me dices en el examinador de objetos pero al parecer no trae nada parecido, mira el grid de captura, hace una búsqueda para traer la descripción de un articulo a la columna 2 metiendo el id en la primera columna, te pego el código para ver si esto nos da una idea de como traer la información, de cualquier forma si no se puede, aconséjame alguna que pueda utilizar no importa que no use la misma
de igual manera anexo la dirección de donde baje la grid que ocupo
http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/154-ocx-ubgrid-grilla-editable.htm
de antemano gracias
Private Sub ubgrid4_AfterEdit(ByVal Row As Long, ByVal Col As Long, ByVal newValue As String)
Dim sql As String
Dim rst As Recordset
Dim i As Long
With Me.ubGrid4
If .Col + 1 <= .Cols Then
If .Col = 1 And .TextMatrix(.Row, .Col) = "" Then .RemoveItem (.Row): .Col = .Cols: .Row = .Rows
If .TextMatrix(.Row, .Col) = "" Then .TextMatrix(.Row, .Col) = 0
If .Col = 1 Then
For i = 1 To .Row - 1
If .TextMatrix(i, 1) = .TextMatrix(.Row, 1) Then
MsgBox "Este producto ya  fue agregado", vbExclamation, "Error"
.TextMatrix(.Row, 1) = ""
Exit Sub
End If
Next i
For i = .Row + 1 To .Rows
If .TextMatrix(i, 1) = .TextMatrix(.Row, 1) Then
MsgBox "Este producto ya  fue agregado", vbExclamation, "Error"
.TextMatrix(.Row, 1) = ""
Exit Sub
End If
Next i
.Col = .Col + 2
sql = "select producto from Productos where idproducto = " & .TextMatrix(.Row, 1) & " "
abre
Set rst = conexion.Execute(sql)
If Not rst.EOF Then
If Not IsNull(rst!Producto) Then .TextMatrix(.Row, 2) = rst!Producto
Else
MsgBox "Indique un ID de producto válido", vbExclamation, "Error"
.Col = 1
.TextMatrix(.Row, .Col) = ""
End If
cierra
Else
.Col = .Col + 1
End If
Else
If .TextMatrix(.Row, .Col) = "" Then .TextMatrix(.Row, .Col) = 0
.Rows = .Rows + 1
.Row = .Rows
.Col = 1
End If
If .Rows = 0 Then .Rows = 1
End With
End Sub
De acuerdo a la página es un MSFlexGrid entonces también de acuerdo al ejemplo que colocas lo que debes hacer para llenar la grilla es lo siguiente:
Recorres el recordset en donde tienes el resultado de la consulta a la base de datos, y vas llenando la grilla de esta manera:
 .TextMatrix(.Row, .Col) = Valor a asignar
Ok fíjate que ya logre hacer que se muestren resultados en el grid, solo que ahora no se como hacer para que me recorra, me podrás ayudar con algún código de ejemplo, ya que intente hacer uno pero no me quedo y no se que me falte
Dim sql As String
Dim rst As Recordset
Dim i As Long
With Me.GridEditor1
sql = "select distinct idproducto,precio from prodcap where farmacia= '" & Combo1.Text & "' and fecha = '" & DTPicker1.Value & "' order by idproducto"
abre
Set rst = conexion.Execute(sql)
If Not rst.EOF Then
rst.MoveFirst
For i = .Row + 1 To .Rows
.TextMatrix(.Row + 1, 1) = rst!idproducto
.TextMatrix(.Row + 1, 3) = rst!precio
Next i
End If
cierra
End With
¿Qué te recorra que cosa? ¿Qué quieres hacer?
Te explico el funcionamiento que se quiere tener, tengo un botón en el sisrtema que captura la venta de varios productosen un grid y lo guarda en una tabla en una base de datos, desde uno hasta 20, ahora me pidieron un botón que pueda traer esos registros que se capturaron y si es necesario se pueda modificar, lo había intentado con el código que te puse pero solo me traía el primer registro, por eso preguntaba como recorrer en la tabla para que me trajera todos los datos.
Me pude a picarle y a moverle y ya lo logre, ya traigo todos los registros que tengo capturados en la tabla al grid, uso dos combos para generar un filtro que sea por tienda y por fecha de captura y lo puse en un botos que dice consultar pego el código
con este código ya logre poner la información de mi tabla de captura en un grid ya se puede checar y se puede modificar.
Ahora ya me tope con otro problema, como actualizó la información, use una sentencia sql llamada update, pero si modifico un registro en la grid cuando guardo con el update, me modifica todos los datos de la columna
espero no te este confundiendo con todo lo que escribo y me puedas ayudar
de antemano gracias
Private Sub Command1_Click()
Dim sql As String
Dim rst As Recordset
Dim sql3 As String
Dim rst3 As Recordset
GridEditor1.Visible = True
With Me.GridEditor1
sql = "select idproducto,inventario,precio,pedido,negociacion,compromisos from prodcap where farmacia= '" & Combo1.Text & "' and fecha = '" & Combo2.Text & "' order by idproducto"
abre
Set rst = conexion.Execute(sql)
If Not rst.EOF Then
rst.MoveFirst
While Not rst.EOF
.TextMatrix(.Row, 1) = rst!idproducto
.TextMatrix(.Row, 3) = rst!inventario
.TextMatrix(.Row, 4) = rst!precio
.TextMatrix(.Row, 5) = rst!pedido
.TextMatrix(.Row, 6) = rst!negociacion
.TextMatrix(.Row, 7) = rst!compromisos
rst.MoveNext
.Rows = .Rows + 1
.Row = .Row + 1
Wend
End If
cierra
End With
End Sub
lo que pones no es el update es un select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas