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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.07.2006, 16:11   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А придать этому сборищу данных более сговорчивый формат? Например, xls?
Задачка разовая или постоянно надо будет парсить?
Старый 12.07.2006, 16:21   #2  
Avick is offline
Avick
Участник
 
15 / 10 (1) +
Регистрация: 03.10.2005
Адрес: Москва
Цитата:
Сообщение от Gustav
А придать этому сборищу данных более сговорчивый формат? Например, xls?
Задачка разовая или постоянно надо будет парсить?
Задача ежемесячная.
Да и файлов несколько штук, отличных по формату.
Придать сговорчивый формат - это и значит перегнать нужные данные из хтмл в Ексель с помощью чего-либо?
Старый 12.07.2006, 16:25   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Avick
Задача ежемесячная.
Да и файлов несколько штук, отличных по формату.
Придать сговорчивый формат - это и значит перегнать нужные данные из хтмл в Ексель с помощью чего-либо?
Да прямо Excel'ем и открывать.Заюзать Excel через COM-интерфейсы из X++.

Конкретно в Excel - что-нибудь типа объекта QueryTable. Через этот QueryTable - можно хоть к файлу, хоть напрямую в web.


P.S. Посмотрите, как при помощи Excel выкачивается из веба табличная информация здесь:
Получение в Excel полного списка пользователей AxForum

Там пример на VBA, но сделать перевод на X++ задача вполне посильная.

P.P.S. Поиграйтесь сами прямо в Excel: меню Данные - Внешние данные - Создать Web-запрос. Запишите свои действия макрорекордером. Уверен, Вам понравится.

Последний раз редактировалось Gustav; 12.07.2006 в 16:37.
Старый 12.07.2006, 17:15   #4  
Avick is offline
Avick
Участник
 
15 / 10 (1) +
Регистрация: 03.10.2005
Адрес: Москва
[QUOTE=Gustav]

Конкретно в Excel - что-нибудь типа объекта QueryTable. Через этот QueryTable - можно хоть к файлу, хоть напрямую в web.
[QUOTE]
Попробовал.
Возник вопрос: как мне прямо в коде сказать какое именно слово из файла в какую именно ячейку класть?
Без регулярных выражений не обойтись, как мне кажется...
Старый 12.07.2006, 17:26   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Avick
Без регулярных выражений не обойтись, как мне кажется...
Ну эт не знаю, не умею. На эту тему Вы macklakov-а терзайте...
Цитата:
Сообщение от Avick
Возник вопрос: как мне прямо в коде сказать какое именно слово из файла в какую именно ячейку класть?
Общий принцип такой. Нужно два листа Excel (в одной книге, конечно):

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

второй - "накопитель", где Вы уже раскладываете данные "по полочкам", т.е. по колоночкам, читая эти данные из "приёмника"


P.S. У вас данные - табличного вида? Или хаотичного?

Вы смотрели пример с "Пользователями АхФорум"? Там содержимое "приемника" меняется в цикле 60 с лишним раз (по 100 пользователей на одной странице): запросили очередную страницу, она загрузилась в "приемник", прочитали ее данные в "накопитель", в "накопителе" продвинулись вниз по таблице на последнюю заполненную "запись", запросили следующую страницу в "приемник" и т.д. в цикле.

По окончании процесса интересующие Вас данные находятся в "накопителе" ("приемник" больше не нужен, можно выбросить его в пропасть как суп харчо). Из "накопителя" грузите данные в Аксапту любым из желаемых методов (через ODBC, ADO и т.п.).

Последний раз редактировалось Gustav; 12.07.2006 в 17:39.
Старый 12.07.2006, 17:34   #6  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Gustav
На эту тему Вы macklakov-а терзайте...
Не надо меня терзать! Я и так все скажу!
Есть класс TextBuffer, у него метод find, который принимает регулярные выражения. Работает он по аналогии с функцией match. Работает, правда, довольно специфически и не всегда его поведение очевидно
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: Gustav (2).
Старый 12.07.2006, 18:12   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Продолжаю дуть в свою эксельную дуду. Вся информация на веб-странице с точки зрения Ёкселя - это сборище таблиц. Причем от нормальных таблиц (несколько столбцов, много строк) до примитивно-вырожденных, состоящих из одной-единственной ячейки (т.е. один столбец, одна строка). Эти таблицы имеют номера, начиная с 1.

Например, список пользователей АхФорума - это чётко таблица № 13 (см. строку в коде примера: .WebTables = "13") на соответствующей странице. Это собственно таблица, где информация об участниках - начинается со строки заголовков ("Имя","Регистрация","Сообщения" и т.д.) и заканчивается строкой типа "Показано с 1 по 30, из 6129.".

Можете примерно представить содержание таблиц с 1 по 12 на этой странице - это всё, что находится перед строкой заголовков "собственно таблицы". Понять, где именно какая таблица по номеру, поможет мастер web-запросов Excel.

И эта "собственно таблица" будет носить номер 13 до тех пор, пока в дизайн всей страницы не будут внесены изменения. В этом случае номер таблицы может измениться. Пользователи АхФорума - устойчивая страница. Расположение ее первых 12 таблиц - неизменно, соответственно номер "13" пока устойчиво закреплен за "собственно таблицей".

Другое дело - профиль конкретного участника (ну, давайте меня). Допустим, мы захотели регулярно читать его полученные и выданные репутации. Видно, что это хорошо организованные нормальные таблицы, расположенные друг за другом. И они имеют свои конкретные номера в ДАННЫЙ момент времени, пока остается неизменным состав информации перед этими таблицами.

Но если я завтра захочу в свой профиль добавить информацию о дне рождении (сейчас это поле пустое и оно расположено до таблиц репутаций - а сейчас его просто нет на странице в блоке "Дополнительная информация", потому что оно пустое!), то номера таблиц репутаций изменятся. Также изменятся они, если мы просто перейдём к профилю другого участника, у которого "заполненность" полей отличается от моего.

Однако и на этот случай "номерной неустойчивости таблиц" есть свое решение: веб-страница рассматривается целиком, без деления на таблицы, а точки начала интересующих нас таблиц определяются нахождением на листе "приёмник" ячеек, содержащих текст "Участник получил одобрение от других" и "Участник одобрил других" соответственно.

Последний раз редактировалось Gustav; 12.07.2006 в 19:02.
Старый 13.07.2006, 11:30   #8  
Avick is offline
Avick
Участник
 
15 / 10 (1) +
Регистрация: 03.10.2005
Адрес: Москва
Цитата:
Сообщение от macklakov
Не надо меня терзать! Я и так все скажу!
Есть класс TextBuffer, у него метод find, который принимает регулярные выражения. Работает он по аналогии с функцией match. Работает, правда, довольно специфически и не всегда его поведение очевидно
Этот класс в VBA Exсel- eвском?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
BOM без использования модуля Производство Iskorka DAX: Функционал 10 11.04.2011 16:32
Стандартный импорт данных. Обновление sparur DAX: Функционал 0 24.03.2008 19:07
Перехват оконных сообщений без использования внешних компонентов belugin DAX: База знаний и проекты 2 04.05.2007 14:28
casperkamal: HTML based Report in Dynamics Ax Blog bot DAX Blogs 0 20.02.2007 09:40

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

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

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