Error message: connectionString property has not been initialized

0

I'm doing a project in visual basic and devexpress.

When I compile the software in visual studio, everything works fine, but when I run the program installed on the pc and I want to access a dashboard, I get the following error:

No se puede conectar a la base de datos. Ver detalles abajo.
Mensaje error: no se ha inicializado la propiedad connectionString

Then I close the program, I open it and I perform the same action of accessing the dashboard and everything works fine. Could you help me?

I leave the code in order of execution.

When I start the software, it asks me to enter the name of the server and the instance where the databases are in SQLServer. This function saves the data for a connection in an XML file.

 Private Sub Guardar_Servidor_Click(sender As Object, e As EventArgs) Handles Guardar_Servidor.Click

    Dim settings As New XmlWriterSettings()
    settings.Indent = True

    If (Check.Checked = True) Then
        'Seguridad SQL SERVER

        If (text_Usuario.Text = "" Or text_Password.Text = "") Then
            MsgBox("Debe llenar los campos de usuario y contraseña")

        Else

            Try
                Dim dir As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

                'Se crea el directorio donde se guardaran las opciones
                CreateDirectory(dir & "\Kimun")

                Dim filePermissions = New FileIOPermission(FileIOPermissionAccess.AllAccess, dir & "\Kimun\config.xml")
                filePermissions.Demand()

                'Directiorio donde se guardara el archivo
                Dim XmlWrt As XmlWriter = XmlWriter.Create(dir & "\Kimun\config.xml", settings)

                With XmlWrt
                    'Declaracion por defecto XML
                    .WriteStartDocument()
                    'Comentario del XML
                    .WriteComment("XML Configuracion Kimun")
                    'Encabezado raiz XML
                    .WriteStartElement("Configuracion")
                    'Se inicia la configuracion
                    .WriteStartElement("Parametros")
                    'Parametros del nodo
                    .WriteStartElement("Servidor")
                    .WriteString(Nom_Servidor.Text)
                    .WriteEndElement()

                    .WriteStartElement("Usuario")
                    .WriteString(text_Usuario.Text)
                    .WriteEndElement()

                    .WriteStartElement("Password")
                    .WriteString(text_Password.Text)
                    .WriteEndElement()

                    .WriteStartElement("Correo")
                    .WriteString("")
                    .WriteEndElement()

                    'Termina la configuracion
                    .WriteEndElement()

                    'Se cierra XMLTextWriter
                    .WriteEndDocument()
                    .Close()

                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Information, "Error al guardar el archivo XML")
            End Try

            PanelDeControl.icono_notificacion.ShowBalloonTip(5000, "Notificación", "Se ha creado el archivo XML.", ToolTipIcon.Info)
            crear_conexiones()

            Me.Close()
        End If

    Else
        'Seguridad Windows
        text_Usuario.Text = ""
        text_Password.Text = ""

        Try

            Dim dir As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

            'Se crea el directorio donde se guardaran las opciones
            CreateDirectory(dir & "\Kimun")

            Dim filePermissions = New FileIOPermission(FileIOPermissionAccess.AllAccess, dir & "\Kimun\config.xml")
            filePermissions.Demand()

            'Directiorio donde se guardara el archivo
            Dim XmlWrt As XmlWriter = XmlWriter.Create(dir & "\Kimun\config.xml", settings)

            With XmlWrt
                'Declaracion por defecto XML
                .WriteStartDocument()
                'Comentario del XML
                .WriteComment("XML Configuracion Kimun")
                'Encabezado raiz XML
                .WriteStartElement("Configuracion")
                'Se inicia la configuracion
                .WriteStartElement("Parametros")
                'Parametros del nodo
                .WriteStartElement("Servidor")
                .WriteString(Nom_Servidor.Text)
                .WriteEndElement()

                .WriteStartElement("Usuario")
                .WriteString(text_Usuario.Text)
                .WriteEndElement()

                .WriteStartElement("Password")
                .WriteString(text_Password.Text)
                .WriteEndElement()

                .WriteStartElement("Correo")
                .WriteString("")
                .WriteEndElement()

                'Termina la configuracion
                .WriteEndElement()

                'Se cierra XMLTextWriter
                .WriteEndDocument()
                .Close()

            End With

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error al guardar el archivo XML")
        End Try

        crear_conexiones()

        Me.Close()
    End If
End Sub

Then go to the function create_connections ()

Public Sub crear_conexiones()

    Try

        Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath)
        Dim connectionStringsSection As ConnectionStringsSection = DirectCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
        Dim section As ConnectionStringsSection = config.ConnectionStrings
        Dim conexion As New Conectar_Servidor

        leer_XML() 'Funcion que lee el xml e inserta los datos en variables globales que son servidor, usuario, password

        'Creamos una nueva cadena de conexion
        Dim cadena_conexion_controlProduccion As New ConnectionStringSettings()
        Dim cadena_conexion_eTata As New ConnectionStringSettings()

        'Asignamos el nombre de la cadena de conexion'
        cadena_conexion_controlProduccion.Name = "conectar_controlProduccion"
        cadena_conexion_eTata.Name = "conectar_eTata"

        If (conexion.Check.Checked = True) Then
            'Damos la cadena de conexion'
            cadena_conexion_controlProduccion.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;User ID= " & Usuario & ";Password= " & Password
            cadena_conexion_eTata.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=eTata;User ID= " & Usuario & ";Password= " & Password
        Else
            'Damos la cadena de conexion'
            cadena_conexion_controlProduccion.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;Integrated Security=True"
            cadena_conexion_eTata.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=eTata;Integrated Security=True"
        End If

        'Nombre del Proveedor de datos incariable'
        cadena_conexion_controlProduccion.ProviderName = "System.Data.SqlClient"
        cadena_conexion_eTata.ProviderName = "System.Data.SqlClient"

        'Añadimes la nueva cadena de conexion al objeto connectionString section'
        connectionStringsSection.ConnectionStrings.Add(cadena_conexion_controlProduccion)
        connectionStringsSection.ConnectionStrings.Add(cadena_conexion_eTata)

        conectar_controlProduccion = New SqlConnection(cadena_conexion_controlProduccion.ConnectionString)
        conectar_eTata = New SqlConnection(cadena_conexion_eTata.ConnectionString)

        'Guardamos los cambios en el archivo de configuracion' 
        config.Save(ConfigurationSaveMode.Modified, True)

        If (test_Conection(cadena_conexion_controlProduccion.ConnectionString) = True) Then
            Panel_Principal.estado_controlProduccion.ForeColor = Color.Green
            Panel_Principal.estado_controlProduccion.Text = "Conectado"
            abrir_controlProduccion()
            abrir_controlProduccion2()
        Else
            Panel_Principal.estado_controlProduccion.ForeColor = Color.Red
            Panel_Principal.estado_controlProduccion.Text = "No Conectado"
            PanelDeControl.icono_notificacion.ShowBalloonTip(5000, "Error", "No se ha podido establecer conexión con la base de datos control Producción", ToolTipIcon.Warning)
            Conectar_Servidor.Show()
        End If

        If (test_Conection(cadena_conexion_eTata.ConnectionString) = True) Then
            Panel_Principal.estado_eTata.ForeColor = Color.Green
            Panel_Principal.estado_eTata.Text = "Conectado"
            abrir_eTata()
            abrir_etata2()
        Else
            Panel_Principal.estado_eTata.ForeColor = Color.Red
            Panel_Principal.estado_eTata.Text = "No Conectado"
            PanelDeControl.icono_notificacion.ShowBalloonTip(5000, "Error", "No se ha podido establecer conexión con la base de datos eTata", ToolTipIcon.Warning)
            Conectar_Servidor.Show()
        End If

    Catch      

 PanelDeControl.icono_notificacion.ShowBalloonTip(5000, "Error", "No se ha podido establecer conexión con las bases de datos", ToolTipIcon.Warning)
        Panel_Principal.estado_controlProduccion.ForeColor = Color.Red
        Panel_Principal.estado_controlProduccion.Text = "No Conectado"

        Panel_Principal.estado_eTata.ForeColor = Color.Red
        Panel_Principal.estado_eTata.Text = "No Conectado"

        Conectar_Servidor.Show()
    End Try
End Sub

the connections are opened (when the program opens a second time, it goes straight to this part)

Sub abrir_controlProduccion2()
    Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath)
    Dim connectionStringsSection As ConnectionStringsSection = DirectCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
    Dim conexion As New Conectar_Servidor

    leer_XML()

    Try
        'Creamos una nueva cadena de conexion
        Dim cadena_conexion_controlProduccion As New ConnectionStringSettings()

        'Asignamos el nombre de la cadena de conexion
        cadena_conexion_controlProduccion.Name = "conectar_controlProduccion"

        If (conexion.Check.Checked = True) Then
            'Damos la cadena de conexion
            cadena_conexion_controlProduccion.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;User ID= " & Usuario & ";Password= " & Password
            conectar_controlProduccion = New SqlConnection("Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;User ID= " & Usuario & ";Password= " & Password)
        Else
            'Damos la cadena de conexion
            cadena_conexion_controlProduccion.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;Integrated Security=True"
            conectar_controlProduccion = New SqlConnection("Data Source=" & Servidor & ";Initial Catalog=ControlProduccion;Integrated Security=True")
        End If

        'Nombre del Proveedor de datos incariable
        cadena_conexion_controlProduccion.ProviderName = "System.Data.SqlClient"

        ConnectionStringsSection.ConnectionStrings.Add(cadena_conexion_controlProduccion)

        conectar_controlProduccion = New SqlConnection(cadena_conexion_controlProduccion.ConnectionString)

        'Guardamos los cambios en el archivo de configuracion 
        config.Save(ConfigurationSaveMode.Full, True)

        conectar_controlProduccion.Open()
    Catch
        Panel_Principal.estado_controlProduccion.ForeColor = Color.Red
        Panel_Principal.estado_controlProduccion.Text = "No Conectado"
        Conectar_Servidor.Show()
    End Try


End Sub
Sub abrir_etata2()
    Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath)

    Dim connectionStringsSection As ConnectionStringsSection = DirectCast(config.GetSection("connectionStrings"), ConnectionStringsSection)
    Dim conexion As New Conectar_Servidor

    leer_XML()

    Try
        Dim cadena_conexion_eTata As New ConnectionStringSettings()

        cadena_conexion_eTata.Name = "conectar_eTata"

        If (conexion.Check.Checked = True) Then
            cadena_conexion_eTata.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=eTata;User ID= " & Usuario & ";Password= " & Password
            conectar_eTata = New SqlConnection("Data Source=" & Servidor & ";Initial Catalog=eTata;User ID= " & Usuario & ";Password= " & Password)
        Else
            cadena_conexion_eTata.ConnectionString = "Data Source=" & Servidor & ";Initial Catalog=eTata;Integrated Security=True"
            conectar_eTata = New SqlConnection("Data Source=" & Servidor & ";Initial Catalog=eTata;Integrated Security=True")
        End If

        cadena_conexion_eTata.ProviderName = "System.Data.SqlClient"

        connectionStringsSection.ConnectionStrings.Add(cadena_conexion_eTata)

        conectar_eTata = New SqlConnection(cadena_conexion_eTata.ConnectionString)

        config.Save(ConfigurationSaveMode.Full, True)

        conectar_eTata.Open()
    Catch
        Panel_Principal.estado_eTata.ForeColor = Color.Red
        Panel_Principal.estado_eTata.Text = "No Conectado"
        Conectar_Servidor.Show()
    End Try

End Sub

Finally, I press the button to open the dashboard and in the part of your code I have these lines.

Public Sub New()
        InitializeComponent()

        abrir_controlProduccion2()

        Try
            If (conectar_controlProduccion.State = ConnectionState.Closed) Then
                conectar_controlProduccion.Open()
            End If

            Me.DashboardSqlDataSource1.ConnectionName = "conectar_controlProduccion"
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error al cargar el dashboard.")
        End Try

    End Sub

This happens to me every time I open a dashboard.

It is worth mentioning that I made the connections of the dashboards in that way, because my software has the option to connect to different servers. (If someone has a better solution than what I have here, I would appreciate it)

Thanks in advance!

    
asked by Daniel Peña 15.06.2017 в 10:30
source

1 answer

0

I still have to add the connection data to the dashboard.

Try
            abrir_eTata(GetConexion_eTata())

            Dim sqlDataSource As New DashboardSqlDataSource("Data Source 1", GetConexion_eTata())

            Me.DataSources.Add(sqlDataSource)

            cerrar_eTata(GetConexion_eTata())
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Error al cargar el dashboard.")
End Try
    
answered by 16.06.2017 в 00:20