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
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...
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
-------------------------
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?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:exY9xONB...@TK2MSFTNGP11.phx.gbl...
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