При передаче дат хранимой процедуре через параметр я немного запутался в том, какой формат использовать для дат. Мой исходный синтаксис VBA использовал объект ADO Connection для выполнения хранимой процедуры:
Set SentDetailRS = Me.ADOConnectionToIntegrity.Execute("dbo.s_SelectAggregatedSentDetailList '" & fCSQLDate(EffectiveDate) & "'", , adCmdText)
Это отлично работает для меня, используя синтаксис даты yyyy-mm-dd
, но когда другой пользователь выполняет код, он получает ошибку: 13 «Несоответствие типов».
После некоторых экспериментов я обнаружил, что предоставление даты в формате dd/mm/yyyy
исправляет эту ошибку для пользователя, но теперь выдает ошибку мне!
Выполнение хранимой процедуры с использованием командного объекта с параметрами работает независимо от формата даты (я предполагаю, что ADO заботится о форматировании за кулисами). Я думал, что использование формата yyyy-mm-dd
будет универсально работать с SQL Server?
Я также озадачен тем, почему эта проблема кажется специфичной для пользователя? Я заметил, что мой язык по умолчанию в SQL Server — «английский», тогда как язык другого пользователя по умолчанию — «британский английский». Может ли это вызвать проблему?
Я использую ADO 2.8 с Access 2003 и SQL Server 2000, вход в SQL Server осуществляется через встроенную систему безопасности Windows.