|  21.04.2005, 14:23 | #1 | 
| Administrator | Чтение данных из SQL Server через ODBC. Не работает в 3-х звенке 
			
			Всем здравствуйте! Имеется следующая проблема (Ax 3.0SP3): Хочется считать поле типа дата из скуля через ODBC (варианты Connection, UserConnection или ADO я и так знаю, вопрос конкретно про ODBC). Так вот - из под двухуровневой конфигурации приведенный ниже Job работает нормально. А вот из-под 3-х уровневой - Axapta рушится при вызове оператора getDate. PHP код: 
			ODBC 'ODBCSQL' настроена на скуль, аутенфикация виндовая (со скульной те же траблы); указана конкретная база на серваке. Скуль сам локальный, прав хватает :-) Вопрос - сталкивался ли кто с подобной проблемой ? Дебаггер показывает что все объекты создаются на клиенте - т.е. фактически 3-шка ничем не должна по идее отличаться от двушки | 
|  | 
|  21.04.2005, 14:27 | #2 | 
| Administrator | 
			
			ODBC локальная. Я полагаю, что такая ситуация могла бы возникнуть - если бы AOS стал бы пытаться достучаться до локального SQL, не смог.. а разработчики ядра не удосужились бы в этом месте сделать лишнюю проверку. Axapta рушится - с предложением отправить отчет в Microsoft :-)...(Уж можно было бы сразу в MBS :-)) | 
|  | 
|  30.05.2005, 16:42 | #3 | 
| Участник | 
			
			Нарвался абсолютно на те же самые грабли. Ситуация 1 в 1, за исключением того, что аутентификация сиквельная. Именно на ODBCConnection, именно на АОСе и падает именно на getDate (после чтения любого поля типа дата из любой таблицы). Что интересно, getString, getInt и getReal в такой же ситуации проходят на ура... Таки никто не решал такую проблему? 
				__________________ Здесь могла быть Ваша реклама! | 
|  | 
|  30.05.2005, 17:08 | #4 | 
| Administrator | 
			
			проблема была обойдена   следующий код разрешил неразрешимое  PHP код: 
			 | 
|  | 
|  30.05.2005, 17:09 | #5 | 
| Administrator | 
			
			нельзя сказать что решение идеальное - но внутренние нужды оно удовлетворило
		 | 
|  | 
|  30.05.2005, 17:14 | #6 | 
| Участник | 
			
			Не знаю, что там в 3.0, но в 2.5 - никаких проблем. Правда я подключался не через DSN, а напрямую строку соединения загонял, что-то вроде LP.setOther("DRIVER=SQL Server;SERVER=MyServer;DataBase=MyBase;Trusted_Connection=Yes"); Возможно, проблема с региональными настройками. Либо в DSN, либо в самом Windows. | 
|  | 
|  30.05.2005, 17:24 | #7 | 
| Administrator | 
			
			Тот факт, что проблема с датой однозначно указывает на корни проблемы - региональные настройки. Однако, очень часто у пользователей стоит русский Windows (в моем случае в т.ч. Access), а тот же SQL Server однако может быть не совсем русский   Предложенный способ (кстати там опечатка - odbcGetInfoStr - это не функция, а метод класса OdbcConnection) - не претендует на универсальность, однако помогает избегать проблем с региональными настройками. Более того, я даже считаю, что разобравшись правильно с региональными настройками, эту проблему скорее всего можно избежать, однако в качестве "быстрого" решения - сия заплатка была придумана, т.к. сия проблема не стоит того, чтобы с ней возиться весь день | 
|  | 
|  30.05.2005, 17:52 | #8 | 
| Участник | 
			
			Предложенный способ - это вообще не решение! Это способ по быстрому обойти проблему не особо с ней разбираясь. Это что же, в каждом запросе надо делать конвертацию даты в строку? То, что стоит у пользователя, вряд ли имеет принципиальное значение. Надо смотреть настройки DSN и настройки СЕРВЕРА. Проверь, не стоит ли в настройках DSN "птичка" в пункте Use regional settings when outputting currency, numbers, dates, and times. Кстати, если установить связь не через DSN, а через строку подключения глюк остается? | 
|  | 
|  | 
| 
 |