Parametros de salida con vb6 + mysql
Publicado por Matias (136 intervenciones) el 21/10/2008 18:52:58
Bueno necesito llamar a un proc almacenado en mysql y recuperar un dato de salida
este es el procedimiento mysql
create procedure nuevaventa(importe decimal (15, 2), out codigo int)
begin
insert into ventas (codventa, importe) values (null, importe);
select last_insert_id() into @last;
set codigo = @last;
end
la table solo tiene codventa autoincrement e importe
si lo llamo desde el servidor mysql funciona bien
call nuevaventa(null, 120.02)
ahora desde vb6 intento dos maneras
**********************************************************************************************
Dim rs As ADODB.Recordset
Dim db As ADODB.Connection
Dim cmd As ADODB.Command
Dim codigo As Integer
Private Sub Command1_Click()
Set cmd = New ADODB.Command
cmd.ActiveConnection = db
cmd.CommandType = adCmdStoredProc
con o sin esto
----------------------------------------------------------------------------------------------------------------------------------
cmd.Parameters.Append cmd.CreateParameter("Codventa", adinteger, adParamInput, 10, null)
------------------------------------------------------------------------------------------------------------------------------------
cmd.Parameters.Append cmd.CreateParameter("Importe", adDecimal, adParamInput, 10, Text1)
cmd.Parameters.Append cmd.CreateParameter("codigo", adInteger, adParamOutput, 3, codigo)
cmd.CommandText = "nuevaventa"
cmd.Execute
cmd.CommandText queda asi
{call nuevaventa(?,?)}
esto me da error de sintaxys
***********************************************************************************************
la otra forma es esta
***********************************************************************************************
Dim rs As ADODB.Recordset
Dim db As ADODB.Connection
Dim cmd As ADODB.Command
Private Sub Command1_Click()
Set cmd = New ADODB.Command
cmd.ActiveConnection = db
cmd.CommandText = "call nuevaventa" & "(" & Text1 & "," & "@a" & ")"
MsgBox (cmd.CommandText)
cmd.Execute
End Sub
**********************************************************************************************
Esto no me da error lo ejecuta bien pero no entiendo como capturar ese valor de salida.
Bueno gracias por su ayuda
este es el procedimiento mysql
create procedure nuevaventa(importe decimal (15, 2), out codigo int)
begin
insert into ventas (codventa, importe) values (null, importe);
select last_insert_id() into @last;
set codigo = @last;
end
la table solo tiene codventa autoincrement e importe
si lo llamo desde el servidor mysql funciona bien
call nuevaventa(null, 120.02)
ahora desde vb6 intento dos maneras
**********************************************************************************************
Dim rs As ADODB.Recordset
Dim db As ADODB.Connection
Dim cmd As ADODB.Command
Dim codigo As Integer
Private Sub Command1_Click()
Set cmd = New ADODB.Command
cmd.ActiveConnection = db
cmd.CommandType = adCmdStoredProc
con o sin esto
----------------------------------------------------------------------------------------------------------------------------------
cmd.Parameters.Append cmd.CreateParameter("Codventa", adinteger, adParamInput, 10, null)
------------------------------------------------------------------------------------------------------------------------------------
cmd.Parameters.Append cmd.CreateParameter("Importe", adDecimal, adParamInput, 10, Text1)
cmd.Parameters.Append cmd.CreateParameter("codigo", adInteger, adParamOutput, 3, codigo)
cmd.CommandText = "nuevaventa"
cmd.Execute
cmd.CommandText queda asi
{call nuevaventa(?,?)}
esto me da error de sintaxys
***********************************************************************************************
la otra forma es esta
***********************************************************************************************
Dim rs As ADODB.Recordset
Dim db As ADODB.Connection
Dim cmd As ADODB.Command
Private Sub Command1_Click()
Set cmd = New ADODB.Command
cmd.ActiveConnection = db
cmd.CommandText = "call nuevaventa" & "(" & Text1 & "," & "@a" & ")"
MsgBox (cmd.CommandText)
cmd.Execute
End Sub
**********************************************************************************************
Esto no me da error lo ejecuta bien pero no entiendo como capturar ese valor de salida.
Bueno gracias por su ayuda
Valora esta pregunta


0