[VBA] Item verwijderen via knop uit keuzelijst

Pagina: 1
Acties:

  • Multensor
  • Registratie: Juli 2004
  • Laatst online: 20-05 13:17
Ik heb hier dus de volgende code voor gemaakt:

Private Sub Knop2_Click()
If Keuzelijst0.ItemsSelected.Count = 0 Then
MsgBox "U moet een item selecteren uit de lijst!", vbExclamation
Exit Sub
End If

If MsgBox("Weet u zeker dat u dit artikel wilt verwijderen?", vbYesNo) = vbYes Then
CurrentDb.Execute "DELETE * FROM tblKantineartikel WHERE Kantineartikelnaam = " & Me.Keuzelijst0
Me.Keuzelijst0.Requery
End If
End Sub

hij moet dus geselecteerde item uit keuzelijst0 verwijderen
maar geeft als foutmelding : Te weinig parameters. Het verwachte aantal is: 1

erhmm.


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Heb je al gezocht op het 'Listview' control op google?

Volgens mij kan je overigens het beste even kijken bij: VBNet.

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 16-05 11:22
Je moet geen * doen bij je DELETE... Zie w3schools.com.
En aangezien je kantineartikelnaam (waarom geen id?) gebruikt als sleutel, zal je waarschijnlijk ook even ' (single-quote's) om de waarde heen moeten zetten.

[ Voor 42% gewijzigd door riezebosch op 01-11-2004 13:31 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • Multensor
  • Registratie: Juli 2004
  • Laatst online: 20-05 13:17
riezebosch schreef op 01 november 2004 @ 13:30:
Je moet geen * doen bij je DELETE... Zie w3schools.com.
Hmzz dat werkt ook niet :(

erhmm.


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

O, dat had ik nog geeneens gezien...

Verder kan je ook je code even runnen met een break ertussen en dan middels de debug modes controleren hoe en wat er gebeurt. Verder zou ik persoonlijk je msgbox niet in je IF .. ELSE statement integreren...

  • Multensor
  • Registratie: Juli 2004
  • Laatst online: 20-05 13:17
Woudloper schreef op 01 november 2004 @ 13:31:
O, dat had ik nog geeneens gezien...

Verder kan je ook je code even runnen met een break ertussen en dan middels de debug modes controleren hoe en wat er gebeurt. Verder zou ik persoonlijk je msgbox niet in je IF .. ELSE statement integreren...
Ik weet niet eens hoe ik kan debuggen :)
(ultra vb noob)

erhmm.


Verwijderd

Als je de gegevens uit de tabel wilt verwijderen en het databaseveld kantineartikelnaam is tekst dan moet je er idd single qoutes om het kantineartikelnaam zetten
vb: 'Koffie' :9

Als je daarna het item ook uit de keuzelijst wilt halen moet je de methode
RemoveItem aanroepen en daarbij de index uit de lijst opgeven welk item er verwijderd dient te worden

  • Multensor
  • Registratie: Juli 2004
  • Laatst online: 20-05 13:17
Verwijderd schreef op 01 november 2004 @ 17:20:
Als je de gegevens uit de tabel wilt verwijderen en het databaseveld kantineartikelnaam is tekst dan moet je er idd single qoutes om het kantineartikelnaam zetten
vb: 'Koffie' :9

Als je daarna het item ook uit de keuzelijst wilt halen moet je de methode
RemoveItem aanroepen en daarbij de index uit de lijst opgeven welk item er verwijderd dient te worden
CurrentDb.Execute "DELETE FROM tblKantineartikel WHERE Kantineartikelnaam = " & Me.Keuzelijst0

waar moet ik dan de enkele quotes om doen want als ik het om Me.Keuzelijst0 doe dan werkt het niet

erhmm.


Verwijderd

De naam van het artikel moet tussen quotes, net als in VBA zelf. SQL slikt ook single quotes, waardoor je VBA quotes en SQL quotes (gelukkig) van elkaar te onderscheiden zijn.
Daarnaast moet je de naam van het artikel scannen op quotes en deze voor bouwen van je query escapen. Anders loopt namelijk het SQL-commando alsnog de soep in. En je programma is ineens hackbaar.

Wat je beter kan doen is het artikel nummer (waar heb je anders een primary key voor :D) opslaan in een verborgen kolom van de keuzelijst en de sleutelwaarde gebruiken voor je query. Dat scheelt je alle sores met quotes.
Pagina: 1