Błąd składni polecenia UPDATE w Access-ie

0

Witam!
Nie mogę dodać nowe rekordu do bazy danych w Access , program który pisze w ramach nauki w VB. Wyskakuje mi błąd składni polecenia UPDATE. co robie źle.

Public Class Form2

    Dim c As New System.Data.OleDb.OleDbConnection
    Dim ds As New DataSet
    Dim da As System.Data.OleDb.OleDbDataAdapter
    Dim sql As String
    Dim pozycja As Integer
    Dim ile As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cinek_000\Desktop\Towary2.mdb"

        sql = "SELECT * FROM Tabela1"
        da = New OleDb.OleDbDataAdapter(sql, c)
        da.Fill(ds, "Tabela1")
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Anuluj.Click
        Close()
    End Sub

    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

    End Sub

    Private Sub Dodaj_Click(sender As Object, e As EventArgs) Handles Dodaj.Click

       

        UpdateRecord()
        Dim addNewRec As New System.Data.OleDb.OleDbCommand()
        addNewRec.Connection = c
        addNewRec.CommandText = "INSERT INTO Tabela1 ([Nazwa Towaru], [Ilość], [Cena]) VALUES ('','','')"

        c.Open()
        addNewRec.ExecuteNonQuery()
        c.Close()


        pozycja = 0

        








    End Sub

    Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged

    End Sub

    Private Function App() As Object
        Throw New NotImplementedException
    End Function
    Private Sub UpdateRecord()
        Dim cb As New OleDb.OleDbCommandBuilder(da)


        ds.Tables("Tabela1").Rows(pozycja).Item(1) = NazwaTowaru.Text
        ds.Tables("Tabela1").Rows(pozycja).Item(2) = IloscTowaru.Text
        ds.Tables("Tabela1").Rows(pozycja).Item(3) = CenaTowaru.Text

        da.Update(ds, "Tabela1")
    End Sub

End Class
1
  1. Wywal z nazw obiektów PLiterki, spacje i inne badziewia.
  2. Nazwij porządnie tabelę.
  3. W obu przypadkach staraj się nie używać słów kluczowych SQL-a.
  4. Na koniec sprawdź, czy nadal masz błędy. jeśli tak, to wróć tu z DDL tabeli
0

Błąd z poleceniem update znikł, ale jest kolejny trochę pozmieniałem kod programu ale kompilator w Visual Studio teraz mi wyrzuca błąd: SKŁADNI Insert in to

Public Class Form2

    Dim c As New System.Data.OleDb.OleDbConnection
    Dim ds As New DataSet
    Dim da As System.Data.OleDb.OleDbDataAdapter
    Dim sql As String
    Dim pozycja As Integer
    Dim ile As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\cinek_000\Desktop\Towary2.mdb"

        sql = "SELECT * FROM Tabela1"
        da = New OleDb.OleDbDataAdapter(sql, c)
        da.Fill(ds, "Tabela1")
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Anuluj.Click
        Close()
    End Sub

    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

    End Sub

    Private Sub Dodaj_Click(sender As Object, e As EventArgs) Handles Dodaj.Click
        Timer1.Start()

       
        UpdateRecord()

        Dim dsNewRow As New System.Data.OleDb.OleDbCommand()
        dsNewRow.Connection = c
        dsNewRow.CommandText = "INSERT INTO Tabela1  (Nazwa Towaru, Ilość, Cena) VALUES ('','','')"

        c.Open()
        dsNewRow.ExecuteNonQuery()
        c.Close()


        pozycja = 0

        








    End Sub

    Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged

    End Sub

    Private Function App() As Object
        Throw New NotImplementedException
    End Function
    Private Sub UpdateRecord()
        If pozycja <> -1 Then
            Dim cb As New OleDb.OleDbCommandBuilder(da)
            Dim dsNewRow As DataRow
            dsNewRow = ds.Tables("Tabela1").NewRow()
            dsNewRow.Item(1) = Nazwatowaru.Text
            dsNewRow.Item(2) = Ilosctowaru.Text
            dsNewRow.Item(3) =
            ds.Tables("Tabela1").Rows.Add(dsNewRow)
            da.Update(ds, "Tabela1")
            MsgBox("Nowy przedmiot zostal dodany!")


        End If


    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(1)
        If ProgressBar1.Value = ProgressBar1.Maximum Then

        End If

    End Sub

    Private Sub NazwaTowaru_TextChanged(sender As Object, e As EventArgs) Handles Nazwatowaru.TextChanged

    End Sub
End Class
0

i oczywiście zastosowałeś się do uwag Marcina... Po jaką cholerę pytasz jak i tak lejesz ciepłym moczem na dawane ci wskazówki???

Poza tym piszesz i w temacie i w poście o problemach z UPDATE a w kodzie jest INSERT!.

A co do błędu to jak się ma debilne nazwy pól w tabeli to i błędy wyskakują

0

Dzięki
Zrobiłem wszystko tak jak Marcin pisał i dodaje teraz do bazy fizycznie bo jak w nią wejdę widzę te nowe rekordy, ale po pewnym czasie program się wywala z błędem o treść: Nieodpowiedni typ danych w wyrażeniu kryterium odnosi się to pola o formatowaniu waluta i liczba, gdy ustawione jest na tekst wszystko jest dobrze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1