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.
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


0