En este articulo le explicare como se hace el procedimiento en Firebird que liste unos registros y Luego como se Llena un MSHFlexGrid en Visual Basic 6
Lo primero es Crear el Procedimiento en Mi caso lo voy a llamar PROC_LISTAS_CLIENTES.
Colabora y Suscribete a mi canal de
Este procedimiento no tienes variables de Entrada, solo de salida porque lo que quiero simplemente es listar los registros de la tabla.
Parámetros de Salida:
ID => Interger
Nombres => VarChar(50)
El código del procedimiento:
BEGIN /* Procedure body */ FOR SELECT USUARIO_ID, NOMBRE FROM USUARIO into :ID, :NOMBRE do BEGIN SUSPEND; END END
Para listar se utiliza la palabra FOR luego la consulta que queremos hacer, después del FROM Usuario especificamos los parámetros de salida después de la palabra Into separados por , y antes de cada parámetro se colocan dos punto (:) lo que le dice a Firebird que es una variable.
Aclarando se nota que el select llama a 2 campos de la misma manera el Into lleva 2 parámetros que contendrán los datos de esos campos en el mismo orden.
Código completo del procedimiento:
CREATE PROCEDURE PROC_LISTAS_CLIENTES RETURNS( ID INTEGER, NOMBRE VARCHAR(50)) AS BEGIN /* Procedure body */ FOR SELECT USUARIO_ID, NOMBRE FROM USUARIO into :ID, :NOMBRE do BEGIN SUSPEND; END END^
En la aplicación de Visual Basic para llamar al procedimiento se hace usando una consulta sql:
sql = "SELECT * FROM PROC_LISTAS_CLIENTES"
Se utiliza SELECT para que pueda devolver la lista de registros, si utilizas execute procedure no va a devolver nada.
El procedimiento para listar completo seria el siguiente:
Sub LlenarGridClientes() Dim RecordClientes As New ADODB.Recordset Dim Columnas As Integer Dim sql As String sql = "SELECT * FROM PROC_LISTAS_CLIENTES" Columnas = 2 Call LlenarGrid(msGrid, sql, Columnas) msGrid.ColWidth(0) = 0 msGrid.ColWidth(1) = 1100 msGrid.ColWidth(2) = 3500 msGrid.TextMatrix(0, 1) = "ID" msGrid.TextMatrix(0, 2) = "Nombres" End Sub
Este código te resultara familiar si has visto el Introducción al Curso de Creación de Software de Ventas si no tiene el código de llenarGrid te lo comparto:
Sub LlenarGrid(Grid As MSHFlexGrid, sql As String, TotalColum As Integer) Dim RecorsetTemp As New ADODB.Recordset RecorsetTemp.Open sql, ConexionADO, adOpenStatic, adLockReadOnly Grid.Redraw = False 'desactivamos el repintado en pantalla Grid.FixedRows = 0 Grid.Rows = 0 Grid.DataMember = RecorsetTemp.DataMember Set Grid.DataSource = RecorsetTemp.DataSource 'vinculamos con el recorset Grid.AddItem "", 0 'se agrega una fila al grid If Grid.Row > 1 Then Grid.FixedRows = 1 'si hay mas de un registro se habilita el titulo 'recorre las celdas del titulo del grid y le da color For I = 1 To TotalColum Grid.Row = 0 Grid.Col = I 'va recorriendo las celdas de la primera fila Grid.CellBackColor = &H8C5828 'color azul para el fondo Grid.CellAlignment = flexAlignCenterCenter 'texto centrado Grid.CellForeColor = vbWhite 'color blanco para el texto Grid.CellFontBold = True 'Negrita Next I 'este recorrido es para colorear filas pares en el grid para darle una mejor vista al usuario For fila = 1 To Grid.Rows - 1 Grid.Row = fila If fila Mod 2 = 0 Then 'si la fila tiene como modulo 2 entonces es un numero par For I = 1 To TotalColum Grid.Col = I Grid.CellBackColor = &HFEEEDD 'color de fondo para la celda Next I End If Next fila Grid.Redraw = True 'se habilita el repintado End Sub
En el formulario que construimos en el articulo anterior Visual Basic 6 usando Base de datos Firebird – 1 – Conexión en el botón conectar llamamos a este procedimiento:
Private Sub cmdPrueba_Click() Call ConectarDB Call LlenarGridClientes End Sub
VIDEO
Lección Anterior Visual Basic 6 usando Base de datos Firebird – 2 – Procedimiento Almacenado