login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Syntaxis error (missing operator)

Offline rredspike1 - 07/01/2009 16:06
Avatar van rredspike1Lid Krijg een error:
Syntax error (missing operator) in query expression 'Geeft echt wel veel licht!!'.
OleDbException was unhandled

Wat betekend dit en wat moet ik eraan veranderen?

  1. Private Sub ProductWijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductWijzigen.Click
  2.  
  3. Dim Productnaam = txtProductnaam.Text
  4. Dim Aantal = txtAantal.Text
  5. Dim Prijs = txtPrijs.Text
  6. Dim Omschrijving = txtOmschrijving.Text
  7. Dim Categorie = comCategorie.Text
  8.  
  9. SQL = "UPDATE Producten SET Productnaam = " & Productnaam & ", Aantal = " & Aantal & ", Prijs = " & Prijs & ", Categorie = " & Categorie & ", Omschrijving = " & Omschrijving & " WHERE Productnr = " & ID
  10. Dim cmd As New OleDb.OleDbCommand(SQL, oCon)
  11. oCon.Open()
  12. cmd.ExecuteNonQuery()
  13. oCon.Close()
  14. LoadProducten()
  15.  
  16. End Sub

10 antwoorden

Gesponsorde links
Offline Abbas - 07/01/2009 16:15 (laatste wijziging 07/01/2009 16:17)
Avatar van Abbas Gouden medaille

Crew .NET
Variabelen met hun type declareren is altijd beter! En bij getallen eventueel eerst nog een controle doen op IsNumeric() om te zien of het wel getallen zijn!

  1. Dim Productnaam As String = txtProductnaam.Text
  2. Dim Aantal As Integer = CInt(txtAantal.Text)
  3. Dim Prijs As Integer = CInt(txtPrijs.Text)
  4. Dim Omschrijving As String = txtOmschrijving.Text
  5. Dim Categorie As String = comCategorie.Text


In je SQL-string zet je string-variabelen tussen single en double quotes, getallen enkel tussen double quotes!
  1. SQL = "UPDATE Producten SET Productnaam = '" & Productnaam & "', Aantal = " & Aantal & ", Prijs = " & Prijs & ", Categorie = '" & Categorie & "', Omschrijving = '" & Omschrijving & "' WHERE Productnr = " & ID


Edit:
In je foutmelding zie je staan "OleDbException was unhandled". Dit kan je gemakkelijk opvangen door Exception Handling toe te passen!
Offline rredspike1 - 07/01/2009 16:20 (laatste wijziging 07/01/2009 16:25)
Avatar van rredspike1 Lid Die Aantal en die Prijs staan als string.. in de database..maargoed..

Krijg nu geen fout meer het pas niks aan..als ik op die knop druk

  1. Private Sub ProductWijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductWijzigen.Click
  2.  
  3. Dim Productnaam As String = txtProductnaam.Text
  4. Dim Aantal As String = txtAantal.Text
  5. Dim Prijs As String = txtPrijs.Text
  6. Dim Omschrijving As String = txtOmschrijving.Text
  7. Dim Categorie As String = comCategorie.Text
  8.  
  9. Try
  10. oCon.Open()
  11. SQL = "UPDATE Producten SET Productnaam = '" & Productnaam & "', Aantal = '" & Aantal & "', Prijs = '" & Prijs & "', Categorie = '" & Categorie & "', Omschrijving = '" & Omschrijving & "' WHERE Productnr = " & ID
  12. Catch ex As Exception
  13. Dim cmd As New OleDb.OleDbCommand(SQL, oCon)
  14. cmd.ExecuteNonQuery()
  15. Finally
  16. oCon.Close()
  17. LoadProducten()
  18. End Try
  19.  
  20. End Sub
Offline Abbas - 07/01/2009 16:28
Avatar van Abbas Gouden medaille

Crew .NET
Dan moet je je query ook aanpassen! 

  1. Private Sub ProductWijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProductWijzigen.Click
  2.  
  3. Dim Productnaam As String = txtProductnaam.Text
  4. Dim Aantal As String = txtAantal.Text
  5. Dim Prijs As String = txtPrijs.Text
  6. Dim Omschrijving As String = txtOmschrijving.Text
  7. Dim Categorie As String = comCategorie.Text
  8.  
  9. SQL = "UPDATE Producten SET Productnaam = '" & Productnaam & "', Aantal = '" & Aantal & "', Prijs = '" & Prijs & "', Categorie = '" & Categorie & "', Omschrijving = '" & Omschrijving & "' WHERE Productnr = " & ID
  10. Dim cmd As New OleDb.OleDbCommand(SQL, oCon)
  11.  
  12. Try
  13. oCon.Open()
  14. cmd.ExecuteNonQuery()
  15. Catch x As Exception
  16. MessageBox.Show(x.Message)
  17. Finally
  18. oCon.Close()
  19. LoadProducten()
  20. End Try
  21.  
  22. End Sub


Maar zeg, is die 'ID' wel gekend? Want ik zie nergens waar die een waarde heeft?! 
Offline rredspike1 - 07/01/2009 16:31 (laatste wijziging 07/01/2009 16:46)
Avatar van rredspike1 Lid Het geeft nergens een fout...maar zal eens kijken

Die ID is dit:
  1. ID = GridOpdrProducten.Rows(index).Cells("Productnr").Value.ToString
Offline Abbas - 07/01/2009 16:50
Avatar van Abbas Gouden medaille

Crew .NET
En waar krijgt die z'n value? Want die staat nergens in de Sub "productWijzigen"! 
Offline rredspike1 - 07/01/2009 17:51
Avatar van rredspike1 Lid Die staat in een andere procedure
Offline Wim - 07/01/2009 18:27
Avatar van Wim Crew algemeen Dim Prijs As Integer = CInt(txtPrijs.Text)

Prijs is een Double, integers ondersteunen geen komma's!

Zet onder die ID = ... eens:
Messagebox.show("ID: " & ID.ToString) en zeg eens wat de output is? Zelf al een beetje debuggen kan geen kwaad hoor...
Offline rredspike1 - 07/01/2009 18:54 (laatste wijziging 07/01/2009 18:57)
Avatar van rredspike1 Lid Output: ID: 0

  1. Private Sub GridRegels_Opdrachten_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles GridRegels_Opdrachten.DragDrop
  2. Dim index As Integer = Convert.ToInt32(e.Data.GetData(Type.GetType("System.Int32")))
  3. ID = 0
  4. ID = GridOpdrProducten.Rows(index).Cells("Productnr").Value.ToString
  5. cmdToevoegen_Click(sender, EventArgs.Empty)
  6. End Sub


Beetje debuggen kan geen kwaad, nee inderdaad!
Daarom doe ik dit ook 
Offline Abbas - 07/01/2009 22:36
Avatar van Abbas Gouden medaille

Crew .NET
Waarom zet je die ID op 0?! 
Offline rredspike1 - 07/01/2009 23:00
Avatar van rredspike1 Lid Ik heb werkelijk geen idee hahaha
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s