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

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

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

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

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

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

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. Этот файл может быть свободно перенесен на другой компьютер.

I am working with LibreOffice Base and I’ve made a form to insert data in my table, but when I open this form ( not in Design-mode, just right-mouse click and select ‘Open’ ), I am able to view the existing records, but I am not able to change and save the records.

My problem

Am I doing something wrong?

Thanks for your time!

  • libreoffice
  • records
  • designmode

James Thorpe's user avatar

James Thorpe

31.3k5 gold badges72 silver badges92 bronze badges

asked Nov 25, 2014 at 10:43

M Zeinstra's user avatar

M ZeinstraM Zeinstra

1,9014 gold badges16 silver badges45 bronze badges

1

  • Can I suggest that you add an answer to your own question, and then mark that as the accepted answer? It makes it clearer that the question has been answered.

    Nov 25, 2014 at 14:46

1 Answer

Tables in LibreOffice Base need a primary key. Only then you can change and save records.

answered Nov 27, 2014 at 8:53

M Zeinstra's user avatar

M ZeinstraM Zeinstra

1,9014 gold badges16 silver badges45 bronze badges

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

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

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

Ошибка вставки новой записи [РЕШЕНО]

Автор GOYa, 20 мая 2010, 11:14

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

Помогите.

При вводе данных из формы выдает

«Ошибка вставки новой записи»

Прм повторном вводе

«Ошибка вставки новой записи»
Состояние SQL: 23000
Код ошибки: -104

Violation of unique constraint SYS_PK_47: duplicate value(s) for column(s) «ID» in statement [INSERT INTO «Таблица1» ( «ID»,»Test») VALUES ( ?,?)]

Но данные в таблицу вводятся.

[вложение удалено Администратором]


Очевидно, в поле ID вводятся повторяющиеся значения. Поскольку данное поле у Вас объявлено первичным ключом, его значения должны быть уникальными.


Насколько хватает моих знаний — ругается на то, что вводятся одинаковые значения в поле ID, которое должно быть уникальным, ибо первичный ключ.
Update: Упс, опередили :)
А вообще, первичный ключ-ID лучше делать самозаполняющимся, т.е. выставить Автозначение в «Да».

A Matter of Life and Death


В том то и вопрос, что таблица изначально пустая, а вводится первая запись.

См. прикрепл. файл.


она не пустая.

Update: у Вас форма в режиме «только добавление», поэтому существующие записи не показываются.

[вложение удалено Администратором]


Цитата: Helen от 20 мая 2010, 11:58
она не пустая.

Update: у Вас форма в режиме «только добавление», поэтому существующие записи не показываются.

Приношу свои извинения за кривизну рук. Но делал все по мануалу:

создал базу
в ней таблицу с двумя полями: ID- самозаполняющийся и name — текстовое поле
мастером прикрутил форму только для ввода данных
и когда ввожу запись в поле name выскакивает эрор из первого поста хотя данные в таблицу таки заносятся. ???

[вложение удалено Администратором]


Цитата: GOYa от 20 мая 2010, 14:11и когда ввожу запись в поле name выскакивает эрор из первого поста

не могу воспроизвести. Расскажите пошагово, как вносятся данные в форме, начиная с открытия.


Цитата: GOYa от 20 мая 2010, 14:11и когда ввожу запись в поле name выскакивает эрор из первого поста хотя данные в таблицу таки заносятся.

Воспроизвёл. Что интересно — так когда форма создана только для внесения новых данных. Если форма позволяет просматривать и редактировать уже существующие данные, ошибки нет.

A Matter of Life and Death



1. Открыл файл
2. Вызвал форму tab1
3. В поле name ввёл данные
4. Нажал иконку «Следующая запись» на нанели инструментов Навигация формы
5. Ошибка.

A Matter of Life and Death


не могу :)
ООо 3.2.1 RC1.


Самое интересное, что эта трабла с оигинальной Оо 3.2, а с Оо 3.1 от Nowell с той же самой базой проблем нет ???


Цитата: GOYa от 20 мая 2010, 14:59Самое интересное, что эта трабла с оигинальной Оо 3.2, а с Оо 3.1 от Nowell с той же самой базой проблем нет

Видимо, проблему закрыли в Go-OO раньше. Через неделю где-то выйдет 3.2.1 Communinty, проверим ещё разочек там.

A Matter of Life and Death


Цитата: Syzygy от 20 мая 2010, 16:07

Цитата: GOYa от 20 мая 2010, 14:59Самое интересное, что эта трабла с оигинальной Оо 3.2, а с Оо 3.1 от Nowell с той же самой базой проблем нет

Видимо, проблему закрыли в Go-OO раньше. Через неделю где-то выйдет 3.2.1 Communinty, проверим ещё разочек там.

Нет в Go-OO 3.2-13 этот баг есть. Нет в Оо 3.1 от Nowell. Но возможно его нет и в оригинале Оо 3.1


Свобода информации — свобода личности!


Я пытаюсь сохранить стиль таблицы как именованный стиль в модуле записи 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 » (аналог кнопки «Стили абзаца»).

Это ошибка?

  • Ошибка при попытке сохранения данных warcraft 3
  • Ошибка при попытке создать папку epic games
  • Ошибка при попытке расшифровать сообщение стек java lang nullpointerexception
  • Ошибка при попытке получить доступ к микрофону яндекс браузер
  • Ошибка при попытке получить доступ к микрофону опера gx