1

I'm creating a form using visual basic windows forms app to insert data into my access database. I have used a code I found on this website, but for me it doesn't work. Although it doesn't give any errors when I run it, it also doesn't add the filled in data to my access database.

This is the code I have:

Imports System.Data.OleDb
Public Class Form1

    Private Sub AddBtn_Click(sender As Object, e As EventArgs) Handles AddBtn.Click
        Try
            Dim sqlconn As New OleDb.OleDbConnection
            Dim sqlquery As New OleDbCommand
            Dim connstring As String
            connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Dietapp.accdb"
            sqlconn.ConnectionString = connstring
            sqlquery.Connection = sqlconn
            sqlconn.Open()
            sqlquery.CommandText = "INSERT INTO Products ([CategorieID], [Productname], [Portion_size_gram], [Energy_100g], [Fat_100g], [Fibers_100g], [Protein_100g], [Carbohydrates_100g], [Ch_sugars_100g], [Sodium_100g], [Gluten], [Lactose], [Egg], [Nuts], [Fish_scale_shell], [Vegetarian], [Vegan]) VALUES (@Categorie,@Productname,@Portionsize,@Energy,@Fat,@Fibers,@Protein,@Carbohydrates,@Sugars,@Sodium,@Gluten,@Lactose,@Egg,@Nuts,@Fish,@Vegetarian,@Vegan)"

            sqlquery.Parameters.AddWithValue("@Categorie", CategorieTxt.Text)
            sqlquery.Parameters.AddWithValue("@Productname", ProductnameTxt.Text)
            sqlquery.Parameters.AddWithValue("@Portionsize", PortionsizeTxt.Text)
            sqlquery.Parameters.AddWithValue("@Energy", EnergyTxt.Text)
            sqlquery.Parameters.AddWithValue("@Fat", FatTxt.Text)
            sqlquery.Parameters.AddWithValue("@Fibers", FibersTxt.Text)
            sqlquery.Parameters.AddWithValue("@Protein", ProteinTxt.Text)
            sqlquery.Parameters.AddWithValue("@Carbohydrates", CarbohydratesTxt.Text)
            sqlquery.Parameters.AddWithValue("@Sugars", SugarsTxt.Text)
            sqlquery.Parameters.AddWithValue("@Sodium", SodiumTxt.Text)
            sqlquery.Parameters.AddWithValue("@Gluten", GlutenTxt.Text)
            sqlquery.Parameters.AddWithValue("@Lactose", LactoseTxt.Text)
            sqlquery.Parameters.AddWithValue("@Egg", EggTxt.Text)
            sqlquery.Parameters.AddWithValue("@Nuts", NutsTxt.Text)
            sqlquery.Parameters.AddWithValue("@Fish", FishTxt.Text)
            sqlquery.Parameters.AddWithValue("@Vegetarian", Vegetarian.Text)
            sqlquery.Parameters.AddWithValue("@Vegan", VeganTxt.Text)

            sqlquery.ExecuteNonQuery()
            sqlconn.Close()

            MessageBox.Show("Record saved")
            Update()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

End Class
Han
  • 3,052
  • 2
  • 22
  • 31
Panda
  • 11
  • 1
  • Do you get "Record saved" confirmation? – Md. Suman Kabir Dec 10 '21 at 16:22
  • The following may be helpful: https://stackoverflow.com/questions/69624053/converting-access-ole-object-image-to-show-in-datagridview-vb-net/69638011#69638011 – Tu deschizi eu inchid Dec 10 '21 at 19:30
  • 1
    The first field is `CategoryID`. That sounds like it could be an Integer field, perhaps a foreign key. You are passing a string from a text box. If you were using the `Add` method instead of `AddWithValue`, you would be forced to provide the datatype of the parameter. – Mary Dec 11 '21 at 08:31
  • @Md.SumanKabir I do get the confirmation, but when I open the database in access the row isn't added. – Panda Dec 11 '21 at 16:10

0 Answers0