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

