Na record update: Getallen in velden

Na een update van een record in de databank via Gambas3 code, krijg ik in een aantal velden getallen als 101, 102, 103, 104.

  • De velden zijn niet opeenvolgend.
  • De velden zijn zowel van het type tekst al long.
  • De velden krijgen data uit de Gambas3 applicatie met standin &1, &2 enz.
  • Aanroep databank gebeurt met hconData.Exec(sSql, id, name, remark, ..) ; de te vervangen datavelden.
  • Ik heb dit verschijnsel niet gezien in gambas2, het komt wel voor in de twee versies van gambas3 die ik bij de hand heb: 3.9.2 en 3.7.1

Het is me niet duidelijk waar de ingevulde getallen vandaan komen, maar ze hebben wel exact hetzelfde begin als de toegekende id!
Bv
id is 9 –> velden worden 90, 91, 92, …
id is 10 –> velden worden 100, 101, 102, …

De id wordt gebruikt in het statement dat de update doet.
Het lijkt alsof in de sequentie ” veldG=&10, veldH=&11, veldI=&12 ” de &1 onmiddellijk ingevuld wordt (en daarin wordt net die id gegeven), en de rest van het getal er gewoon aangeplakt wordt.

In mijn geval werd in &1 de record id gegeven waarop het record geselecteerd wordt:
WHERE id =&1

Oplossing:
In de reeks “it’s not a bug, it’s a feature”:
http://gambaswiki.org/wiki/doc/gb2togb3

Blijkbkaar is het vanaf Gambas versie 3 nodig om de parameters boven 9 tussen accolades te zetten:

SQL errors with database methods Arguments of DB.Exec() and DB.Subst() above nine now must be enclosed with {} now.

Dus de parameters boven 9 moeten speciaal aangeduid worden:

veldG=&{10}, veldH=&{11}, veldI=&{12}

Of zoals in de wiki:

MyConnection.Exec("UPDATE devices "
"SET name = &1, module = &2, "
"interface = &3, address = &4, "
"location = &5, label = &6, "
"label2 = &7, label3 = &8, "
"value = &9, officon = &{10}, "
"onicon = &{11}")

This entry was posted in Gambas3. Bookmark the permalink.