Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Parámetros ADO

763 views
Skip to first unread message

Mauricio López [uy]

unread,
Jan 27, 2005, 6:17:41 PM1/27/05
to
Gente:

Tengo un problema, quisiera saber por qué no puedo definir un objeto parameter de ADO de la forma en que explica la ayuda de
ADO. Este es el código VB

Set param4 = comando.CreateParameter("Hora", adVarChar, adParamInput)
param4.Value = .Hora
comando.Parameters.Append param4

Esto me devuelve el error 3708 - "Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente."

Tampoco acepta esto:

Set param3 = comando.CreateParameter("Fecha", adVarChar, adParamInput, , Objeto.Fecha)
comando.Parameters.Append param3

Devolviendo el mismo error. ¿Qué estoy haciendo mal? Desde ya muchas gracias.

--

Saludos!

Mauricio López
Maldonado - Uruguay


Eladio Rincón

unread,
Jan 27, 2005, 6:40:31 PM1/27/05
to
Hola,

hace mucho que no trabajo con ADO pero me da la sensación que se te ha
olvidado definir la longitud del argumento tipo varchar; sin embargo,
deberías postear el problema en los grupos de Visual Basic donde creo que
obtendrás más información...

--
Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)
"Comparte lo que sabes, aprende lo que no sepas", FGG

Consulte el histórico del grupo en Google
http://groups.google.com/groups?group=microsoft.public.es.sqlserver

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Mauricio López [uy]" <damonF...@NOSPAMadinet.com.uy> wrote in message
news:e#XELXMBF...@TK2MSFTNGP10.phx.gbl...

Mauricio López [uy]

unread,
Jan 27, 2005, 7:57:12 PM1/27/05
to
Gracias,

exactamente era eso, faltaba el tamaño en los VarChar. Como tu lo mencionas he preguntado en el foro de VB también pero me
gustaría plantear otra duda aquí también.

Realmente no me gusta postear una pregunta hasta no haber revisado en Google Groups y haber probado varias veces, pero
realmente no puedo encontrar el motivo de este error, paso a describirlo:

Cuando llamo al procedimiento almacenado que describo más adelante se produce el error número -2147217904, descripción: "El
procedimiento 'prAddTransaccionCT' precisa el parámetro '@Fecha', que no se ha especificado." ¡¡¡¡¡Siendo que tengo el parámetro
Fecha por todos lados!!!!!

Este es el código ADO:

------------------------------------------------------------
Private Sub prAddTransaccionCT(ByRef unaTransaccion As cls_Transaccion, idSesion As Long)
Dim cmd As New ADODB.Command
Dim param As ADODB.Parameter

Set cmd.ActiveConnection = cnnTEA

With unaTransaccion

Set param = cmd.CreateParameter("Fecha", adDBDate, adParamInput, .Fecha)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Hora", adDBTime, adParamInput, .Hora)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Cantidad", adSmallInt, adParamInput)
param.Value = .cantidad
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Importe", adVarChar, adParamInput, 40)
param.Value = pUtil.strMoneda(.Importe)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("IdVuelo", adInteger, adParamInput)
param.Value = .vuelo.Id
cmd.Parameters.Append param

Set param = cmd.CreateParameter("IdTarjeta", adInteger, adParamInput)
param.Value = .tarjeta.Id
cmd.Parameters.Append param

Set param = cmd.CreateParameter("IdSesion", adInteger, adParamInput)
param.Value = idSesion
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Id", adInteger, adParamOutput)
cmd.Parameters.Append param

cmd.CommandText = "prAddTransaccionCT"
cmd.CommandType = adCmdStoredProc
cmd.Execute

.Id = cmd.Parameters("Id")
End With

Die cmd, param
End Sub
------------------------------------------------------------
y este el procedimiento almacenado:
------------------------------------------------------------
ALTER PROCEDURE prAddTransaccionCT
@Fecha SMALLDATETIME,
@Hora SMALLDATETIME,
@Cantidad SMALLINT,
@Importe NVARCHAR(40),
@IdVuelo INT,
@IdTarjeta INT,
@IdSesion INT,
@Id INT OUTPUT
AS
INSERT INTO tblTransacciones (Fecha, Hora, Cantidad, Importe, IdVuelo, IdTarjeta, IdSesion)
VALUES (@Fecha, @Hora,@Cantidad, CONVERT(SMALLMONEY,@Importe), @IdVuelo, @IdTarjeta, @IdSesion)
IF @@Error <> 0
RETURN -1
ELSE
BEGIN
SET @Id = @@IDENTITY
RETURN 0
END
------------------------------------------------------------

Agradezco muchísimo la ayuda, ya que estoy trancadísimo

--

Saludos!

Mauricio López
Maldonado - Uruguay

-------------------------

Eladio Rincón

unread,
Jan 28, 2005, 3:46:09 AM1/28/05
to
prueba a poner la @ en el nombre del parámetro así:

Set param = cmd.CreateParameter("@Fecha", adDBDate, adParamInput,
.Fecha)


--
Eladio Rincón
SQL Server MVP

Solid Quality Learning (http://www.solidqualitylearning.com)


"Comparte lo que sabes, aprende lo que no sepas", FGG

¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Mauricio López [uy]" <damonF...@NOSPAMadinet.com.uy> wrote in message

news:exY9xONB...@TK2MSFTNGP11.phx.gbl...

Mauricio López [uy]

unread,
Jan 30, 2005, 9:41:31 PM1/30/05
to
Amigos:

He logrado solucionar "casi" totalmente el problema que tenía con los parámetros de ADO, dejo el código que usé finalmente
por las dudas que alguien más tenga dudas con esto. Muchas gracias nuevamente por su invalorable ayuda.

Código ADO:

Dim cmd As New ADODB.Command
Dim param As ADODB.Parameter

Set cmd.ActiveConnection = cnnTEA

With unaTransaccion

Set param = cmd.CreateParameter("Fecha", adVarChar, adParamInput, 10, Format(.Fecha, "dd/mm/yyyy"))
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Hora", adVarChar, adParamInput, 16, .Hora)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Cantidad", adSmallInt, adParamInput, , .Cantidad)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Importe", adVarChar, adParamInput, 40, .Importe)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("IdVuelo", adInteger, adParamInput, , .Vuelo.Id)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("IdSesion", adInteger, adParamInput, , IdSesion)
cmd.Parameters.Append param

Set param = cmd.CreateParameter("Id", adInteger, adParamOutput)
cmd.Parameters.Append param

cmd.CommandText = "prAddTransaccionST"
cmd.CommandType = adCmdStoredProc
cmd.Execute

.Id = cmd.Parameters("Id")
End With

Código T-SQL:

ALTER PROCEDURE prAddTransaccionST
@Fecha VARCHAR(10),
@Hora DATETIME,
@Cantidad SMALLINT,
@Importe VARCHAR(40),
@IdVuelo INT,


@IdSesion INT,
@Id INT OUTPUT
AS

INSERT INTO tblTransacciones (Fecha, Hora, Cantidad, Importe, IdVuelo, IdSesion)
VALUES (CONVERT(SMALLDATETIME, @Fecha), @Hora, @Cantidad, CONVERT(SMALLMONEY,@Importe), @IdVuelo, @IdSesion)


IF @@Error <> 0
RETURN -1
ELSE
BEGIN
SET @Id = @@IDENTITY
RETURN 0
END

GO

0 new messages