Поиск по полям (перекрестным ссылкам) и вставка найденного в таблицы

Автор dansc, 14 сентября 2016, 18:52

0 Пользователи и 1 гость просматривают эту тему.

dansc

Добрый день уважаемые форумчане!

Подскажите имеется ли возможность в Writer поиска только по перекрестным ссылкам и полям?

Имеется файл: на первой странице есть несколько перекрестных ссылок. На второй странице таблица, в ячейки которой необходимо вставить часть информации из перекрестных ссылок.

Поле "Операция" содержит название операции и дату операции. Необходимо название операции вставить в "Таблица3" на второй странице во второй столбец (ячейка B2), а дату - в первый столбец (ячейка A2).


Аналогичным образом потом я смогу распределить данные по остальным таблицам из оставшихся полей. Главное понять принцип.

Спасибо за ответы!

И да, просьба не удивляться файлу  :).

kompilainenn

а нельзя два входящих поля использвать, а не одно? зачем этот геморрой?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

economist

Поиск по полям - расширение AltSearch http://extensions.libreoffice.org/extension-center/alternative-dialog-find-replace-for-writer

А вообще правильнее такие документы с полями обрабатывать макросом, который будет складывать все данныe из полей в Базу данных BASE, слинкованную с промышленного уровня СУБД (SQLite, FireBird, MySQL, PostgreSQL) для  последующего анализа, конструирования Отчетов и вообще для доказательной медицины, которой так не хватает приемов "Big Data". 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

dansc

По поводу использования двух полей:
тот пример, который я привел, это лишь один из многих. В действительности нужно будет еще делить диагноз на TNM, стадию и локализацию. Также потом надо будет вытаскивать названия препаратов и т.д. Иметь более 30 полей в документе объемом около страницы, мне кажется перебор.


К сожалению расширение AltSearch, как и любое другое расширение установить нет возможности. Поскольку компьютер рабочий, доступ к нему гостевой, а тех.поддержка не пойдет на индивидуальную установку для отдельного врача.

Макросы на рабочем компьютере работают, но вот только из фразы ув. kompilainenn я понял только то, что нужен макрос)) Как его написать то? С самой базой данных я уже разберусь.


economist

Если доступ гостевой - portableapps.com

А за такую техподдержку даже мне стыдно, но не помню перед кем :-))

Полей в документе может быть сколько угодно. Особенно если это поля базы данных. Вот макрос для чтения полей:   
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist


Sub Get_From_ODT_DataBase_Fields_And_Contetnts()
' Прочесть имена БД-полей (только их!) и их содержимое
  Dim oMasters      'Все владельцы текстовых полей
  Dim oMasterNames  'Массив имен владельцев текстовых полей
  Dim i%        'Индексная переменная
  Dim sMasterName$  'Полное имя владельца поля
  Dim s$            'Сервисная строка
  Dim oMaster       'Владелец поля
  ' Получим объект владельцев текстовых полей.
  oMasters = ThisComponent.getTextFieldMasters()
  ' Получим ВСЕ имена владельцев текстовых полей, это массив строк.
  oMasterNames = oMasters.getElementNames()
  For i = LBound(oMasterNames) to UBound(oMasterNames)
    'Для данного имени, получаем владельца поля, затем смотрим свойство
    'DependentTextFields, которое является массивом текстовых полей, зависимых
'от этого Владельца поля
    sMasterName = oMasterNames(i)
    'msgbox(sMasterName)
    oMaster = oMasters.getByName(sMasterName)
   on error resume next
    If UBound(oMaster.DependentTextFields) >= 0 Then
      dp = oMaster.DependentTextFields(0) ' читаем первое зависимое поле
      stroka=oMaster.Name & "=" & dp.Content ' имя+содерж, но в нем ÿ вместо символа .
  stroka=replace(stroka, "ÿ",".") ' убрали "мусор"
      msgbox(stroka)
   end if
  Next i
End Sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Раз у вас такие злые "одмины" - присмотритесь к базе данных в формате SQLite. Это самая быстрая СУБД (заявляю ответственно), не требует "сервера", хотя в режиме общего доступа вполне позволяет работать 3-5 человекам одновременно. Просто кладете файл базы данных на сетевой диск и работаете. Чтобы OpenOffice и LibreOffice BASE смог работать с SQLite под Windows - нужно установить ODBC-драйвер:
http://ch-werner.de/sqliteodbc/

Также удобно использовать расширение в FireFox - SQLite Manager:
https://addons.mozilla.org/ru/firefox/addon/sqlite-manager/

Все эти программные продукты свободны и бесплатны.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Чтобы обрисовать возможности SQLite под OpenOffice и LibreOffice - все(!) бухгалтерские проводки завода за 10 лет (1 млн. строк, 60 полей) - легко "переехали" в один файл размером 400 мегабайт, из которых 200 - это индексы. Любой сложный SQL-запрос (скажем среднемесячная цена реализации top-5 видов продукции) - выполняется за секунду-три. За это время 1С едва открывается. При этом всю возню с импортом/экспортом делает скрипт на языке Python, оказавшимся в 10 раз более быстрым, чем VBS и PowerShell.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

dansc

Спасибо за макрос. Сегодня попробую.

Насчет админов: я просил установить мне календарь с напоминаниями, так они сказали, что это не предусмотрено документацией и отказали. Поэтому никакие расширения и приложения я поставить не могу.
Единственный мой выход - это макросы.

То есть из определенного объема файлов odt можно сделать экспорт в SQLite и использовать возможности базы данных?

economist

Вы всё можете. Скачайте http://portableapps.com/apps/office/libreoffice_portable и http://portableapps.com/apps/utilities/java_portable, "установите" на домашней машине, поставьте все нужные расширения, после чего скопируйте всю папку C:\PortableApps на рабочий комп. Должно все работать.

Макросы это выход, но путь тернист. А из ODT можно сделать "форму" для ввода данных, которая будет сама сохранять себя в базе данных SQLite (OpenOffice и LibreOffice BASE, файл ODB). В Base можно создавать Отчеты (табличные и текстовые), но гораздо проще использовать данные в документах Writer по нажатию F4. То есть мы полностью "двунаправленно" интегрируем данные с документами, причем с разных рабочих мест (просто у каждого должен быть свой ODB-файл, слинкованный с одним SQLite-файлом).
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...