Visual Basic - Cómo indicarle a un reporte de Report Viewer qué conexión del app.config utilice

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Cómo indicarle a un reporte de Report Viewer qué conexión del app.config utilice

Publicado por Enrique (1 intervención) el 08/12/2017 20:12:16
Hola amigos espero puedan apoyarme con esta duda que tengo:

Tengo una aplicación que se conecta a varias bases de datos, una vez que el usuario ingresa a la aplicación, elige la base de datos con la que quiere trabajar y el nombre del servidor se guarda en una variable pública que se llama ServerActual, hasta aquí todo trabaja bien. Tengo además un archivo app.config que tiene las posibles cadenas de conexión que se pueden utilizar, el app.config lo creé porque utilizo un reporte hecho con ReportViewer. Al botón que imprime el reporte le estoy tratando de indicar la cadena de conexión que utilice del app.config en base al valor que tenga la variable global que guarda el nombre del servidor (ServerActual)

Tengo un módulo que gestiona la conexión a la base de datos y ahí puse este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function GetConnectionStringByName(nombreCadenaConexion As String) As String
 
    Dim settings As ConnectionStringSettings = ConfigurationManager.ConnectionStrings(nombreCadenaConexion)
 
    If (Not settings Is Nothing) Then
        ' Si existe, devolver el valor de la cadena de conexión.
        Return settings.ConnectionString
    End If
 
    ' Generar una excepción.
    Throw New ArgumentException("No existe la cadena de conexión especificada.")
 
End Function

En el botón de imprimir el reporte puse este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
 
    If ServerActual = "NombreServidor" Then
        Dim cadenaConexion As String = GetConnectionStringByName("Aplicacion.Settings.AplicacionConnectionString1")
 
  'Ejecutar consulta y recuperar resultados
  'ReportViewer1.RefreshReport()
 
    ElseIf svrAct = "NombreServidor2" Then
        Dim cadenaConexion As String = GetConnectionStringByName("Aplicacion.Settings.AplicacionConnectionString")
 
  'Ejecutar consulta y recuperar resultados
  'ReportViewer1.RefreshReport()
 
    End If
 
End Sub

Quiero saber si es correcta la idea de lo que estoy haciendo o hay un manera más fácil de indicarle al report viewer qué cadena utilice, además no he podido compilar este código ya que me marca error en la conexión del módulo:

error-vs

Ojalá pudieran decirme qué tengo mal o si debo hacerlo de otra manera.

Gracias y saludos!
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