Bueno, otra vez mucha teoria. va miren pues! yo estoy haciendo aplicaciones, en vb entonces vamos a iniciar, para conectarme a las bases de datos estoy usando n capas. una acceso a datos, otro reglas del negocio y por ultimo la interfase usuario. entonces miren pues, para el acceso a datos estoy usando una "Proyecto" que he llamado Acceso a Datos que basicamente tiene 2 clases: una llamada BaseDatos.vb que tiene:
mports System.Data.Common
Imports System.Data
Imports System.Configuration
Imports System.Data.SqlClient
''' <summary>
''' Representa la base de datos en el sistema.
''' Ofrece los métodos de acceso a misma.
''' </summary>
Public Class BaseDatos
Private _Conexion As DbConnection = Nothing
Private _Comando As DbCommand = Nothing
Private _Transaccion As DbTransaction = Nothing
Private _CadenaConexion As String
Private Shared _Factory As DbProviderFactory = Nothing
''' <summary>
''' Crea una instancia del acceso a la base de datos.
''' </summary>
Public Sub New()
Configurar()
End Sub
''' <summary>
''' Configura el acceso a la base de datos para su utilización.
''' </summary>
''' <exception cref="BaseDatosException">Si existe un error al cargar la configuración.</exception>
Private Sub Configurar()
Try
Dim proveedor As String = ConfigurationManager.AppSettings.Get("providerName")
Me._CadenaConexion = ConfigurationManager.AppSettings.Get("connectionString")
BaseDatos._factory = DbProviderFactories.GetFactory(proveedor)
Catch ex As ConfigurationErrorsException
Throw New BaseDatosException("Error al cargar la configuración del acceso a datos.", ex)
End Try
End Sub
''' <summary>
''' Permite desconectarse de la base de datos.
''' </summary>
Public Sub Desconectar()
If Me._Conexion.State.Equals(ConnectionState.Open) Then
Me._Conexion.Close()
End If
End Sub
''' <summary>
''' Se concecta con la base de datos.
''' </summary>
''' <exception cref="BaseDatosException">Si existe un error al conectarse.</exception>
Public Sub Conectar()
If Not Me._Conexion Is Nothing Then
If Me._Conexion.State.Equals(ConnectionState.Closed) Then
Throw New BaseDatosException("La conexión ya se encuentra abierta.")
End If
End If
Try
If Me._Conexion Is Nothing Then
Me._Conexion = _Factory.CreateConnection()
Me._Conexion.ConnectionString = _CadenaConexion
End If
Me._Conexion.Open()
Catch ex As DataException
Throw New BaseDatosException("Error al conectarse.")
End Try
End Sub
''' <summary>
''' Crea un comando en base a una sentencia SQL.Ejemplo:
''' <code>SELECT * FROM Tabla WHERE campo1=@campo1, campo2=@campo2</code>
''' Guarda el comando para el seteo de parámetros y la posterior ejecución.
''' </summary>
''' <param name="sentenciaSQL">La sentencia SQL con el formato: SENTENCIA [param = @param,]</param>
Public Sub CrearComando(ByVal sentenciaSQL As String)
Me._Comando = _Factory.CreateCommand()
Me._Comando.Connection = Me._Conexion
Me._Comando.CommandType = CommandType.Text
Me._Comando.CommandText = sentenciaSQL
If Not Me._Transaccion Is Nothing Then
Me._Comando.Transaction = Me._Transaccion
End If
End Sub
''' <summary>
''' Setea un parámetro como nulo del comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro cuyo valor será nulo.</param>
Public Sub AsignarParametroNulo(ByVal nombre As String)
AsignarParametro(nombre, "", "NULL")
End Sub
''' <summary>
''' Asigna un parámetro de tipo cadena al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroCadena(ByVal nombre As String, ByVal valor As String)
AsignarParametro(nombre, "'", valor)
End Sub
''' <summary>
''' Asigna un parámetro de tipo entero al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroEntero(ByVal nombre As String, ByVal valor As Integer)
AsignarParametro(nombre, "", valor.ToString())
End Sub
''' <summary>
''' Asigna un parámetro de tipo entero al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroDouble(ByVal nombre As String, ByVal valor As Double)
AsignarParametro(nombre, "", valor)
End Sub
''' <summary>
''' Asigna un parámetro al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="separador">El separador que será agregado al valor del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Private Sub AsignarParametro(ByVal nombre As String, ByVal separador As String, ByVal valor As String)
Dim indice As Integer = Me._Comando.CommandText.IndexOf(nombre)
Dim prefijo As String = Me._Comando.CommandText.Substring(0, indice)
Dim sufijo As String = Me._Comando.CommandText.Substring(indice + nombre.Length)
Me._Comando.CommandText = prefijo + separador + valor + separador + sufijo
End Sub
''' <summary>
''' Asigna un parámetro de tipo fecha al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroFecha(ByVal nombre As String, ByVal valor As DateTime)
AsignarParametro(nombre, "'", valor.ToString())
End Sub
''' <summary>
''' Ejecuta el comando creado y retorna el resultado de la consulta.
''' </summary>
''' <returns>El resultado de la consulta.</returns>
''' <exception cref="BaseDatosException">Si ocurre un error al ejecutar el comando.</exception>
Public Function EjecutarConsulta() As DbDataReader
Return Me._Comando.ExecuteReader()
End Function
''' <summary>
''' Ejecuta el comando creado y retorna un escalar.
''' </summary>
''' <returns>El escalar que es el resultado del comando.</returns>
''' <exception cref="BaseDatosException">Si ocurre un error al ejecutar el comando.</exception>
Public Function EjecutarEscalar() As Integer
Dim escalar As Integer = 0
'Dim r As Integer
Try
' r = Me._Comando.ExecuteNonQuery()
'If (r <> -1) Then
'escalar = Integer.Parse(Me._Comando.ExecuteScalar().ToString())
escalar = _Comando.ExecuteScalar
'Else
'escalar = 0
'End If
Catch ex As InvalidCastException
escalar = 0
'Throw New BaseDatosException("Error al ejecutar un escalar.", ex)
End Try
Return escalar
End Function
Public Function CadenaConexion() As String
Try
Return Me._CadenaConexion
Catch ex As InvalidCastException
Throw New BaseDatosException("Error al ejecutar la cadena de conexion.", ex)
End Try
End Function
''' <summary>
''' Ejecuta el comando creado.
''' </summary>
Public Sub EjecutarComando()
Me._Comando.ExecuteNonQuery()
End Sub
''' <summary>
''' Comienza una transacción en base a la conexion abierta.
''' Todo lo que se ejecute luego de esta ionvocación estará
''' dentro de una tranasacción.
''' </summary>
Public Sub ComenzarTransaccion()
If Me._Transaccion Is Nothing Then
Me._Transaccion = Me._Conexion.BeginTransaction()
End If
End Sub
''' <summary>
''' Cancela la ejecución de una transacción.
''' Todo lo ejecutado entre ésta invocación y su
''' correspondiente <c>ComenzarTransaccion</c> será perdido.
''' </summary>
''' <remarks></remarks>
Public Sub CancelarTransaccion()
If Not Me._Transaccion Is Nothing Then
Me._Transaccion.Rollback()
End If
End Sub
luego otra clase para las excepciones:
Public Class BaseDatosException
Inherits ApplicationException
''' <summary>
''' Construye una instancia en base a un mensaje de error y la una excepción original.
''' </summary>
''' <param name="mensaje">El mensaje de error.</param>
''' <param name="original">La excepción original.</param>
Public Sub New(ByVal mensaje As String, ByVal original As Exception)
MyBase.New(mensaje, original)
End Sub
''' <summary>
''' Construye una instancia en base a un mensaje de error.
''' </summary>
''' <param name="mensaje">El mensaje de error.</param>
Public Sub New(ByVal mensaje As String)
MyBase.New(mensaje)
End Sub
End Class
''' <summary>
''' Confirma todo los comandos ejecutados entre el <c>ComanzarTransaccion</c>
''' y ésta invocación.
''' </summary>
Public Sub ConfirmarTransaccion()
If Not Me._Transaccion Is Nothing Then
Me._Transaccion.Commit()
End If
End Sub
Public Function consultar(ByVal strSelect As String) As System.Data.DataSet
Dim trnTemp As System.Data.SqlClient.SqlTransaction = Me._Conexion.BeginTransaction
Dim dtsTemp As System.Data.DataSet = Me.consultar(strSelect, trnTemp)
trnTemp.Commit()
Return dtsTemp
End Function
Public Function consultar(ByVal strSelect As String, ByVal trnTemp As System.Data.SqlClient.SqlTransaction) As System.Data.DataSet
Dim adaTemp As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(strSelect, trnTemp.Connection)
adaTemp.SelectCommand.Transaction = trnTemp
Dim dtsTemp As System.Data.DataSet = New System.Data.DataSet
adaTemp.Fill(dtsTemp)
Return dtsTemp
End Function
Public Function DataSetReturn(ByVal sSql As String) As DataSet
'-- Devuelve un DataTable --
Try
'-- Variables --
Dim oDataAdapter As New SqlClient.SqlDataAdapter(sSql, ConfigurationManager.AppSettings.Get("connectionString"))
Dim oDataSet As New DataSet
oDataAdapter.Fill(oDataSet, "Temporal")
Return oDataset
Catch ex As Exception
Throw New BaseDatosException("Error al ejecutar la llamada a tabla." & vbCrLf & "Scrip Ejecutado :" & sSql, ex)
End Try
End Function
End Class
entonces ya bien facil, cuando quiero hacer referencia en una RN al acceso de datos hago algo asi:
Public Function AgregaArea(ByVal iEmpresa As Integer, ByVal iArea As Integer, ByVal sNombre As String) As Boolean
Dim Db As BaseDatos = New BaseDatos
Try
Db.Conectar()
Db.ComenzarTransaccion()
Dim Sql As String = "INSERT Area (Empresa, Area, Nombre) VALUES (@Empresa, @Area, @Nombre) SELECT @@IDENTITY"
Db.CrearComando(Sql)
Db.AsignarParametroEntero("@Empresa", iEmpresa)
Db.AsignarParametroEntero("@Area", iArea)
Db.AsignarParametroCadena("@Nombre", sNombre)
Db.EjecutarComando()
Db.ConfirmarTransaccion()
Catch Ex As BaseDatosException
Db.CancelarTransaccion()
Throw New ReglasNegocioException("Error al crear la Area.", Ex)
Finally
Db.Desconectar()
End Try
Return AgregaArea
End Function
y ya!!!!
facil va!! jajajaja
bueno, espero les ayude, cualquier cosa me cuentan!
bendiciones pue!!!!
para el provider y la conexion uso en mi Login una lectura de un XML que tiene los "parametros" de la conexion.
los leo con esto:
Private Sub frmLogin_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Navigate Each XML Element of app.Config file
' Debe cargar las empresas de la base de datos
Try
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
'Creamos el "XML Document"
m_xmld = New XmlDocument()
'Cargamos el archivo
m_xmld.Load("CARECartera.xml")
'Obtenemos la lista de los nodos "name"
m_nodelist = m_xmld.SelectNodes("/Configuracion/BaseDatos/Property")
'Iniciamos el ciclo de lectura
For Each m_node In m_nodelist
'Obtenemos el atributo del codigo
'Obtenemos el Elemento nombre
Dim NombreNodo = m_node.ChildNodes.Item(0).InnerText
Dim ValorNodo = m_node.ChildNodes.Item(1).InnerText
ConfigurationManager.AppSettings.Set(NombreNodo, ValorNodo)
Next
CargaEmpresas()
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "Menu Dinamico", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
mports System.Data.Common
Imports System.Data
Imports System.Configuration
Imports System.Data.SqlClient
''' <summary>
''' Representa la base de datos en el sistema.
''' Ofrece los métodos de acceso a misma.
''' </summary>
Public Class BaseDatos
Private _Conexion As DbConnection = Nothing
Private _Comando As DbCommand = Nothing
Private _Transaccion As DbTransaction = Nothing
Private _CadenaConexion As String
Private Shared _Factory As DbProviderFactory = Nothing
''' <summary>
''' Crea una instancia del acceso a la base de datos.
''' </summary>
Public Sub New()
Configurar()
End Sub
''' <summary>
''' Configura el acceso a la base de datos para su utilización.
''' </summary>
''' <exception cref="BaseDatosException">Si existe un error al cargar la configuración.</exception>
Private Sub Configurar()
Try
Dim proveedor As String = ConfigurationManager.AppSettings.Get("providerName")
Me._CadenaConexion = ConfigurationManager.AppSettings.Get("connectionString")
BaseDatos._factory = DbProviderFactories.GetFactory(proveedor)
Catch ex As ConfigurationErrorsException
Throw New BaseDatosException("Error al cargar la configuración del acceso a datos.", ex)
End Try
End Sub
''' <summary>
''' Permite desconectarse de la base de datos.
''' </summary>
Public Sub Desconectar()
If Me._Conexion.State.Equals(ConnectionState.Open) Then
Me._Conexion.Close()
End If
End Sub
''' <summary>
''' Se concecta con la base de datos.
''' </summary>
''' <exception cref="BaseDatosException">Si existe un error al conectarse.</exception>
Public Sub Conectar()
If Not Me._Conexion Is Nothing Then
If Me._Conexion.State.Equals(ConnectionState.Closed) Then
Throw New BaseDatosException("La conexión ya se encuentra abierta.")
End If
End If
Try
If Me._Conexion Is Nothing Then
Me._Conexion = _Factory.CreateConnection()
Me._Conexion.ConnectionString = _CadenaConexion
End If
Me._Conexion.Open()
Catch ex As DataException
Throw New BaseDatosException("Error al conectarse.")
End Try
End Sub
''' <summary>
''' Crea un comando en base a una sentencia SQL.Ejemplo:
''' <code>SELECT * FROM Tabla WHERE campo1=@campo1, campo2=@campo2</code>
''' Guarda el comando para el seteo de parámetros y la posterior ejecución.
''' </summary>
''' <param name="sentenciaSQL">La sentencia SQL con el formato: SENTENCIA [param = @param,]</param>
Public Sub CrearComando(ByVal sentenciaSQL As String)
Me._Comando = _Factory.CreateCommand()
Me._Comando.Connection = Me._Conexion
Me._Comando.CommandType = CommandType.Text
Me._Comando.CommandText = sentenciaSQL
If Not Me._Transaccion Is Nothing Then
Me._Comando.Transaction = Me._Transaccion
End If
End Sub
''' <summary>
''' Setea un parámetro como nulo del comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro cuyo valor será nulo.</param>
Public Sub AsignarParametroNulo(ByVal nombre As String)
AsignarParametro(nombre, "", "NULL")
End Sub
''' <summary>
''' Asigna un parámetro de tipo cadena al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroCadena(ByVal nombre As String, ByVal valor As String)
AsignarParametro(nombre, "'", valor)
End Sub
''' <summary>
''' Asigna un parámetro de tipo entero al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroEntero(ByVal nombre As String, ByVal valor As Integer)
AsignarParametro(nombre, "", valor.ToString())
End Sub
''' <summary>
''' Asigna un parámetro de tipo entero al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroDouble(ByVal nombre As String, ByVal valor As Double)
AsignarParametro(nombre, "", valor)
End Sub
''' <summary>
''' Asigna un parámetro al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="separador">El separador que será agregado al valor del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Private Sub AsignarParametro(ByVal nombre As String, ByVal separador As String, ByVal valor As String)
Dim indice As Integer = Me._Comando.CommandText.IndexOf(nombre)
Dim prefijo As String = Me._Comando.CommandText.Substring(0, indice)
Dim sufijo As String = Me._Comando.CommandText.Substring(indice + nombre.Length)
Me._Comando.CommandText = prefijo + separador + valor + separador + sufijo
End Sub
''' <summary>
''' Asigna un parámetro de tipo fecha al comando creado.
''' </summary>
''' <param name="nombre">El nombre del parámetro.</param>
''' <param name="valor">El valor del parámetro.</param>
Public Sub AsignarParametroFecha(ByVal nombre As String, ByVal valor As DateTime)
AsignarParametro(nombre, "'", valor.ToString())
End Sub
''' <summary>
''' Ejecuta el comando creado y retorna el resultado de la consulta.
''' </summary>
''' <returns>El resultado de la consulta.</returns>
''' <exception cref="BaseDatosException">Si ocurre un error al ejecutar el comando.</exception>
Public Function EjecutarConsulta() As DbDataReader
Return Me._Comando.ExecuteReader()
End Function
''' <summary>
''' Ejecuta el comando creado y retorna un escalar.
''' </summary>
''' <returns>El escalar que es el resultado del comando.</returns>
''' <exception cref="BaseDatosException">Si ocurre un error al ejecutar el comando.</exception>
Public Function EjecutarEscalar() As Integer
Dim escalar As Integer = 0
'Dim r As Integer
Try
' r = Me._Comando.ExecuteNonQuery()
'If (r <> -1) Then
'escalar = Integer.Parse(Me._Comando.ExecuteScalar().ToString())
escalar = _Comando.ExecuteScalar
'Else
'escalar = 0
'End If
Catch ex As InvalidCastException
escalar = 0
'Throw New BaseDatosException("Error al ejecutar un escalar.", ex)
End Try
Return escalar
End Function
Public Function CadenaConexion() As String
Try
Return Me._CadenaConexion
Catch ex As InvalidCastException
Throw New BaseDatosException("Error al ejecutar la cadena de conexion.", ex)
End Try
End Function
''' <summary>
''' Ejecuta el comando creado.
''' </summary>
Public Sub EjecutarComando()
Me._Comando.ExecuteNonQuery()
End Sub
''' <summary>
''' Comienza una transacción en base a la conexion abierta.
''' Todo lo que se ejecute luego de esta ionvocación estará
''' dentro de una tranasacción.
''' </summary>
Public Sub ComenzarTransaccion()
If Me._Transaccion Is Nothing Then
Me._Transaccion = Me._Conexion.BeginTransaction()
End If
End Sub
''' <summary>
''' Cancela la ejecución de una transacción.
''' Todo lo ejecutado entre ésta invocación y su
''' correspondiente <c>ComenzarTransaccion</c> será perdido.
''' </summary>
''' <remarks></remarks>
Public Sub CancelarTransaccion()
If Not Me._Transaccion Is Nothing Then
Me._Transaccion.Rollback()
End If
End Sub
luego otra clase para las excepciones:
Public Class BaseDatosException
Inherits ApplicationException
''' <summary>
''' Construye una instancia en base a un mensaje de error y la una excepción original.
''' </summary>
''' <param name="mensaje">El mensaje de error.</param>
''' <param name="original">La excepción original.</param>
Public Sub New(ByVal mensaje As String, ByVal original As Exception)
MyBase.New(mensaje, original)
End Sub
''' <summary>
''' Construye una instancia en base a un mensaje de error.
''' </summary>
''' <param name="mensaje">El mensaje de error.</param>
Public Sub New(ByVal mensaje As String)
MyBase.New(mensaje)
End Sub
End Class
''' <summary>
''' Confirma todo los comandos ejecutados entre el <c>ComanzarTransaccion</c>
''' y ésta invocación.
''' </summary>
Public Sub ConfirmarTransaccion()
If Not Me._Transaccion Is Nothing Then
Me._Transaccion.Commit()
End If
End Sub
Public Function consultar(ByVal strSelect As String) As System.Data.DataSet
Dim trnTemp As System.Data.SqlClient.SqlTransaction = Me._Conexion.BeginTransaction
Dim dtsTemp As System.Data.DataSet = Me.consultar(strSelect, trnTemp)
trnTemp.Commit()
Return dtsTemp
End Function
Public Function consultar(ByVal strSelect As String, ByVal trnTemp As System.Data.SqlClient.SqlTransaction) As System.Data.DataSet
Dim adaTemp As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(strSelect, trnTemp.Connection)
adaTemp.SelectCommand.Transaction = trnTemp
Dim dtsTemp As System.Data.DataSet = New System.Data.DataSet
adaTemp.Fill(dtsTemp)
Return dtsTemp
End Function
Public Function DataSetReturn(ByVal sSql As String) As DataSet
'-- Devuelve un DataTable --
Try
'-- Variables --
Dim oDataAdapter As New SqlClient.SqlDataAdapter(sSql, ConfigurationManager.AppSettings.Get("connectionString"))
Dim oDataSet As New DataSet
oDataAdapter.Fill(oDataSet, "Temporal")
Return oDataset
Catch ex As Exception
Throw New BaseDatosException("Error al ejecutar la llamada a tabla." & vbCrLf & "Scrip Ejecutado :" & sSql, ex)
End Try
End Function
End Class
entonces ya bien facil, cuando quiero hacer referencia en una RN al acceso de datos hago algo asi:
Public Function AgregaArea(ByVal iEmpresa As Integer, ByVal iArea As Integer, ByVal sNombre As String) As Boolean
Dim Db As BaseDatos = New BaseDatos
Try
Db.Conectar()
Db.ComenzarTransaccion()
Dim Sql As String = "INSERT Area (Empresa, Area, Nombre) VALUES (@Empresa, @Area, @Nombre) SELECT @@IDENTITY"
Db.CrearComando(Sql)
Db.AsignarParametroEntero("@Empresa", iEmpresa)
Db.AsignarParametroEntero("@Area", iArea)
Db.AsignarParametroCadena("@Nombre", sNombre)
Db.EjecutarComando()
Db.ConfirmarTransaccion()
Catch Ex As BaseDatosException
Db.CancelarTransaccion()
Throw New ReglasNegocioException("Error al crear la Area.", Ex)
Finally
Db.Desconectar()
End Try
Return AgregaArea
End Function
y ya!!!!
facil va!! jajajaja
bueno, espero les ayude, cualquier cosa me cuentan!
bendiciones pue!!!!
para el provider y la conexion uso en mi Login una lectura de un XML que tiene los "parametros" de la conexion.
los leo con esto:
Private Sub frmLogin_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Navigate Each XML Element of app.Config file
' Debe cargar las empresas de la base de datos
Try
Dim m_xmld As XmlDocument
Dim m_nodelist As XmlNodeList
Dim m_node As XmlNode
'Creamos el "XML Document"
m_xmld = New XmlDocument()
'Cargamos el archivo
m_xmld.Load("CARECartera.xml")
'Obtenemos la lista de los nodos "name"
m_nodelist = m_xmld.SelectNodes("/Configuracion/BaseDatos/Property")
'Iniciamos el ciclo de lectura
For Each m_node In m_nodelist
'Obtenemos el atributo del codigo
'Obtenemos el Elemento nombre
Dim NombreNodo = m_node.ChildNodes.Item(0).InnerText
Dim ValorNodo = m_node.ChildNodes.Item(1).InnerText
ConfigurationManager.AppSettings.Set(NombreNodo, ValorNodo)
Next
CargaEmpresas()
Catch ex As Exception
MessageBox.Show(ex.Message.ToString, "Menu Dinamico", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub