Уважаемые разработчики и форумчане! Подскажите пожалуйста, есть ли возможность у Digitals проводить поиск и загружать данные прямо из Excel-го файла в таком виде, как это сейчас организовано с txt файлами. Заранее спасибо за помощь
Нет, Digitals напрямую читать из XLS файлов не умеет. Данные из Excel можно скопировать через буфер обмена.
Вставка параметров объектов из Word/Excel
Если вы используете Word или Excel для набора фамилий владельцев участков, паспортных и адресных данных, то эти данные могут быть вставлены во все участки в Digitals. Участки должны иметь заполненное поле Номер участка, а их параметры на закладке Инфо должны соответствовать колонкам в Excel.
Первым по порядку параметром у слоя участков должен идти Номер участка, вторым Имя пользователя и т.д. (Для изменения списка доступных слою параметров используйте Карта|Слои).
Колонки с данными в Excel должны располагаться в том же порядке (слева направо) что и параметры на закладке Инфо (сверху вниз).
Для вставки параметров пометьте в Excel необходимые колонки с данными и скопируйте их в буфер обмена Windows. Затем, переключитесь в Digitals, пометьте все участки и выполните команду Правка|Специальная вставка|Только параметры.
Данные из Excel будут скопированы в участки с соответствующими номерами.
Иногда полезно посмотреть хоть и не в обновлённую, но всё же полезную справочную систему Диджиталс. ![]()
Bondarets Alexander и pippa спасибо за ответ, но я имел в виду именно загрузка из xls файла. Про копирование информации через буфер я знаю, но для решения задач автоматизации необходима чтение именно из xls файла. Жаль что это не реализовано в Digitals. Наверное нужно будет xls файлы переконвертировать в txt.
Это будет быстрее чем разработчики добавят эту опцию - ну хотя бы на уровне OLE или DDE технологий ![]()
- Настройте в Панель управления-Администрирование-Источники данных ODBC-Пользовательский DSN-Файлы Excel доступ в файлам Ексель, как к БД.
В Excel-файле выделите диапазон ячеек и задайте им имя(не используйте кириллицу). Первая строка такого диапазона должна содержать имена полей.
Далее в Панель управления-Администрирование-Источники данных ODBC-Пользовательский DSN выделите Файлы Excel и нажмите Настройка.
Укажите подключаемый файл.
Полезная информация
2. Создайте в папке Digitals файл sql.udl, откройте его и настройте подключение к БД
3. В имени какого-либо параметра впишите =SQL(SELECT имя_поля FROM имя_таблицы WHERE имя_поля=P[IDXXX]) Имя параметра
Файлы-примеры к предыдущему посту.
ExcelAsDB.xls - путь к этому файлу указать в настройках источника данных ODBC
SQL.udl - в папку Digitals
Excel.dmf - см. список параметров
ExcelAsDB.zip (14.5 KB)
огогого
- я беру свои слова обратно ![]()
Dmitry_Zolotar большое спасибо за детальный ответ. Буду пробовать
Подскажите пожалуйста, кто работал с SQL запросами. Можно ли использовать составной ключ в запросах? Т. е. в excele есть два поля код квартала и номер участка, а Digitalse эти данные заносятся в одно поле sc. Можно ли, чтоб при выборке, данные выбирались одно поле в Digitalse а два в excele, т.е. может есть функция слияния? Или может можно как-то использовать через если (если первые три чифры = колонке1, а последние четыре = колонке 2, тогда отобрать данные)? Я в SQL запросах только начинаю разбираться, поэтому буду благодарен за любые подсказки
=SQL(SELECT…код_квартала)SQL(SELECT…номер_участка) SC кадастровый номер
в одну формулу 2 запроса можете вставить
Какие-то сложные запросы формируйте в MS Query, а уж оттуда “обкатанный” запрос вставляйте в параметр, убрав из выражения FROM путь к файлу.
Dmitry_Zolotar, а можно на вашем примере показать как это реализовать? Т.е. в excele есть два параметра ID и SC, а в Digitalse я сделал сборный параметр ID_SC. Создал участок, в параметр ID_SC присвоил значение 54430017787. Но так у меня и не получается сделать сборный запрос, который бы работал. Заранее спасибо за помощь
Что-то не получается отбирать по другому полю, кроме первого. Или это ограничение Digitalsa или отбирать можно, но что-то не так делаю?
Я не совсем понял проблему, но
P[-6]P[SC] - слияние 2 параметров
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_(EXCELDB.ID=P[-6]P[SC]))
На “человеческом” языке: выбрать (SELECT) поле FIELD01 из (FROM) таблицы EXCELDB строки, в которых (WHERE) выполняется условие следующее после WHERE, т.е. где поле ID таблицы EXCELDB равно P[-6]P[SC]
Нет, проблема немного в другом. Один параметр Digitalsa соответствует двум значениям Excela (1 и 2 столбец). А в Вашем примере наоборот - один параметр Excela проверяется с двумя Digitalsa.
P[…] - содержит слитый ID(переменной длины) и SC(7 символов)
CUT(1,LEN(P[…])-7,P[…]) - первая часть параметра
CUT(LEN(P[…])-6,7,P[…]) - вторая часть параметра
по ID
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_(EXCELDB.ID=CUT(1,LEN(P[…])-7,P[…])))
по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…])))
по ID и по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_((EXCELDB.ID=CUT(1,LEN(P[…])-7,P[…]))AND(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…]))))
по ID или по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_((EXCELDB.ID=CUT(1,LEN(P[…])-7,P[…]))OR(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…]))))
Похоже что эти запросы не работают:
по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…])))
по ID и по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_((EXCELDB.ID=CUT(1,LEN(P[…])-7,P[…]))AND(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…]))))
по ID или по SC
=SQL(SELECT_EXCELDB.FIELD01_FROM_EXCELDB_WHERE_((EXCELDB.ID=CUT(1,LEN(P[…])-7,P[…]))OR(EXCELDB.SC=CUT(LEN(P[…])-6,7,P[…]))))
Как я уже писал, похоже Digitals не может отбирать по второму и следующих столбцах. Если переименовать первый в SC то по нему он уже отбирает. Или я чего-то не догоняю
![]()
Номер столбца не имеет значения, важен только корректно составленный запрос.
Посмотрите пожалуйста, этот запрос составлен корректно? Не могу понять в чем моя ошибка. ![]()
Excel1.dmf (996 Bytes)
Dmitry_Zolotar, помогите пожалуйста. Вроде все делаю правильно, а ничего не получается. Все топчусь на месте с этими запросами
![]()



