Меню

Ошибка при попытке сохранения дизайна таблицы libreoffice base

Самым проблемным компонентом LibreOffice является Base (аналог MS Access, инструмент для создания баз данных). С тех древних времен, когда произошло отделение LibreOffice от OpenOffice.org, этот компонент вообще разработчики не развивали и не исправляли в нем ошибки. И вообще эта штука устроена крайне неудобным образом. Движок для создания БД используется древний HSQLBD, который хочет для своей работы JAVA. Версия движка не обновлялась со времен Царя Гороха да и сам по себе движок не очень прямой от рождения. Недавно (по галактическим масштабам) разработчики решили выпилить эту фигню из состава ЛО, заменив движок БД на Firebird Embedded. По идее эта замена должна принести кучу профитов, поскольку планируется не просто проволокой прикрутить некий билд FBE к LibreOffice, а они хотят сделать нормальный, современный, обновляемый и активно развиваемый компонент, который, кстати, JAVA для себя не требует. Эта замена началась, как один из проектов GSoC (Google Summer of Code — это гугл платит бабло студентам со всего мира за создание кода для свободных проектов), и продолжается по сей день. Для пользователя пока хороших новостей на этом фронте нету, информации о степени готовности новинки также нет.

Я столкнулся пару раз с работой Base в его текущем состоянии. Он просто не работает. Будьте готовы к тому, что поработав над созданием БД пару часов, вы потеряете все данные или тщательно проработанную структуру БД, просто потому, что Base зависает при самых простых манипуляциях. Причем зависает намертво, утаскивая с собой в могилу не только Вашу БД, но и ВСЕ документы, которые у Вас открыты в LibreOffice, как текстовые, так и электронные таблицы и рисунки и презентации, все!

Мой Вам совет: если Вам приспичило создать БД для личных нужд, НЕ ИСПОЛЬЗУЙТЕ Base. Найдите ему замену. Используйте электронные таблицы с фильтрами, что угодно, но не Base.

I’m trying to make changes to an existing table and am getting this error when i try to save :

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

I only have one data entry in the database — would deleting this solve the problem or do i have to re-create the tables as the error suggests? (This is on SQL-Server 2008 R2)

ashes999's user avatar

ashes999

9,84715 gold badges72 silver badges120 bronze badges

asked Jan 7, 2014 at 4:08

jn025's user avatar

1

The following actions might require a table to be re-created:

  1. Adding a new column to the middle of the table
  2. Dropping a column
  3. Changing column nullability
  4. Changing the order of the columns
  5. Changing the data type of a column

To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving changes that require the table to be re-created check box.

refer

answered Jan 7, 2014 at 4:17

Nagaraj S's user avatar

Nagaraj SNagaraj S

13.2k6 gold badges32 silver badges52 bronze badges

0

you need to change settings to save the changes

  1. Open SQL Server Management Studio (SSMS).
  2. On the Tools menu, click Options.
  3. In the navigation pane of the Options window, click Designers.
  4. Select or clear the Prevent saving changes that require the table re-creation check box, and then click OK.

enter image description here

answered Nov 14, 2014 at 16:30

Ali Adravi's user avatar

Ali AdraviAli Adravi

21k9 gold badges83 silver badges83 bronze badges

0

Goto -> Tools -> Options->Designers-> Warn on null primary keys and 
Warn about tables affected  

uncheck and try again

answered Jan 7, 2014 at 4:25

senthilkumar2185's user avatar

senthilkumar2185senthilkumar2185

2,5063 gold badges23 silver badges35 bronze badges

I’m trying to make changes to an existing table and am getting this error when i try to save :

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

I only have one data entry in the database — would deleting this solve the problem or do i have to re-create the tables as the error suggests? (This is on SQL-Server 2008 R2)

ashes999's user avatar

ashes999

9,84715 gold badges72 silver badges120 bronze badges

asked Jan 7, 2014 at 4:08

jn025's user avatar

1

The following actions might require a table to be re-created:

  1. Adding a new column to the middle of the table
  2. Dropping a column
  3. Changing column nullability
  4. Changing the order of the columns
  5. Changing the data type of a column

To change this option, on the Tools menu, click Options, expand Designers, and then click Table and Database Designers. Select or clear the Prevent saving changes that require the table to be re-created check box.

refer

answered Jan 7, 2014 at 4:17

Nagaraj S's user avatar

Nagaraj SNagaraj S

13.2k6 gold badges32 silver badges52 bronze badges

0

you need to change settings to save the changes

  1. Open SQL Server Management Studio (SSMS).
  2. On the Tools menu, click Options.
  3. In the navigation pane of the Options window, click Designers.
  4. Select or clear the Prevent saving changes that require the table re-creation check box, and then click OK.

enter image description here

answered Nov 14, 2014 at 16:30

Ali Adravi's user avatar

Ali AdraviAli Adravi

21k9 gold badges83 silver badges83 bronze badges

0

Goto -> Tools -> Options->Designers-> Warn on null primary keys and 
Warn about tables affected  

uncheck and try again

answered Jan 7, 2014 at 4:25

senthilkumar2185's user avatar

senthilkumar2185senthilkumar2185

2,5063 gold badges23 silver badges35 bronze badges

Я пытаюсь сохранить стиль таблицы как именованный стиль в модуле записи LibreOffice. Мой процесс до сих пор был следующим:

Выберите таблицу, стиль которой я хочу сохранить, затем используйте следующую

Format Menu ->
    Styles and Formatting ->
        Styles and Formatting Dialog ->
            New Style From Selection ->
                Enter style name and save.

Writer помещает новый стиль в поддерево « Table Contents дерева «Стили и форматирование». Кажется, что свойство Borders сохранено, а свойство Background — нет.

Как сохранить цвет фона ячейки таблицы и стили линии границы (OO.Org Writer)? Я убедился, что выбрал «Стили абзаца», прежде чем сохранил стиль таблицы. Я также гарантировал, что я выбираю стиль только из одной ячейки, тем самым гарантируя, что я не пытаюсь сохранить конфликтующие фоновые стили.

Щелкнув правой кнопкой мыши по названию моего стиля, я вижу, что цвет фона не установлен. Я могу изменить фон вручную — однако, цвет фона не распространяется полностью до границы ячейки; это покрывает только текстовую область.

До сих пор я использую

LibreOffice 3.5.4.2 ID сборки: 350м1(сборка: 2)

Работает на Ubuntu 10.04.

Технические детали:

Я разархивировал файл ODF и открыл styles.xml и content.xml.

Оба файла содержат информацию о стиле; styles.xml содержит стили ODF по умолчанию, а также любые именованные стили, созданные пользователями. Content.xml содержит анонимную информацию о стиле, связанную непосредственно с контентом (например, если вы выделите текст с помощью инструмента «high-light», эта информация о стиле будет сохранена в content.xml). Вот интересная вещь:

Это из styles.xml:

<style:style 
      style:name="new_20_table_20_heading" 
      style:display-name="new table heading" 
      style:family="paragraph" 
      style:parent-style-name="Table_20_Heading">
  <style:paragraph-properties fo:background-color="#c0c0c0">
    <style:background-image />
  </style:paragraph-properties>
</style:style>

Обратите внимание, что цвет фона внутри стиля: свойства абзаца

Вот цвет фона из файла content.xml:

<style:style style:name="Table1.C1" style:family="table-cell">
  <style:table-cell-properties 
       fo:background-color="#cccccc" 
       fo:padding="0.0382in" 
       fo:border="0.05pt solid #000000">
    <style:background-image />
  </style:table-cell-properties>
</style:style>

Здесь цвет фона находится внутри стиля:table-cell-properties

Похоже, что LibreOffice должен иметь кнопку « Стили ячеек» в диалоговом окне « Styles and Formatting » (аналог кнопки «Стили абзаца»).

Это ошибка?

Автор vadimsob, 10 мая 2020, 20:51

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

1. Меню «Таблица-Вставить таблицу…» – вставить таблицу 2х2
2. выделить правый столбец, объединить ячейки
3. выделить левую нижнюю ячейку, меню «Таблица – Свойства…» – Обрамление — Установить только внешнюю рамку (границу) этой ячейки
4. сохранить файл как doc и закрыть
5. открыть файл — правая граница у левой нижней ячейки не отображается, а если открыть файл в MS Word, то все границы у этой ячейки есть.
Пробовал в LibreOffice 5 и 6 (6.4.1.2) версий в Windows и Linux. Это bug?



Не понял вопрос: что именно «Зачем?» Сохранить как doc? С таблицами работают в MS Office и LibreOffice. Или «зачем закрыть»? Рамка не отображается после открытия файла,а до закрытия — отображается.


а если сохранить в  docx проблема остается?


Нет, сохранение в docx (а также в odt) решает проблему, другое дело, что для совместимости ряд документов (и в том числе данные таблицы) сохраняются в doc. Я так понимаю, что это баг?




Да, LibreOffice и MSO 2003 близки по интерфейсу, и в нём поэтому продолжают работать (а также потому, что нет необходимости покупать «модный» MSO, когда вполне нормально работает старый).
Спасибо за Ваш ответ, я направил bugreport разработчикам.
Тему можно закрыть.




bug 132925
У некоторых используются макросы и, вероятно, какие-то другие возможности, не совместимые с LO. Всё-таки, надо признать, что совместимость MSO и LO хоть и хорошая, но не идеальная.


Автор: А. А. Ракитин

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

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

Колонки определяют атрибуты (свойства) записей, а значит и реальных объектов. Набор колонок должен быть продуман и определен до создания базы. После того как база создана, добавление новой колонки иногда может быть связано с некоторыми трудностями. Чаще это не так, но лучше все-таки определиться до, а не после.

База данных может состоять из нескольких таблиц и эти таблицы могут быть связаны между собой.

LibreOffice Base позволяет создавать как локальные, так и сетевые реляционные базы данных или подключаться к уже имеющимся базам. В любом случае Base позволяет добавлять и удалять записи, редактировать данные, делать выборки, формировать отчеты.

Нужно отметить, что хотя Base является частью офисного пакета LibreOffice, по умолчанию он, как правило, не устанавливается. Поэтому LibreOffice Base скорее всего потребуется доустановить.

Создание базы данных

При запуске LibreOffice Base возникает окно мастера, в котором предлагается выбрать один из трех режимов работы;

  • Создать новую базу данных.
  • Открыть существующий файл (содержащий базу данных).
  • Подключиться к существующей базе данных.

При выборе второго пункта можно подключиться к базе, созданной ранее в LibreOffice Base, которая по умолчанию имеет формат dBASE. Третий пункт позволяет работать с локальными и сетевыми базами многих распространенных типов. Для каждого типа используется свой определенный драйвер, дающий доступ к данным.

Для создания новой базы данных нужно выбрать первый пункт. Затем нажать Далее и выбрать Зарегистрировать базу данных и Открыть базу для редактирования. При завершении работы мастера потребуется указать имя новой базы и место для сохранения файла с ней. После этого открывается окно для работы с базой.

Окно LibreOffice Base

Окно LibreOffice Base.

В левой части окна перечислены четыре составляющих, которые являются частями базы: Таблицы, Запросы, Формы, Отчеты. Как уже говорилось, основой базы являются таблицы. Все остальные элементы не содержат каких-то новых данных, а всего лишь берут их из таблиц. В только что созданной базе нет ни одной таблицы, поэтому нет ни запросов, ни форм, ни отчетов. Ниже все они будут рассмотрены, но для начала необходимо создать хотя бы одну таблицу.

Создание таблиц

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

Каждая строка окна Дизайнера таблиц (Table Disign) описывает одну колонку создаваемой таблицы. Первая строка Дизайнера соответствует первой колонке таблицы, вторая строка — второй колонке и так далее. На иллюстрации строки Дизайнера уже заполнены для создания конкретной таблицы.

Проектирование таблицы — ответственный этап создания базы данных. Ошибки, допущенные при проектировании таблицы потом сложно или вообще невозможно исправить.

Окно для создания таблицы в режиме дизайна

Окно для создания таблицы в режиме дизайна.

При проектировании таблицы нужно обратить внимание на два основных момента. Перечень и порядок следования колонок определяют те данные об объекте, которые будут заноситься в базу и то, насколько удобно это будет делать. А свойства этих данных определяют размер файла базы. Это можно пояснить на примере показанной здесь таблицы Авиарейсы.

Каждая колонка таблицы имеет имя, которое задается в графе Название поля. Хорошей практикой, особенно для таблиц с большим количеством колонок, является заполнение графы Описание. В обоих случаях текст просто вводится в нужное поле с помощью клавиатуры. Ширину любой графы можно изменить с помощью мыши.

Изменить порядок следования колонок в таблице или добавить колонку между двумя имеющимися сложно, а часто невозможно.

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

Количество символов всегда желательно указывать исходя из свойств реальных данных для поля. Дело в том, что, например, для текстовых данных длина поля по умолчанию составляет 100 символов. Именно столько места будет зарезервировано для данных в этом случае. Но, если реальный текст, который будет заноситься в ячейку, состоит максимум из 12 символов, то остальное место будет оставаться пустым. Это приведет к неоправданному увеличению размеров файла базы данных, что плохо, особенно для больших баз.

Первая строка Дизайнера, соответствующая первой колонке таблицы, является ключевым полем. Данные в ней будут появляться автоматически при добавлении каждой новой записи. Здесь это просто номер, который каждый раз увеличивается на единицу. Ключевое поле гарантирует, что в базе ни при каких обстоятельствах не будет содержаться двух одинаковых записей. Они обязательно будут отличаться друг от друга хотя бы ключом. Этого требует технология реляционных баз данных. Если ключевое поле не было создано, Дизайнер обратит на это внимание и предложит его создать.

Полезность баз определяется прежде всего полнотой и актуальностью имеющихся в них данных. А также корректностью их занесения.

Первое означает, что при любых изменениях реальных объектов, для которых построена база, эти изменения следует сразу же отражать в таблицах. Для базы Авиарейсы это добавление новых рейсов, изменение типа самолета, изменение пункта назначения и другие подобные.

Второе связано с недопустимостью ошибок ввода данных, что вполне возможно при их ручном вводе. Например, «Air Europa» и «AirEuropa» являются одним и тем же только с точки зрения человека. Для компьютера это разные данные. Такие ошибки могут (и будут) приводить к получению неправильных запросов или отчетов. Несколько обезопасить себя от совершения подобных ошибок можно использованием копирования и вставки уже введенных ранее данных.

Ниже показан вид заполненной таблицы Авиарейсы. В ней всего 18 строк, ведь это всего лишь пример. В реальности таблицы получаются гораздо больше. Ячейки заполняются точно также, как в LibreOffice Calc — с помощью мыши и клавиатуры. Данные можно импортировать из таблицы LibreOffice Calc, если такая имеется.

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

Заполненная таблица Авиарейсы

Заполненная таблица Авиарейсы.

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

Создание отчетов

Обычно получение отчета становится первым действием (а иногда и единственным) после создания таблицы. Всегда приятно посмотреть на результат работы, тем более, что отчеты выглядят достаточно хорошо. К тому же построение отчета является очень простой процедурой и требует буквально всего несколько кликов мышкой.

Отчет — это просто красивая форма представления данных из таблицы. Обычно его создают для последующей печати. В отчет можно включать не все данные таблицы. Выбор производится по целым колонкам — их можно включить в отчет или исключить из него. Если этого недостаточно, то сначала надо создать запрос, а уже на его основе — отчет. Поскольку запрос тоже является таблицей, то отчет и в этом случае создается так же как для таблицы.

Для создания отчетов имеется мастер, который становится доступен при выделении в левой части рабочего окна LibreOffice Base элемента Отчеты.
На первом шаге мастера требуется указать таблицу (или запрос) для построения отчета. Здесь же нужно перенести те поля (колонки) таблицы, данные из которых попадут в отчет. На иллюстрации данные из колонок ID и Тип рейса не будут фигурировать в отчете. Порядок следования колонок в отчете, в отличие от таблицы, можно легко изменить с помощью кнопок, которые обведены на иллюстрации красным кружком.

Мастер создания отчетов. Шаг 1

Мастер создания отчетов. Шаг 1.

Второй шаг мастера позволяет изменить названия колонок. Это сделано потому, что очень часто колонки в таблицах именуются весьма условно. К примеру, это может быть что типа NR1, Type или что-нибудь похожее. В отчете, конечно же, лучше иметь более осмысленные названия полей.

На третьем шаге мастера определяются поля для группировки данных. В данном случае группировка будет делаться по названию компании.

На четвертом шаге мастера определяются параметры сортировки строк внутри групп.

Пятый шаг мастера позволяет выбрать стиль отчета. Здесь имеется большой выбор. Кроме того, на этом шаге можно задать ориентацию страницы — альбом или портрет.

На шестом, заключительном шаге надо задать заголовок отчета и выбрать его тип — динамический или статический. Различие состоит в том, что динамический отчет будет содержать те данные из таблицы-источника, которые имеются в ней при его открытии. Другими словами, если данные в таблице изменились даже после создания отчета, в нем они тоже изменятся. Статический отчет, напротив, будет содержать те данные, которые были в таблице в момент его создания. Любая модификация таблицы после создания статического отчета никак не скажется на его содержании.

Фрагмент отчета

Фрагмент отчета.

Некоторые возможности для изменения внешнего вида отчета предоставляет пункт меню Изменить, который вызывает Конструктор отчетов (Report Design). Этот инструмент позволяет изменять положение и размер полей с данными, изменять заголовки, управлять колонтитулами.

К сожалению, работа с Конструктором отчетов не является простым занятием и не очень прозрачна. Зато отчет остается частью базы данных.

Другая возможность для правки связана с тем, что готовый отчет представляет собой обычный документ LibreOffice Writer. Он может быть сохранен в отдельный файл odt (Файл -> Сохранить как) и после этого его можно редактировать, добавлять графику или экспортировать в формат PDF. Здесь нет никаких ограничений. Однако, такой отчет уже будет самостоятельным документом вне базы данных.

Создание запросов

Возможность создавать запросы является важнейшим свойством баз данных. Она позволяет получать из одного набора данных множество различных результатов. Создание запросов и получение ответов — это практически единственный способ вести диалог с базой данных. Поэтому важно овладеть такой техникой.

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

Для создания запросов в LibreOffice Base имеется три способа, которые становятся доступны при выделении в левой части рабочего окна элемента Запросы.

  • Создать запрос в режиме дизайна. Query Design позволяет очень простым способом создавать достаточно сложные варианты запросов. Он является наиболее предпочтительным вариантом, тем более, что редактирование ранее созданных запросов делается тоже в нем.
  • Использовать мастер для создания запроса. Этот вариант позволяет создавать простые запросы, но явно уступает первому в гибкости. Здесь он рассматриваться не будет.
  • Создать запрос в режиме SQL. В данном случае запрос формируется сразу на языке SQL, который специально был создан для взаимодействия с базами данных. Этот способ предоставляет самые широкие возможности, но требует знания SQL. Здесь он рассматриваться не будет.

При выборе варианта Создать запрос в режиме дизайна появляется окно Query Design и предложение добавить таблицы и запросы. Как уже говорилось, запрос должен быть адресован хотя бы одной таблице. Но их количество может быть больше одной. А, поскольку результатом запроса тоже является таблица, то запрос может основываться и на сделанном ранее запросе. Сейчас в базе имеется только одна таблица и запрос будет строиться именно к ней.

Окно Query Design

Окно Query Design.

В верхней части окна Query Design отображаются источники данных для запроса — таблицы и ранее сделанные запросы, которые были добавлены. В нижней части окна расположена панель построения запроса, тот инструмент, с которым надо работать. Этот инструмент фактически является прототипом той таблицей, которая будет получена в результате запроса. Каждая колонка нижней части Query Design станет колонкой новой таблицы. Все что требуется — это настроить в ней отображение нужных данных.

Для примера будет создан запрос, который выведет записи о рейсах компании Аэрофлот.

Для начала нужно указать, какие данные будут отображаться в каждой колонке новой таблицы. Для первой колонки выбрано поле ID из таблицы Авиарейсы. Для второй — поле Пункт назначения из таблицы Авиарейсы. Итак далее. Чекбокс в строке Видимый означает, что эти данные в будущей таблице будут отображаться. В последней колонке Компания этот чекбокс не отмечен, поэтому колонка не будет видна. Это не требуется, потому, что из заголовка запроса будет ясно, что речь идет о рейсах Аэрофлота.

Зато в последней колонке Компания записан Критерий, его значение равно Аэрофлот (кавычки ставить не нужно, программа добавляет их сама). Критерий в данном случае означает, что из таблицы-источника будут выбраны только те записи, которые в поле Компания содержат значение Аэрофлот.

Кроме того, в колонке Пункт назначения установлена сортировка по возрастанию.

После создания запроса окно Query Design можно закрыть, при этом появится предложение сохранить изменения и указать имя запроса. Готовый запрос появится в правой нижней части рабочего поля программы. Для открытия запроса нужно сделать на нем двойной щелчок левой кнопкой мыши.

В таблице, которая получена в результате запроса, видны все рейсы Аэрофлота, отсортированные в алфавитном порядке по Пункту назначения. Запрос всегда является динамическим. Таблица, полученная в ходе запроса просто отражает данные из таблицы-источника. Поэтому верно и обратное — изменение данных в таблице-запросе меняет их и в таблице-источнике. Из этих соображений не следует редактировать таблицу-запрос.

На основе запроса можно построить отчет так же, как это делается в случае таблицы.

Фрагмент отчета на основе запроса

Фрагмент отчета на основе запроса.

Запрос может содержать несколько критериев отбора. Часто нужно получить записи, которые содержат любое из нескольких значений. Такие варианты записываются в строках Или.

Могут быть и другие ситуации, например требуется получить записи, которые не содержат значение. Или содержат максимальное значение. Вариантов много. Для таких случаев в Query Design имеется поле Функция.

Формы

Форма это просто удобный интерфейс для ввода данных и их редактирования в таблицах. Форму можно представить себе как трафарет, сквозь прорези которого видны поля одной строки таблицы. Этот трафарет можно сдвигать от строки к строке.

Конечно, можно заполнять базу путем наполнения и редактирования ячеек исходной таблицы. Часто так и делают. Но в больших базах этим могут заниматься совершенно разные люди, которые имеют доступ только к части данных и отвечают только за свой участок работы. Не все они могут обладать достаточной квалификацией. Здесь форма может оказаться полезной. К тому же ее можно сделать красивой, добавить на нее логотип и в результате получить законченный программный продукт, который не стыдно продемонстрировать.

Самый простой способ создания формы — использовать мастер. Он запускается после щелчка левой кнопкой мыши на пункте Использовать мастер для создания формы в правой верхней части рабочего поля.

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

Второй шаг — Установка субформы — можно пропустить. Он нужен в тех случаях, когда имеются вложенные формы. При пропуске этого шага следующие два также не выполняются.

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

Шестой шаг — Выбор режима источника данных — позволяет наложить некоторые ограничения на работу оператора с формой, а значит и с базой в целом.

На седьмом шаге мастера производится выбор стиля. Имеет смысл посмотреть их все, а затем выбрать наиболее подходящий.

Восьмой шаг — завершающий. Здесь надо будет задать имя для формы и подтвердить ее сохранение.

Готовая форма

Готовая форма.

Перемещаться между полями ввода формы удобно с помощью клавиши Tab.

Навигация по записям таблицы производится инструментами в нижней левой части рабочего пространства. Они обведены на иллюстрации красным овалом.

Файл с рассмотренной здесь базой данных можно скачать.

Поле со списком и другие усовершенствования формы

Выше отмечалось, что любые опечатки при вводе данных в таблицы будут приводить к получению неправильных запросов и отчетов. Одним из вариантов решения проблемы является копирование и последующая вставка содержимого ячеек. При работе с формой имеется еще один способ свести ошибки такого рода к минимуму — поле со списком. Поле ввода в этом случае можно сделать невосприимчивым к набору данных на клавиатуре. Эти данные надо будет выбирать из заранее составленного списка.

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

Для примера в поле со списком будет преобразована колонка Тип рейса. В ней имеется три варианта заполнения ячеек — пассажирский, грузовой и смешанный. То же самое могло бы быть сделано для колонки Тип самолета и в других подобных случаях, когда имеется разумное количество вариантов.

Варианты заполнения ячеек для колонки Тип рейса должны быть помещены в отдельную таблицу. Такие таблицы обычно называют справочниками. Любая реальная база данных использует множество справочников — адреса, названия организаций, выбор даты и другие.

Итак, в таблице Авиарейсы имеется колонка Тип рейса. Требуется создать еще одну таблицу Справочник — Тип рейса. В этой дополнительной таблице тоже будет колонка Тип рейса. Эта колонка будет единственной и она же будет ключом. Одноименные колонки в обеих таблицах должны иметь одинаковый тип данных.

В таблице Авиарейсы колонка Тип рейса имеет следующие характеристики:

  • Тип поля — Текст (VARCHAR);
  • Длина — 15 символов.

Надо создать таблицу Справочник — Тип рейса с единственной колонкой Тип рейса, которая имеет точно такие же характеристики. И затем заполнить эту новую таблицу данными.

Теперь можно создать связь ячеек колонки Тип рейса таблицы Авиарейсы с одноименной колонкой таблицы Справочник — Тип рейса. Такой тип связи носит название «один ко многим». Для создания связей служит пункт главного меню LibreOffice Base Сервис -> Связи. При его вызове отрывается окно Добавить таблицы. Здесь надо добавить обе, затем закрыть окно.

Связь делается так: мышкой выделяется поле Тип рейса в таблице Авиарейсы и, при нажатой левой кнопке мыши, курсор ведется к полю Тип рейса таблицы Справочник — Тип рейса. Должна образоваться связь. Если этого не произошло и появилось сообщение об ошибке (смысл которого обычно бывает трудно понять), то в первую очередь надо проверить, совпадает ли тип и длина данных в связываемых колонках.

Создание связи

Создание связи.

Половина дела сделана. Теперь можно изменить форму, точнее поле Тип рейса в ней. Если формы еще нет, то ее надо создать.

Для того, чтобы редактировать готовую форму, надо открыть ее меню по щелчку правой кнопки мыши на названии формы и выбрать пункт Изменить. Форма откроется в Режиме разработки, который имеет достаточно много возможностей для изменения внешнего вида и отображаемых данных. О работе с формой в Режиме разработки надо сказать несколько слов — просто для того, чтобы было понятно, что будет происходить дальше.

Форма содержит Элементы управления, например, такие как поля ввода. Типов элементов управления достаточно много — Кнопки, Метки, Флажки, Текст и другие. В том числе и Поле со списком. Элементы управления можно объединять в Группы. Это позволяет управлять группой элементов как единым объектом. Все это можно перемещать, масштабировать, настраивать вид и отображаемые данные.

Для выделения объекта (элемента управления или группы) надо сделать на нем щелчок левой кнопкой мыши. По щелчку правой кнопки мыши как обычно будет появляться частное меню объекта.

Рабочее пространство Режима разработки имеет три панели инструментов. Все активные кнопки снабжены всплывающими подсказками.

Верхняя панель — это стандартная панель всех приложений LibreOffice.

Левая панель служит для добавления в форму новых элементов управления.

Нижняя панель позволяет настраивать имеющиеся в форме элементы управления и саму форму в целом.

Для того, чтобы не пришлось закрывать Режим разработки каждый раз при внесении изменений, имеется одноименная кнопка (вторая сверху в левой панели инструментов), которая позволяет временно вернуться в обычный режим для проверки работы формы.

После этих небольших объяснений можно вернуться к созданию в форме поля со списком для элемента управления Тип рейса. В данном случае поле ввода уже присутствует в форме, поэтому добавлять его не надо. Но оно не имеет нужного типа. Для того, чтобы присвоить или изменить тип поля ввода, его нужно выделить. И здесь появляется сложность.

При выделении объекта Тип рейса выделяется не только поле ввода, но и текст, который ему сопутствует. Это происходит потому, что элементы объединены в группу. Для изменения только поля ввода надо воспользоваться пунктом частного меню объекта (по щелчку правой кнопки мыши на нем) Группировка -> Войти в группу. После этого можно выделить только поле ввода и настраивать именно его.

Частное меню и замена типа поля ввода

Частное меню и замена типа поля ввода.

На иллюстрации видно, что выделено именно поле ввода, а его частное меню дает возможность Заменить на -> Поле со списком, что и требуется. Осталось указать, какие данные будут отображаться в этом поле и как. Для этого служит окно Свойства, которое вызывается с помощью пункта частного меню Элемент управления. Внесенные изменения на иллюстрациях внизу отмечены красными овалами.

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

Окончательный вариант формы

Окончательный вариант формы.

Форма представляет собой по сути обычную страницу LibreOffice. Поэтому пункт главного меню Формат -> Страница дает доступ ко всем ее настройкам — размеру, ориентации, цвету фона и другим. Кроме того, и форма, и ее элементы имеют множество управляемых свойств, настроив которые можно получить очень неплохой результат.

Точно так же, как в других приложениях LibreOffice, в Base на страницу с формой можно добавить изображение, например, логотип — пункт главного меню Вставка -> Изображение -> Из файла (в режиме редактирования формы Изменить).

Файл с усовершенствованной базой данных можно скачать.

Сохранение

Для сохранения локальной базы данных LibreOffice Base доступен только один формат — База данных ODF. При этом вся база, включая запросы, отчеты и формы будет записана в один файл с расширением odb. Этот файл может быть свободно перенесен на другой компьютер.

  • Печать

Страницы: [1]   Вниз

Тема: Ошибка сохранения файлов в LibreOffice  (Прочитано 1345 раз)

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

Оффлайн
DuhLesa

Очень неприятную ошибку отловил в файлах odf(в частности в ods, хотя встречалась и в odt) при работе в LibreOffice.

При попытке открыть файл получаем сообщение:

Ошибка чтения.
Ошибка формата файла в поддокументе content.xml в позиции 2,1811811(строка, столбец).

Только вдумайтесь ошибка во второй строке но в позиции близкой к 2-м миллионам… МИЛЛИОНАМ!!!

Сломан файл…
Помня что это всего лишь ZIP-архив посмотрим всё ли хорошо в архиве.
Простой анализ:

zip -T file.odsпоказывает:

error:  invalid compressed data to inflate content.xml

что у нас проблема с файлом content.xml внутри архива (ну кто бы сомневался…) — основным файлом содержимого.

По заветам интернета пробуем восстановить ZIP-архив:

zip -F file.ods --out repaired_file.odsполучаем на экран:

Fix archive (-F) — assume mostly intact archive
Zip entry offsets do not need adjusting
 copying: mimetype
 copying: Configurations2/floater/
 copying: Configurations2/menubar/
 copying: Configurations2/popupmenu/
 copying: Configurations2/toolbar/
 copying: Configurations2/progressbar/
 copying: Configurations2/toolpanel/
 copying: Configurations2/images/Bitmaps/
 copying: Configurations2/statusbar/
 copying: Configurations2/accelerator/
 copying: manifest.rdf
 copying: meta.xml
 copying: styles.xml
 copying: content.xml
 copying: Thumbnails/thumbnail.png
 copying: META-INF/manifest.xml
 copying: settings.xml

И вот тут уже начинают терзать смутные сомнения… просто скопировал content.xml и всё?
Какое же это восстановление?! И конечно при проверке нового файла repaired_file.ods имеем ровно ту же ошибку:

error:  invalid compressed data to inflate content.xml

Ничего не «Fix archive»… ни разу!

При попытке достать content.xml с помощью оболочки Engramp имеем ту же ошибку:

error:  invalid compressed data to inflate

Все бесплатные программы для восстановления .ods возвращали такой же результат как пресловутая команда zip -F — нечитаемый. Единственная программа(демо версия) «SysInfoTools Calc Repair» показала что-то «восстановленное», но демо-версия не позволяет это записать и проверить результат. А стоит SysInfoTools Calc Repai весьма немалых денег и конечно никто её оплачивать не готов…

Уважаемое сообщество буду признателен за любую помощь и советы. Готов предоставить пяток «битых» файлов «для опытов», если кто-то готов щедро пожертвовать своим временем. Возможно кто-то уже решал подобные задачи восстановления и наработал прекрасный опыт — прошу поделиться.


Оффлайн
Dixi257

Добрый день! Описание больше похоже на ошибки файловой системы / сети. Приложите один файл, посмотрю.


Оффлайн
ALiEN175

DuhLesa, случайно не файлы по сети открываете? Насколько помню, либра плохо работает с сетевыми файлами.

ASUS P5K-C :: Intel Xeon E5450 @ 3.00GHz :: 8 GB DDR2 :: Radeon R7 260X :: XFCE
ACER 5750G :: Intel Core i5-2450M @ 2.50GHz :: 6 GB DDR3 :: GeForce GT 630M :: XFCE


Оффлайн
DuhLesa

Уважаемый Dixi257, спасибо за желание помочь. Я написал Вам на e-mail, но ответа пока не получил. Бросил на MEGA-облако файлик примера для всех кто ещё захочет посмотреть: https://mega.nz/file/PQkiHbzQ#pEXfZNwJbOG_P4Zx0hvk9gxYiylatHWmt7QxL1Sqlv4

Уважаемый ALiEN175, Вы в чём-то правы ошибки возникают кажется чаще при работе по сети. Смонтированы «общие» ресурсы у пользователей по smb-протоколу. Но это в корне ничего не меняет! Сотни файлов годами редактируются в таком режиме пользователями и всё хорошо! Например с doc-файлами проблем не замечено! И с 2013 года не было проблем ни с OpenOffice ни с LibreOffice. А вот с приходом 7-й версии LibreOffice начались какие-то вечные неурядицы.

А если файл сломался — то уже не важно на смонтированном он носителе или на локальном… Он сломан и не открывается.

Я немного поколдовал — что-то восстановить удалось…

Метод использовал такой:

1. Заготовить простой-пустой primer.ods -файлик. Открыть его менеджером архивов(у меня это engrampa), вытащить из архива образцовый content.xml(я его переименовал в primer-content.xml и держал под рукой)… Нам нужны будут оттуда закрывающие xml-тэги. Вот вроде этих:

            </text:p>
          </table:table-cell>
        </table:table-row>
      </table:table>
      <table:named-expressions/>
    </office:spreadsheet>
  </office:body>
</office:document-content>

2. Открыть менеджером архивов битый .ods-файл(например Отчёт.ods ну или что там у Вас поломалось?) и вытащить оттуда сломанный content.xml

3. Открыть простым текстовым редактором(у меня это mousepad) content.xml, найти последний закрывающийся xml-тег (обычно это </text:p> или </table:table-cell>) и удалить всё что после него (там обычно только «ошмётки» открывающих тегов) восстановить(скопировав из образца) последовательность закрывающих тегов(см. пример выше).

4. Вернуть «отремонтированный» content.xml в архив .ods-файла(мы договорились для примера что это Отчёт.ods у Вас поломался… Помните? Вот в архив Отчёт.ods и вложить преобразованный (дополненный необходимыми закрывающими тегами) content.xml с заменой старого(ломанного) content.xml(который содержался в архиве Отчёт.ods)).

5. Если всё сделано правильно — какую-то часть файла увидите открыв его LibreOffice.

« Последнее редактирование: 03 Августа 2021, 23:03:23 от DuhLesa »


  • Печать

Страницы: [1]   Вверх

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка при попытке создать папку epic games
  • Ошибка при попытке получить доступ к микрофону яндекс браузер