Unser Access Client generiert on the fly SQL-Inserts, Update- und Delete-Anweisungen, die an einen MS-SQL Server gesendet werden. Die meisten Benutzer haben die Runtime-Version von Access 2007, und einige wenige verwenden die vollständige MS-Access-Version, 2003 oder 2007. Heute Morgen konnte einer unserer neuen Benutzer im Ausland, der eine französische/komplette Version von Access 2003 verwendet, keine Daten aktualisieren, die boolesche Felder enthalten.
Es stellte sich heraus, dass diese Felder in der französischen Version von Access mit "Vrai/Faux"- anstatt mit "True/False"-Werten befüllt werden. Das Problem wurde durch die Installation der Access-Laufzeitversion 2007 gelöst.
Aber ich möchte eine dauerhafte Lösung finden, bei der ich von irgendwoher ablesen kann, welche lokalisierte Version von Access verwendet wird, und die lokalisierten Wahr/Falsch-Werte in standardmäßige Wahr/Falsch-Werte "übersetzen" kann. Ich habe bereits die regionalen Einstellungen des Computers überprüft, ohne Erfolg, also liegt es irgendwo anders. Irgendeine Idee?
EDIT: Nach dem Vorschlag von JohnFX ist es tatsächlich möglich, mit dieser einfachen Funktion von lokalem True/False in universelles True/False zu konvertieren:
Function xBoolean(xLocalBooleanValue) as Boolean
if cint(xLocalBooleanValue) = -1 Then
xBoolean = True
endif
if cint(xLocalBooleanValue) = 0 Then
xBoolean = False
endif
end function
EDIT: Nach den Kommentaren von @David habe ich die bevorzugte Lösung geändert. Sein Vorschlag ist schlauer als meiner.
EDIT: Ich erhalte die Vrai/Faux-Werte, indem ich den Wert eines Feldes in einem Recordset lese:
? debug.print screen.activeForm.recordset.fields(myBooleanField).value
Vrai