Ik vul de datum in vanuit een Gambas programma met een string sDocDate
die de datum in het formaat “2008-07-31″ bevat.
Als ik het record ophaal, eventueel wijzig en terug bewaar, krijg ik echter een lege datum in de databank, waarschijnlijk als gevolg van een foute invoer.
Als ik naar het formaat kijk waarin de datum weergegeven wordt zie ik al het probleem: een andere datumindeling: “07/31/2008″, dus eerst de maand, dan de dag en dan het jaar. (op het scherm met txbxDate.Text= $hInvoice.sInvDate
)
Als diezelfde string terug bewaard wordt, of vervangen wordt door een andere onjuiste datum-vorm onstaat een probleem.
Oorzaak is waarschijnlijk de localisatie (US) van het systeem waar ik nu op werk.
Dat valt te voorkomen door de datumstring die je ophaalt om te zetten in een datum en daarna terug te formatteren als datum zoals je die wil:
txbxDate.Text = Format(CDate(FMain.$hInvoice.sInvDate), "yyyy-mm-dd")
Achtergrond:
Een databank heeft een tabel “inv” met facturen die een factuurdatum hebben in het veld “inv_docdate”.
Er is een connectie naar de databank $hConDb
en een Class ClsInvoice
die sInvDate AS String
bevat.
De data wordt uit de databank gehaald met een resultset:
PRIVATE $hConDb AS NEW Connection
SELECT * FROM inv WHERE inv_id='" & sId & "'"
TRY myResult = $hConDb.Exec(sSql)
waarbij de handle naar de databank hConDB is
txbxDate.Text= $hInvoice.sInvDate