Замена "/" -> "-" в SqlDb.AddItem правильно, но недостаточно.
Дело в том, что локальные ODBC-драйверы (Jet и FoxPro) воспринимают только американский формат "MM-DD-YYYY".
Проще всего использовать "ODBC escape sequences" {d’2006-09-05’}
Код:
ELSIF (mod = "Dates") & (typ = "Date") THEN
item.GetVal(dv, ok); ASSERT(ok, 101);
IF (dv.value.year = 0) & (dv.value.month = 0) & (dv.value.day = 0) THEN
AddStr(nullStr, FALSE, 4, s)
ELSE
IF ~native THEN AddStr("{d'", TRUE, 3, s) END;
Strings.IntToString(dv.value.year, h);
AddStr(h, FALSE, 8, s); AddChar("-", s);
Strings.IntToStringForm(dv.value.month, Strings.decimal, 2, "0", FALSE, h);
AddStr(h, FALSE, 4, s); AddChar("-", s);
Strings.IntToStringForm(dv.value.day, Strings.decimal, 2, "0", FALSE, h);
AddStr(h, FALSE, 4, s);
IF ~native THEN AddStr("'}", TRUE, 2, s) END
END
Правда, это только для ODBC, но других драйверов все равно нет.