AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.01.2007, 16:09   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Зачем так рано сдаваться-то?

Обнаружил два способа борьбы:
1. добавить во фрагмент ConnectionString "Extended Properties='Excel 8.0;HDR=Yes'" подстроку "IMEX=1", чтобы получилось "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'" (при этом как минимум одно из первых 8 значений должно быть текстом)
2. добавить ведущий апостроф (известный способ в Excel) в те ячейки первых 8 строк, которые выглядят как числовые ( 150300 => '150300 )

Далее, у меня получились следующие результаты исследования:
1. MAXSCANROWS при использовании из Аксапты у меня не почему-то не заработал (т.е. всегда всё определяли первые 8 строк)

2. тип данных в конкретном поле ADO определяет по значениям в первых 8 строках (даже при MAXSCANROWS=1 и при MAXSCANROWS=16; и даже при MAXSCANROWS=0, когда по идее должны сканироваться все записи таблицы)
2.1. если в первых 8 строках 5 текстовых значений и 3 числовых, то тип поля принимается как ТЕКСТ
2.2. если в первых 8 строках 3 текстовых значений и 5 числовых, то тип поля принимается как ЧИСЛО
2.1. если в первых 8 строках 4 текстовых значений и 4 числовых, то тип поля принимается как ЧИСЛО

3. Если добавить параметр IMEX=1, то (опять-таки всё определяется по первым 8 строкам):
3.1. Если в первых 8 строках есть хотя бы одно текстовое значение, то тип поля принимается как ТЕКСТ (!)
3.2. Если в первых 8 строках есть ТОЛЬКО ЧИСЛОВЫЕ значения, то тип поля принимается как ЧИСЛО (даже если все последующие значения, начиная с 9-го являются текстом)

Подробности про IMEX=1, например, здесь:
Цитата:
NOTE: Setting IMEX=1 tells the driver to use Import mode. In this state, the registry setting ImportMixedTypes=Text will be noticed. This forces mixed data to be converted to text. For this to work reliably, you may also have to modify the registry setting, TypeGuessRows=8. The ISAM driver by default looks at the first eight rows and from that sampling determines the datatype. If this eight row sampling is all numeric, then setting IMEX=1 will not convert the default datatype to Text; it will remain numeric.
За это сообщение автора поблагодарили: kashperuk (6).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поговорим об ADO Gustav DAX: База знаний и проекты 63 11.05.2016 14:25
C# and AX Development: Using ADO for interfacing AX with an external database Blog bot DAX Blogs 0 05.08.2008 05:18
casperkamal: Using ADO to read from Excel in Microsoft Dynamics Ax Blog bot DAX Blogs 2 14.05.2007 11:59

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:25.