Ik gebruik parameterized queries in combinatie met ADO 2.8 en Access 2000. Ik werd zojuist onaangenaamd verrast door de volgende test:
Wanneer mijn locale settings op UK staat (dus punt is decimal seperator) gaat dit goed. Het veld wordt netjes geupdate met de waarde 0,5. Wanneer mijn locale settings op NL staat (dus komma is decimal seperator) gaat dit niet goed. De waarde 5 wordt in het veld gezet.
In SQL queries moet je altijd US notation gebruiken als input, dus ik zou het logisch vinden dat parameterized queries ook op deze manier werken. Wanneer ik debug blijkt dat nadat ik param.Value = "0.5" heb uitgevoerd dat het veld daarna wordt gewijzigd in de waarde 5 (bij NL regional settings). Ik ben hier niet blij mee, iemand enig idee of ik dit gedrag kan aanpassen zodat ik altijd gewoon US notation kan gebruiken?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
| Dim conn As ADODB.Connection Dim cmd As New ADODB.Command Dim param As Parameter Dim SQL As String SQL = "UPDATE MyTable SET DoubleField=@1" Set param = cmd.CreateParameter("@1", adDouble, adParamInput) param.Value = "0.5" cmd.Parameters.Append param cmd.CommandText = SQL cmd.Execute |
Wanneer mijn locale settings op UK staat (dus punt is decimal seperator) gaat dit goed. Het veld wordt netjes geupdate met de waarde 0,5. Wanneer mijn locale settings op NL staat (dus komma is decimal seperator) gaat dit niet goed. De waarde 5 wordt in het veld gezet.
In SQL queries moet je altijd US notation gebruiken als input, dus ik zou het logisch vinden dat parameterized queries ook op deze manier werken. Wanneer ik debug blijkt dat nadat ik param.Value = "0.5" heb uitgevoerd dat het veld daarna wordt gewijzigd in de waarde 5 (bij NL regional settings). Ik ben hier niet blij mee, iemand enig idee of ik dit gedrag kan aanpassen zodat ik altijd gewoon US notation kan gebruiken?
It’s nice to be important but it’s more important to be nice