При предоставлении дат для хранимой процедуры через параметр я немного запутался в том, какой формат использовать для дат. Мой оригинальный синтаксис 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.