Visual Basic.NET - Error Insert Access

 
Vista:

Error Insert Access

Publicado por Carlos Marin (1 intervención) el 04/04/2017 07:05:33
Lee dado y no encuentro la solucion ya que siempre me sale el error

Excepción producida: 'System.Data.OleDb.OleDbException' en System.Data.dll

Información adicional: Error de sintaxis en la instrucción INSERT INTO.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click
    If TxtBank.Text = "" Then
        MessageBox.Show("Please Insert Bank Name", "Entry", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Exit Sub
    End If
    con = New OleDbConnection(cs)
    con.Open()
    Dim cb As String = "Insert Into Payments (BANK,CHECK,DATE,DETAIL, AMOUNT) VALUES ('" & TxtBank.Text & "','" & TxtCheck.Text & "','" & TxtDate.Text & "','" & TxtDetail.Text & "','" & TxtAmount.Text & ")'"
    cmd = New OleDbCommand(cb)
    cmd.Connection = con
    cmd.ExecuteReader()
    If con.State = ConnectionState.Open Then
        con.Close()
    End If
    con.Close()
    MessageBox.Show("Successfully saved", "Entry", MessageBoxButtons.OK, MessageBoxIcon.Information)
    DataGridView1.DataSource = GetData()
    con.Close()
End Sub
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error Insert Access

Publicado por Diego (190 intervenciones) el 04/04/2017 11:10:25
Hola, suponiendo que todos los campos de tu tabla son del tipo texto, entonces el uso de las comillas simples está bien. Si es asi, y los nombres de los campos de la tabla "Payments" están bien escritos, un error está al final de la instruccion, donde cierras parentesis antes de las comillas simples del valor de txtAmount.text

Tu codigo:
1
Dim cb As String = "Insert Into Payments (BANK,CHECK,DATE,DETAIL, AMOUNT) VALUES ('" & TxtBank.Text & "','" & TxtCheck.Text & "','" & TxtDate.Text & "','" & TxtDetail.Text & "','" & TxtAmount.Text & ")'"

El codigo para reemplazar:
1
Dim cb As String = "Insert Into Payments (BANK,CHECK,DATE,DETAIL, AMOUNT) VALUES ('" & TxtBank.Text & "','" & TxtCheck.Text & "','" & TxtDate.Text & "','" & TxtDetail.Text & "','" & TxtAmount.Text & "')"

Luego, el otro error que cometes es que no es un EXCECUTEREADER el que tenes que lanzar, sino un EXCECUTENONQUERY porque es una "consulta" de modificacion de datos, no de devolucion.

Otro error que veo es, que cierras en caso de estar abierta la conexion 2 veces, aqui:
1
2
3
4
If con.State = ConnectionState.Open Then
    con.Close()
End If
con.Close()

Si se cumple ese if, se cierra "con" y al salir del if, intenta volver a cerrarla, eso debe provocar una excepcion del tipo que mencionas.

Saludos y +Bytes.
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