parameters = properties?

19/02/2004 - 03:52 por Pablo Ricco | Informe spam
Hola!
Estoy emigrando una aplicación desde VB hacia .NET...y me surge el siguiente
problema...
En visual basic utilizo el objeto ADODB...y para setear propiedades a un
comando uso:

Dim cmd as New ADODB.Command
cmd.ActiveConnection = kb
cmd.Properties(15).Value = 2
...


En .NET creo que sería así...

OleDbCommand cmd = new OleDbCommand();
cmd.Parameters.add(15,2);
...

Pero esto me da un error en el Provider, dice que no implementa la interfaz
ICommandWithParameters
Mi pregunta es si hay alguna forma de pasarle las propiedades en la string
SQL (nose como se hace)...o si hay alguna otra solucióngracias!

saludos
pablo

Preguntas similare

Leer las respuestas

#1 Tristan
19/02/2004 - 08:31 | Informe spam
¿Pero estás seguro de que escribes esa sentencia en vb.net?. ¿No te da error
en tiempo de compilación?. No hay ninguna sobrecarga del método Add de
OleDbParameterCollection que admita dos enteros como parámetro. La forma
normal de utilizar un comando ado.net con parámetros sería algo así:

dim cmd as new OleDbCommand("sproc o consulta SQL");
cmd.Parameters.add(15) = 2;


Y si estás utilizando sproc, tendrás que indicar el tipo de comando:

cmd.CommandType = CommandType.StoredProcedure

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Pablo Ricco
19/02/2004 - 12:55 | Informe spam
En realidad los parametros los agrego así...

cmd.Parameters.Add("19", 2);

pero ese no es el problemasino que el provider me soporta las properties
desde ADODB en Visual Basic 6...y no me soporta los parameters desde .NET.
Asi que nose si existe una forma de poner properties en la instrucción SQL o
en algun otro lado

gracias...saludos
Respuesta Responder a este mensaje
#3 Tristan
19/02/2004 - 21:54 | Informe spam
En realidad te estaba hablando de como hacerlo con el proveedor SqlServer
que es el que utilizo. Pero el problema es que los parámetros del proveedor
OleDb son posicionales, no por nombre.

Esto debe funcionar:

Dim comando As New OleDbCommand("SELECT nombre FROM clientes WHERE nif = ?",
OleDbConnection1)
comando.Parameters.Add("Da lo mismo", "123456789A")
OleDbConnection1.Open()
MsgBox(comando.ExecuteScalar())
OleDbConnection1.Close()


Con proc. almac. sería similar. Lo importante es la posición de los
parámetros:

El sproc (Sql Server):

CREATE PROCEDURE SelCliente (@nif char(9)) AS
SELECT nombre FROM clientes WHERE nif = @nif

Y en vb.net:

Dim comando As New OleDbCommand("SelCliente", OleDbConnection1)
comando.CommandType = CommandType.StoredProcedure
comando.Parameters.Add("@nif o lo que sea", "222")
OleDbConnection1.Open()
MsgBox(comando.ExecuteScalar())
OleDbConnection1.Close()

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida