Parámetros ADO

28/01/2005 - 00:17 por Mauricio López [uy] | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Eladio Rincón
28/01/2005 - 00:40 | Informe spam
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?gro....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]" wrote in message
news:e#
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


Respuesta Responder a este mensaje
#2 Mauricio López [uy]
28/01/2005 - 01:57 | Informe spam
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
-
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
Respuesta Responder a este mensaje
#3 Eladio Rincón
28/01/2005 - 09:46 | Informe spam
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

Consulte el histórico del grupo en Google
http://groups.google.com/groups?gro....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]" wrote in message
news:
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
-
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


Respuesta Responder a este mensaje
#4 Mauricio López [uy]
31/01/2005 - 03:41 | Informe spam
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


Saludos!

Mauricio López
Maldonado - Uruguay
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida