Visual Basic - Error "el formato de la cadena de iniciación no se ajusta..."

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Dante

Error "el formato de la cadena de iniciación no se ajusta..."

Publicado por Dante (3 intervenciones) el 16/03/2017 02:21:04
Hola que tal foro, el motivo de mi mensaje, es ver si me pudieran ayudar a resolver una error que sale en mi programa al ejecutarlo, el mensaje que me sale es: "El formato de la cadena de iniciación no se ajusta a la especificación que comienza en el indice 0", mi programa consta de una base de datos en Access (ahí todo a la perfección), el problema es al visualizarla en un DGV me sale ese error, a continuación les dejo mi código, a ver si me pueden ayudar, gracias, saludos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Imports System.Data.OleDb
Public Class Form1
    Public conex As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=base.accdb")
    ' Por medio de este objeto voy a enviar todos los comandos de SQL a la tabla por medio de la conexión
    Public comm As New OleDb.OleDbCommand
    ' Declaro una variable para armar la instrucción SQL
    Dim sql As String
    ' Al cargar la aplicación, intenta conectarse a la base de datos
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call cargarLibros()
        Try
            ' Trato de abrir la conexión
            conex.Open()
            ' Inicializo el objeto Command
            comm.Connection = conex
            comm.CommandType = CommandType.Text
        Catch ex As Exception
            If Err.Number = 5 Then
                MsgBox("No se pudo encontrar el archivo de la base de datos", MsgBoxStyle.Exclamation, "base")
                End
            Else
                MsgBox(Err.Description, MsgBoxStyle.Exclamation, "base")
            End If
        End Try
    End Sub
 
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
 
 
        If ComboBox1.Text = "" Then
            ' Si no lo escribió, mando mensaje de error
            MsgBox("Debe incluir una respuesta de purga del libro")
            TextBox1.Select()
        Else
 
            ' Armo la instrucción INSERT en la variable SQL
            sql = "INSERT INTO Libros (Folio,Turno,Realizo,[Temperatura de agua de alimentacion],Solidos,Cloruros,pH,Dureza,Purga,[Presion de vapor],[Presion de gas],[Temperatura de gases de chimenea],Hora,Observacion) VALUES ( @folio, @turno, @realizo, @[temperatura de agua de alimentacion], @solidos, @cloruros, @ph, @dureza, @purga, @[presion de vapor], @[presion de gas], @[temperatura de gases de chimenea], @observacion, @folio )"
 
            comm.Parameters.AddWithValue("@hora", Convert.ToDateTime(TextBox10.Text))
            comm.Parameters.AddWithValue("@turno", ComboBox1.Text)
            comm.Parameters.AddWithValue("@realizo", ComboBox2.Text)
            comm.Parameters.AddWithValue("@[temperatura de agua de alimentacion]", TextBox1.Text)
            comm.Parameters.AddWithValue("@solidos", TextBox2.Text)
            comm.Parameters.AddWithValue("@cloruros", TextBox3.Text)
            comm.Parameters.AddWithValue("@ph", TextBox4.Text)
            comm.Parameters.AddWithValue("@dureza", TextBox5.Text)
            comm.Parameters.AddWithValue("@purga", ComboBox3.Text)
            comm.Parameters.AddWithValue("@[presion de vapor]", TextBox6.Text)
            comm.Parameters.AddWithValue("@[presion de gas]", TextBox7.Text)
            comm.Parameters.AddWithValue("@[temperatura de gases de chimenea]", TextBox8.Text)
            comm.Parameters.AddWithValue("@observacion", TextBox11.Text)
            comm.Parameters.AddWithValue("@folio", TextBox9.Text)
            ' Asigno la instrucción SQL que se va a ejecutar
            comm.CommandText = sql
 
            Try
                comm.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(Err.Description, MsgBoxStyle.Exclamation, "base")
            End Try
        End If
 
    End Sub
 
 
    Private Sub TextBox9_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged
 
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim fecha As DateTime = DateTime.Now
        TextBox9.Text = fecha.ToString("ddMMyy")
        Me.TextBox9.Enabled = False
    End Sub
 
 
    Public Sub cargarLibros()
        Try
            Using con As New OleDbConnection("conex")
 
                Dim query = "Select Folio, Turno, Realizo, [Temperatura de agua de alimentacion], Solidos, Cloruros, pH, Dureza, Purga, [Presion de vapor], [Presion de gas], [Temperatura de gases de chimenea], Hora, Observacion from Libros"
 
                Dim adap As New OleDbDataAdapter(query, con)
 
                Dim dt As New DataTable
 
                'Cargamos el DataTable con el resultado de la consulta
                adap.Fill(dt)
 
                'Asignamos la tabla al DGV
                DataGridView1.DataSource = dt
 
            End Using
        Catch ex As Exception
            'Si se produce algún error lo mostramos
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
End Class
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
Imágen de perfil de Edward
Val: 152
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Error "el formato de la cadena de iniciación no se ajusta..."

Publicado por Edward (57 intervenciones) el 16/03/2017 06:01:41
Buen día para todos,

Dante, Observando el codigo que compartes puedo analizar varias cosas como por ejemplo en esta linea creas la conexión declarando un nuevo objeto de tipo OleDbConnection y le antepones OleDb que estaria demas.

1
Public conex As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=base.accdb")

Ahora bien en el procedimiento cargarlibros() vuelve y creas un nuevo objeto de conexión que ya no seria necesario porque ya esta creado, debio a que al comiendo del proyecto lo declaraste global.

1
Using con As New OleDbConnection("conex")

Seguido analizando tu codigo puedo ver que en tu cadena de conexion no indicas que ruta esta la base de datos.

1
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=base.accdb"


Si es una ruta diferente a la del proyecto de deberia quedar asi.

1
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\micarpeta\base.accdb"

Si la ruta del archivo de base de datos es la misma de tu proyecto te deberia quedar asi.

1
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\base.accdb"

Aparte tambien puedo observar que la linea de la consulta SQL declaras una variable query pero no indicas de que tipo es la variable si es String debe quedar Dim query as String.

1
Dim query = "Select Folio, Turno, Realizo, [Temperatura de agua de alimentacion], Solidos, Cloruros, pH, Dureza, Purga, [Presion de vapor], [Presion de gas], [Temperatura de gases de chimenea], Hora, Observacion from Libros"


Te comparto un link donde puedes encontrar mas información sobre las cadenas de conexión.

https://www.connectionstrings.com/access/


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
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