Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: E N T E R en Agosto 11, 2017, 12:18:14 pm

Título: Recuperar datos de Procedimiento Almacenado con parametros
Publicado por: E N T E R en Agosto 11, 2017, 12:18:14 pm
Hola tengo un Procedimiento Almacenado en MySQL muy sencillo solo es un Select, como puedo recuperar en un recodrset para poder mostrar en una grilla.

Mi Procedimiento en el MySQL es esta :

Código: (SQL) [Seleccionar]
CREATE PROCEDURE mCedulas(IN prm INTEGER)
SELECT cedula FROM clientes WHERE cedula=prm


La forma común de recuperar datos en un recordset uso este código.

Código: (VB) [Seleccionar]
Private Sub Command1_Click()

    Dim cnADO As ADODB.Connection
    Dim rsADO As ADODB.Recordset
   
    Set cnADO = New ADODB.Connection
    Set rsADO = New ADODB.Recordset
     
    rsADO.CursorLocation = adUseClient
   
    cnADO.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=cobranzas; User=root;Password=;Option=3;"
    cnADO.Open

    strSQL = "SELECT cedula FROM clientes WHERE cedula='3230148'"
    rsADO.Open strSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
   
    Do Until rsADO.EOF
        With rsADO
            Text1.Text = .Fields("cedula")
            rsADO.MoveNext
        End With
    Loop

End Sub
Título: Re:Recuperar datos de Procedimiento Almacenado con parametros
Publicado por: obethermy en Agosto 15, 2017, 11:42:08 pm
este es el archivo del procedimiento almacenado  mCedulas.sql
si te fija mi usuario mysql es bethermy y mi servidor es localhost y abierto por internet(%)
Código: (SQL) [Seleccionar]
DELIMITER $$
DROP PROCEDURE IF EXISTS `mCedulas`$$
CREATE DEFINER='bethermy'@'localhost,%' PROCEDURE `mCedulas`(IN prm INTEGER)
BEGIN
SELECT cedula FROM clientes WHERE cedula=prm;
END $$
DELIMITER ;

y en visual basic sustituye en la linea comentada

Código: (VB) [Seleccionar]
'strSQL = "SELECT cedula FROM clientes WHERE cedula='3230148'"
'rsADO.Open strSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
valor_ci="3230148"
Set rsADO = cnADO.Execute("call mCedulas('" & valor_ci & "')")