Como enlazar FlexGrid con Rs

Chicho
13 de Noviembre del 2004
Wenas. Como hago para enlazar un MSFlexGrid con un Recordset, ya que al hacer Set MSFlexGrid.DataSource = Rs no me anda. Espero respuestas. Chao

Alex
13 de Noviembre del 2004
Te envio este código, este llena registros de una tabla de prosductos en un flexgrid, espero te sirva, porque a mi nadie me responde a mi problema.



Private Sub sConsultaProductos()
Dim sql As String
Dim s As String
MSFMarbetes.Clear
MSFMarbetes.Cols = 2
MSFMarbetes.Rows = 2
MSFMarbetes.RowSel = 1
MSFMarbetes.MousePointer = flexHourglass
If chkGraneles.Value = 1 Or chkIntermedios.Value = 1 Or chkProdTerm.Value = 1 Then
sql = "Select CveProducto, isnull(DescLarga,\'\') as DescLarga, isnull(UnidadMedida,\'\') as UnidadMedida, " _
& " (isnull(Costo,1)/isnull(LoteEstandar,1)) as CostoUnitario " _
& " From Productos " _
& " Where (TipoProducto = " & "\'" & TipoP1 & "\'" _
& " Or TipoProducto = " & "\'" & TipoP2 & "\'" _
& " Or TipoProducto = " & "\'" & TipoP3 & "\'" _
& " Or TipoProducto = " & "\'" & TipoP4 & "\')" _
& " AND(STATUSPROD = \'A\' OR STATUSPROD = \'S\') " _
& " AND CVEPRODUCTO > 16 "
ElseIf chkMateriales.Value = 1 Then
sql = " Select CveProducto, isnull(DescLarga,\'\') as DescLarga, isnull(UnidadMedida,\'\') as UnidadMedida, " _
& " (isnull(Costo,1)/isnull(LoteEstandar,1)) as CostoUnitario " _
& " From Productos " _
& " Where TipoProducto = \'T\' " _
& " AND (STATUSPROD = \'A\' OR STATUSPROD = \'S\') " _
& " AND (LoteEstandar <> 0 and Costo <> 0) " _
& " Union " _
& " Select CveProducto, isnull(DescLarga,\'\'), isnull(UnidadMedida,\'\'), " _
& " Costo as CostoUnitario " _
& " From Productos " _
& " Where TipoProducto = \'T\' " _
& " AND (STATUSPROD = \'A\' OR STATUSPROD = \'S\')" _
& " AND (Costo = 0 Or LoteEStandar = 0 ) " _
& " ORDER BY CveProducto "
ElseIf chkTodos = 1 Then
sql = " Select CveProducto, isnull(DescLarga,\'\') as DescLarga, isnull(UnidadMedida,\'\') as UnidadMedida, " _
& " (isnull(Costo,1)/isnull(LoteEstandar,1)) as CostoUnitario " _
& " From Productos " _
& " Where (STATUSPROD = \'A\' OR STATUSPROD = \'S\') " _
& " AND (LoteEstandar <> 0 and Costo <> 0) " _
& " AND CVEPRODUCTO > 16 " _
& " Union " _
& " Select CveProducto, isnull(DescLarga,\'\'), isnull(UnidadMedida,\'\'), " _
& " Costo as CostoUnitario" _
& " From Productos " _
& " Where (STATUSPROD = \'A\' OR STATUSPROD = \'S\')" _
& " AND (Costo = 0 Or LoteEstandar = 0 ) " _
& " AND CVEPRODUCTO > 16 " _
& " ORDER BY CveProducto "
End If
If sql = "" Then
MSFMarbetes.MousePointer = flexDefault
Exit Sub
End If
LLena_escenarios_grid_Productos sql, MSFMarbetes
If no_hay_registros = False Then
s = "|Clave |Descripción |Unidad |Costo Unitario"
MSFMarbetes.FormatString = s
MSFMarbetes.ColWidth(0) = 500
MSFMarbetes.ColWidth(1) = 800
MSFMarbetes.ColWidth(2) = 6000
MSFMarbetes.ColWidth(3) = 700
MSFMarbetes.ColWidth(4) = 1200
End If
MSFMarbetes.MousePointer = flexDefault
MSFMarbetes.Row = 1: MSFMarbetes.Col = 1
MSFMarbetes.ColSel = 1: MSFMarbetes.SetFocus
End Sub


P_objeto_grid.MousePointer = vbHourglass
On Error GoTo Error
Dim LR_recordset_consulta As New ADODB.RecordSet
\'Dim LI_contador As Integer
\'Dim LI_columnas_condicion As Integer
Dim LI_renglon As Integer
\'Dim LI_columna As Integer
Dim LI_renglones As Integer
\'Dim LS_temporal As String
\'Dim LI_apuntador_registro As Integer
\'Dim identifica As String
\'Dim cuenta_cbo As Long
Dim Vacio As Integer
Dim proceso_realizado As Boolean
Dim cuenta As Integer
Dim bandera_enable As Integer
\'Dim Respaldo As Integer
cuenta_cbo = 0
LR_recordset_consulta.Open (P_instruccion), CrdCconexion, adOpenStatic
If LR_recordset_consulta.EOF Then
MsgBox " No existen registros en la base de datos"
no_hay_registros = True
\'llena_archivo = False
Exit Sub
Vacio = 1
Else
proceso_realizado = True
no_hay_registros = False
LR_recordset_consulta.CacheSize = 5000
LR_recordset_consulta.MoveLast
cuenta = LR_recordset_consulta.RecordCount
bandera_enable = True
If LR_recordset_consulta.RecordCount <> 0 Then
LI_renglones = LR_recordset_consulta.RecordCount
P_objeto_grid.Rows = LI_renglones + 1
P_objeto_grid.Cols = 5
LR_recordset_consulta.MoveFirst
LI_renglon = 1
While Not LR_recordset_consulta.EOF
P_objeto_grid.Row = LI_renglon
P_objeto_grid.Col = 0
P_objeto_grid.Text = LI_renglon
P_objeto_grid.Col = 1
P_objeto_grid.Text = LR_recordset_consulta.Fields("CveProducto")
P_objeto_grid.CellAlignment = 6
P_objeto_grid.Col = 2
P_objeto_grid.Text = LR_recordset_consulta.Fields("DescLarga")
P_objeto_grid.Col = 3
P_objeto_grid.Text = LR_recordset_consulta.Fields("UnidadMedida")
P_objeto_grid.Col = 4
P_objeto_grid.Text = LR_recordset_consulta.Fields("CostoUnitario")
P_objeto_grid.CellAlignment = 6
P_objeto_grid.Text = FormatCurrency(P_objeto_grid.Text, 5, -1)
cuenta_cbo = cuenta_cbo + 1
LI_renglon = LI_renglon + 1
LR_recordset_consulta.MoveNext
Wend
P_objeto_grid.MousePointer = flexDefault
End If
LR_recordset_consulta.Close
\'Respaldo = cuenta_cbo
\'cuenta_cbo = cuenta_cbo + 1
End If
Vacio = 2
Exit Sub
Error:
If Err.Number = 3078 Then
MsgBox "La tabla a comparar no existe", vbCritical
bandera_enable = False
End If
End Sub


Alex
13 de Noviembre del 2004
Cuidado con las diagonales inventidas, eso no debe ir, solo que al pegar el texto, se incluyeron.