in Deinem SQL-String ist die "ID" NULL (da nicht definiert - oder gibt's irgendwo eine globale Variable die ID heißt?) Durch die Konstruktion
Code: Alles auswählen
" = '" + ID + "' "
Code: Alles auswählen
Where "ID" = ''
Schreib mal ganz oben im Basic-Code (also an den Dateianfang) "Option Explicit" - dann kannst Du nur definierte Variablen verwenden und so etwas wie ID=NULL gibt's nicht. Ein msgbox(sqlStr) würde Dir das Statement anzeigen und Du könntest solche Fehler leichter erkennen. Mit einer print-Anweisung kannst Du dann auch gleich den Code unterbrechen...
Das Escapen von Zahlen mittels Hochkomma kann von Treiber(version) zu Treiber(version) unterschiedliche Effekte haben - prinzipiell habe ich mit MySQL nie ein String<>Integer Problem gehabt wenn der Integer in Hochkommas steht oder nicht, und das sollte bei Dir auch nicht der Fall sein.
Es ist also relativ egal ob Du Selmon = 2 oder Selmon = '2' schreibst.
Den letzten Fehler kann ich nicht nachvollziehen...
Mit
Code: Alles auswählen
was macht denn Dein Code, wenn Du den entsprechenden Teil (aus der Messagebox) kopierst und über Extras > SQL laufen lässt?