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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2011, 15:21   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от GBH Посмотреть сообщение
Но не могу понять, как обрабатывать файл после того как доступ получен.
Читать строка за строкой, поле за полем в цикле. Там же в classDeclaration подробнейшим образом в каментах всё расписано:
Цитата:
#// gl00mie, import data from Excel via ADO, 20061220 -->
#// How to use this class:
#// 1. Create class instance, specify filename and (optional) cursor type e.g.
#// doc = new ExcelImportADO(strFilename, #adOpenStatic);
#// 2. Read names of worksheets present in the file, suppress error messages if necessary
#// con = doc.getExcelSheetNames();
#// 3. Specify the name of the worksheet to open ADODB.Recordset on, otherwise the first one will be used
#// doc.excelSheetName(conpeek(con,2));
#// 4. Open the file, i.e. open ADODB.Recordset (and ADODB.Connection if it's not opened yet)
#// suppress error messages if necessary and check for result:
#// if(doc.openFile(false)) ...
#// 5. Check if there is a correct number of columns in the Recordset
#// if(doc.getFieldsCount() > 7) ...
#// 6. Get the total record count if #adOpenStatic cursor type is used
#// cnRecords = doc.getRecordCount();
#// 7. Read records in a loop, use indexes (1..n) or field names to identify fields
#// By default field values are returned as strings
#// int i;
#// real r;
#// str s;
#// while(!doc.eof())
#// {
#// i = doc.getFieldValue(1, false);
#// s = doc.getFieldValue('stringField');
#// r = doc.getFieldValue('numericField', false);
#// doc.moveNext();
#// }
#// 8. Cleanup - close ADODB.Recordset and ADODB.Connection
#// doc.finalize();
Старый 26.07.2011, 15:59   #2  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Спасибо за ответ!

Но у меня сразу же пункт 2 не отработает, листов-то нет, как я понимаю.
Во всяком случае у меня пишет, что листы не найдены.
Старый 26.07.2011, 16:11   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Точно у вас файл - .xls? Не .xlsx? Потому что для .xlsx надо не Jet, а ACE: Вспомогательный класс для импорта из Excel через ADO

Показали бы код что ли...
Старый 26.07.2011, 16:37   #4  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Да, файл *.xls.
Если использовать ACE то валится с ошибкой ещё при получении доступа "Внешняя таблица не имеет предполагаемый формат".

Строка подключения:
X++:
 #localmacro.ADODBExcelConnString
        "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + %1 + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'" 
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='HTML Import;HDR=YES;IMEX=1'"  
    #endmacro
Если подключаться с первой строкой, то возникает ошибка 1.
Если со второй, то возникает ошибка 2 в методе openFile в строчке
X++:
rstExcel.Open(@"SELECT * FROM [" + strSheetName + @"$]", this.getConnection(), nCursorType);
Миниатюры
Нажмите на изображение для увеличения
Название: Первая строка подключения.JPG
Просмотров: 333
Размер:	60.4 Кб
ID:	7008   Нажмите на изображение для увеличения
Название: Вторая строка подключения.JPG
Просмотров: 387
Размер:	64.0 Кб
ID:	7009  

Старый 26.07.2011, 17:02   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Объект '0$' ? Назвали бы лист как-то посолиднее, хотя бы букву добавьте перед нулем...
Старый 26.07.2011, 17:34   #6  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Лист называется корректно, это так определяется
Поэтому я и считаю, что обращаться к листам тут не получится, а вот как я не знаю.

Штатное открытие данного файла екселем сразу же выдаёт сообщение "Действительный формат отличается от указываемого его расширением " и выскакивет окошко.
После нажатия кнопки "Да", файл открывается, где мы видим нормальное наименование листа.

Но, насколько я понимаю, чтобы корректно открыть данный файл происходит какая-то операция, которая позволяет корректно это сделать и в лоб, первой строкой подключения, данный файл не обработать.
Вторая строка получает доступ к файлу, но работать с листами не получается.

Скорее всего, можно и подключением первой строкой добиться нужного результата, но, к сожалению, я не знаю как(также как и второй строкой подключения обработать файл) .
Поэтому надеюсь на совет в какую сторону копать.
Миниатюры
Нажмите на изображение для увеличения
Название: 123.jpg
Просмотров: 350
Размер:	22.2 Кб
ID:	7010  
Изображения
 
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
документооборот и доступ к файлам ivas DAX: Программирование 34 18.05.2012 11:00
SysMailer, отправка PDF, приходит пустой файл ena_ax DAX: Программирование 12 19.11.2010 10:56
Gustav: Unsorted, или Записки DAX-дилетанта - II Gustav DAX Blogs 39 20.05.2009 15:34
Периодически пропадает доступ к Системе у удаленных пользователей andy_555 DAX: Администрирование 4 04.03.2009 15:02
Разрешение на доступ к базе данных nicko DAX: Администрирование 3 18.05.2004 18:49

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

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

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