Visual Basic.NET - Tipo o funcion Array en Vb.Net

 
Vista:

Tipo o funcion Array en Vb.Net

Publicado por DreadLord (12 intervenciones) el 23/08/2004 04:09:57
Hola chicos.

Yo otra vez XD... tengo una duda y ojala puedan ayudarme por favor.

Tengo un codigo en VB 6.0 que me funcionaba perfecto, y que pretendo hacerle las modificaciones correspondientes para poder ocuparlo en VB.Net. Tengo un componente, llamado "Database" que solo tiene 2 metodos, Grabar y Leer, y lo unico que hacen es, como lo indica su nombre, Grabar registro en una base de datos y leerlos. Los Metodos estan definidas de la siguiente forma

Public Function Grabar (nombre as String, ParamArray params() As Variant) as Integer

... instrucciones de declaracion de objetos. etc...

For i = LBound(params) To UBound(params)
prParam = cmProcedimiento.Parameters.Add(params(i, 0), params(i, 1), params(i, 3))
prParam.Value = params(i, 4)
Next i

... llamo a los procedimientos almacenados etc

End Function

Este metodo, es lo suficientemente generico como para que desde otra componente, o desde otro programa, lo llamo de la siguiente manera

Grabar ("InsertarEnTabla", Array("@mi_campo", adInteger, adInput, 4, mi_valor)

de modo que este metodo es, como decia, muy generico, asi que me permitia llamar a cualquier procedimiento, teniendo solo un mismo codigo, solo le pasaba el nombre del procedimiento almacenado, y en un Array, le pasaba los parametros que necesitaba, si el procedimiento almacenado requeria mas parametros, simplemente le pasaba mas Arrarys, tantos como parametros necesite el procedimiento almacenado que quiero llamar.

Ahora quiero pasar este codigo a VB.Net (el anterior era en VB 6.0 ) y... si bien he podido realizar los cambios, quedandome el metodo como aqui:

Public Function Leer(ByVal nombre_sp As String, ByVal ParamArray parametros()() As VariantType) As System.Data.OleDb.OleDbDataReader
Dim dbConexion As System.Data.OleDb.OleDbConnection
Dim cmProcedimiento As System.Data.OleDb.OleDbCommand
Dim prParam As System.Data.OleDb.OleDbParameter
Dim rsResul As System.Data.OleDb.OleDbDataReader

Dim StrConexion As String
Dim i As Integer

StrConexion = ObtenerStringConexion("LegalSuite")
dbConexion = New System.Data.OleDb.OleDbConnection(StrConexion)
cmProcedimiento = New System.Data.OleDb.OleDbCommand()
cmProcedimiento.Connection = dbConexion
cmProcedimiento.CommandText = nombre_sp
cmProcedimiento.CommandType = CommandType.StoredProcedure
For i = LBound(parametros) To UBound(parametros)
prParam = cmProcedimiento.Parameters.Add(parametros(i)(0), parametros(i)(1), parametros(i)(3))
prParam.Value = parametros(i)(4)
Next i

Try
rsResul = cmProcedimiento.ExecuteReader()
ObtenerRegistros_SP = rsResul
Catch excepcion As System.Exception

End Try

End Function

Este procedimiento es casi igual a la verson en VB 6.0 que yo tenia antes, pero ahora no se como llamarlo, porque si intento llamarlo como:

Dim db As Database.AccesoDB

db.Leer("MiProcedimiento", Array("@id_categoria", OleDb.OleDbType.Integer, 4, "Mi_Valor"))

me da error de sintaxis que "Array es un tipo y no se puede usar como expresion", y si le quito el array, marca con subrayado cada parametro y me dice que "Un valor de tipo X no se puede convertir en '2'" (la X y el '2' dependen del codigo, es solo un ejemplo). Por favor, como podria llamar a estos metodos que en VB 6.0 me funcionaban, para poder usarlos ahora en VB.Net? son unos metodos muy utiles que me ahorraban bastante tiempo, ya que simplemente pasaba como parametros, el procedimiento que queria ejecutar, sus parametros, y listo, pero aqui no se como podria hacerlo, ya que al parecer Array y ParamArray ya no se ocupa de la misma manera que antes.

Les agradeceria mucho si me pueden ayudar.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Tipo o funcion Array en Vb.Net

Publicado por Yamil Bracho (631 intervenciones) el 23/08/2004 14:58:52
Variant no existe en .NET . Mas o menos su equivalente es Object.
Me parece que mejor idea que agregues los valores a un ArrayList o mejor aun crear una clase con los datos que vas a pasar.
De todas maneras de acuerdo a los datos que estas pasando es mejor usar la clase OleDbParameter y pases un arreglo de estos objetos o un ArrayList. Por ejemplo:

Dim db As Database.AccesoDB
OleDbParameter prm = new OleDbParameter("@id_categoria", OleDb.OleDbType.Integer, 4, "Mi_Valor")
db.Leer("MiProcedimiento", prm )

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tipo o funcion Array en Vb.Net

Publicado por DreadLord (12 intervenciones) el 23/08/2004 15:49:47
Ya veo...

entiendo. O sea, como algunos tipos y funciones ya no existen en .net, mejor le paso los objetos en un arraylist. Me queda una pequeña duda: En el ejemplo, le paso directamente un OleDbParameter, pero en este caso en particular, el procedimiento en cuestion tiene 1 solo parametro, la duda es: Y si mi procedimiento tiene mas de 1 parametro? se podrian meter todos esos objetos parameter dentro de un arrayList, y entonces le paso el arrayList como parametro de la funcion Leer, verdad? o me equivoco?

Un saludo y muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Tipo o funcion Array en Vb.Net

Publicado por Yamil Bracho (631 intervenciones) el 23/08/2004 18:14:23
Exacto. Estas en lo cierto. Lo otro que puedes hacer es crear sobrecargas del metodo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar