Een lege datum invullen in de databank: NOT NULL?

Bij het updaten van een record krijg ik een eigenaardige foutmelding dat ik een verkeerde waarde “11” probeer in te vullen in een datumveld “dateout”.

Een ander veld met datum werkt wel goed, maar dat wordt dan ook wel van gegevens voorzien, namelijk de huidige datum van de update.

Public Sub updateProduct(id As Long, longname As String, shortname As String, ourname As String, purpose As String, remark As String, sup_id As Integer, sup_nick As String, sup_qty As Float, sup_qtypack As String, datein As Date, dateout As Date, sdsdate As Date, sdsfile As String, sdsok As Integer, active As Integer) As Boolean 

  Dim sSql As String 
  Dim myResult As Result 

  sSql = "UPDATE product SET "
  sSql &= "name=&2"
  ...
  sSql &= ", sup_qty=&9"
  sSql &= ", sup_qtypack=&10"
  sSql &= ", dateout=&11"
  ...
  sSql &= ", active=&16"
  sSql &= ", updat=NOW()"
  sSql &= ", updby=&17"
  sSql &= " WHERE id =&1 " 

If goConnect()
  Try $hconData.Exec(sSql, id, name, ..., sup_qty, sup_qtypack, dateout, ...., active, System.User.Name)
Else
  ...
Endif

Het enige wat ik met wat opzoekwerk kan vaststellen is dat die 11 niet de waarde is die ik stuur naar de databank, maar wel het volgnummer van de parameter in de parameterlijst die naar het commando wordt gegeven; zoals in:

hConData.Exec(sSql, par1, par2, par3, par4, par5, par6, par7, par8, par9, par10, par11, par12)

Ik stuur bij de update inderdaad alle velden naar de mysql-verwerker, zodat ik maar 1 update procedure moet maken.

Voor tekstvelden is het niet erg om een lege string “” te sturen, dat werkt.
Maar bij een datum? Wat moet je daar sturen? Null? NULL? “NULL”?
Na een paar pogingen werkt het terug als ik de datumvelden niet stuur met parameters, maar vervang door de tekst veld=NULL, als in:

  Dim sSql As String 
  Dim myResult As Result 

  sSql = "UPDATE product SET "
  sSql &= "name=&2"
  ...
  sSql &= ", sup_qty=&9"
  sSql &= ", sup_qtypack=&10"
  
  If dateout = Null
    sSql &= ", dateout=NULL"
  Else
    sSql &= ", dateout=&11"
  Endif
  ...
  sSql &= ", active=&16"
  sSql &= ", updat=NOW()"
  sSql &= ", updby=&17"
  sSql &= " WHERE id =&1 " 

If goConnect() 
    Try $hconData.Exec(sSql, id, name, ..., sup_qty, sup_qtypack, dateout, ...., active, System.User.Name)
Else
  ...
Endif

This entry was posted in Databank, Gambas3. Bookmark the permalink.