Libre Office Writer

Автор lyboznatel, 23 мая 2024, 15:15

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

lyboznatel

Здравствуйте.

Несколько дней бьюсь над тем, что не могу выстроить обратную связь у формы "Поле со списком".

Есть таблица в Calc, в ней пара столбцов. Первый с данными, второй с результатами от Writer.

Из столбца с данными форма подтягивает информацию через созданную базу банных нормально. Список появляется, можно выбрать нужный вариант, но когда я указываю в "Мастере поля со списком" параметр "Поле базы данных" - "Сохранить значение в поле базы данных?" - "Да. Сохранить в следующем поле базы данных", то у меня сразу становится залоченным выпадающий список, я не могу выбрать варианты, а если мне и удается каким-то образом (не разобрался как это работает) сделать активным выпадающий список, то я все равно не могу выбрать из него какой-то конкретный пункт, они сами по себе залочены и не доступны.

Стоит задача сделать связь между writer и calc таким образом, чтобы весь рабочий (отображаемый) интерфейс был у writer, но информация бралась, записывалась и пересчитывалась в calc.

Про функцию связи DDE знаю, пытался применить ее в Форму, но не получилось.

Возможно упускаю какую-то важную деталь во время попытки связать или на этапе базы данных.

Буду благодарен советам и рекомендациям, как можно было бы реализовать эту задачу. (Не имею большого опыта в работе с формами и связками).

economist

#1
Цитата: lyboznatel от 23 мая 2024, 15:15параметр "Поле базы данных" - "Сохранить значение в поле базы данных?"

Этот параметр нужен для внесения изменения в сами данные БД. Но подключение Base к Excel/Calc/TXT/CSV-файлам относится к Read-only подключениям. Изменять таблицу Calc из Writer через Base нельзя. Правда можно изменять небольшую таблицу Calc во Writer через OLE, но это путь глючный и для баловства. 

Цитата: lyboznatel от 23 мая 2024, 15:15Есть таблица в Calc, в ней пара столбцов. Первый с данными, второй с результатами от Writer.

Как вы в листе Calc получили данные от Writer? Может "...для Writer"?


Обычно в связках Calc - Base - Writer сам диалог/расчет делают в Форме в Calc (иногда просто в ячейках листа с отключенной сеткой делают псевдо-диалог), а Writer тут используют для "многабукф"-вывода с переносами строк по слогам/страницам, для авто выравнивания правого края и тп красоты.

Или используют связку SQL_RDBMS - Base - Writer для диалога в Форме во Writer (и записью изменений в SQL_RDBMS, она это обычно позволяет, если есть PRIMARY KEY в таблице).  Точно так же работают связки SQL_RDBMS - Base - Calc (и на моей практике их даже больше). 

DDE очень стар, но пока незаменим, например, для отражения огромных слабоформатированных (только влево/вправо) и "предрасчитанных" формулами таблиц из Calc или отдельных DDE-ячеек из Calc - в документах Writer. Например Спецификаций к договорам.

Не совсем понятна финальная цель и зачем Writer. LO-контролы (элементы упраления) из Writer - есть и в Calc (кроме MSO-контролов в наследство от MS Word, но они не уникальны и во всем похожи на первые).
 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

lyboznatel

Цитата: economist от 23 мая 2024, 16:27Как вы в листе Calc получили данные от Writer?
Ну вот как раз таки никак, просто был обозначен столбец для этого дела.

Основная цель - создать текстовый (оформленный под читаемый и удобоваримый документ) шаблон для заполнения данными. Шаблон максимально простой  и доступный с точки зрения заполнения информацией, чтобы все можно было сделать сразу в лоб. Шаблон в дальнейшем идет под печать, поэтому выбор тоже на writer пал. Собственно была идея данные брать из calc и заносить их во writer через выпадающий список и прочие виды форм. Некоторые формы были бы не для печати, но такими, чтобы в них можно было указать информацию (внести вручную или выбрать из списка), а дальше в calc по формулам проводился бы расчет и в нужных формах появлялся требуемы результат. Т.е. реализовывался бы запрос в базу данных с получением требуемого ответа с автозаполнением.

economist

Именно так как вы написали все это и делается в Calc-Base-Writer по Ctrl+Shift+F4 (Слияние и Рассылка - изучите, это работает хорошо и безо всяких макросов). Проблема в том что примеров и счастливых юзеров все равно мало. Потому что продумать простой шаблон - сложно и требует широкого и системного взгляда на мир.

Если вам точно нужно в процессе заполнения сохранять что-то в Calc из Writer (кстати, зачем?) - то Calc на замену.

Или заполняйте в Calc (а во Writer готовое Слияние/рассылка), или вместо Calc используем SQLite, DuckDB, HSQLDB итд. Base умеет со всеми движками баз работат, и по всем технологиям (ODBC, JDBC). В последнем случае правка полей во Writer будет создавать новые записи в базе.

Было б лучше описать задачу конкретнее. Опыт слияния большой. Но сливать вместе odt+ods договоры и спеки это одно, а BI-Отчётность в такой манере - совсем другое.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Ещё камень в сторону "Шаблонов, умеющих всё". Они чаще всего не взлетают.

Попробуйте Конструктор договоров в КонсультантПлюс (на сайте или в приложении). К его появлению причастен. И что? Перемудрили... Юзать можно только один раз, потом утомляет. А ведь времени на него угроблено - море.

Ошибка проектирования тут - бюрократия, многословность, перфекционизм, нежелание сделать удобно, желание красиво и полно. Юридическое балабольство, стремление впихать всю судебную практику (и нежелание сослаться по всем на ГКРФ, на диспозитивные нормы по-умолчанию) - и результат. Вроде есть продукт, а востребованность - низкая. Не переусложняйте. База в Calc и слияние во Writer, минимум макросов, минимум Эл-в управления (но Данные - Поверка в Calc и  Усл. Форматирование - можно и нужно, это легко спихнуть на офисных, они умеют и покажут себя).



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