Журнал LinuxFormat - перейти на главную

LXF85:OpenOffice.org Base

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
== OOo Base: Лоск ==
+
{{Цикл/OpenOffice.org Base}}
 +
 
 +
== OOo Base: Лоск вашей БД==
  
 
'' Данные бесполезны, если невозможно найти необходимую информацию.''
 
'' Данные бесполезны, если невозможно найти необходимую информацию.''
  
В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер
+
В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков
форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков
+
 
столбцов: например, '''Item (Вещь)''' и '''Serial Number (Серийный номер)''', и мы вручную ввели некоторые данные в ячейки. Теперь добавим в
 
столбцов: например, '''Item (Вещь)''' и '''Serial Number (Серийный номер)''', и мы вручную ввели некоторые данные в ячейки. Теперь добавим в
 
таблицу место для заметок и категорий, поиграем с интерактивными
 
таблицу место для заметок и категорий, поиграем с интерактивными
Строка 33: Строка 34:
 
редактирования. Если панелей инструментов '''Form Design (Разработка формы)''' и '''Form Controls (Элементы Управления)''' на экране нет, активируйте их из меню '''View > Toolbars (Вид > Панели инструментов)'''.
 
редактирования. Если панелей инструментов '''Form Design (Разработка формы)''' и '''Form Controls (Элементы Управления)''' на экране нет, активируйте их из меню '''View > Toolbars (Вид > Панели инструментов)'''.
  
Первое, что следует сделать — расчистить пространство для нового поля '''ItemType''' . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив '''Format > Group > Ungroup (Формат > Группировать > Разгруппировать)''' — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем '''Format > Group > Group (Формат> Группировать > Группировать)''' вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля ''ItemType.'''
+
Первое, что следует сделать — расчистить пространство для нового поля '''ItemType''' . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив '''Format > Group > Ungroup (Формат > Группировать > Разгруппировать)''' — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем '''Format > Group > Group (Формат> Группировать > Группировать)''' вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля '''ItemType'''.
 +
 
 +
Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов '''Forms Controls (Элементы управления)''' выберите иконку '''Text Box (Текстовое поле)''' и нарисуйте новое текстовое поле справа — точно так же, как рисуется прямоугольник в графическом пакете, то есть можно изменять размер, щелкнув на элементе и
 +
перетаскивая любую управляющую точку по углам и краям элемента. Если вам необходима большая точность, чем позволяют ваши глаза, щелкните правой
 +
кнопкой на элементе и выберите в контекстном меню пункт '''Position and Size (Положение и размер) '''. В появившемся окне можно менять — угадайте, что? -
 +
положение и размер выбранного элемента.
 +
 
 +
После размещения и установки размера элемента можно определить, как база данных будет его «видеть». Дважды щелкните на элементе и в появившемся
 +
диалоговом окне '''Properties (Свойства)''' выберите вкладку '''Data (Данные)'''. Главная опция здесь '''Datafield (Поле данных)''', и его
 +
действительно необходимо связать с заголовком таблицы базы данных, в данном случае это '''ItemType (Принадлежность)'''. Раз уж мы сюда попали,
 +
осмотримся: здесь можно много чего понаделать. Например, на вкладке '''General (Общие)''' располагаются опции для добавления 3D-вида формы (как на
 +
рисунках этого урока); можно изменить порядок обхода элементов (то есть порядок, в котором пользователь перемещается между элементами по клавише Tab);
 +
и установить текст по умолчанию для каждого элемента или перевести элемент в режим только для чтения. На вкладке '''Events (события)''' можно связать
 +
несколько макросов с различными действиями мыши и клавиатуры — но это уже вне рамок данного урока. Настроив элемент по своему вкусу, выберите '''Label
 +
Field (Метка)''', нарисуйте площадку выше (или сбоку) предварительно сделанного текстового поля, затем введите желаемый текст метки — я ввел текст
 +
'''ItemType''' для простоты. Сделав это, щелкните на элементе, затем при нажатой клавише Shift на обоих элементах, и сгруппируйте их. Так же мы
 +
поступим с элементом '''Notes (Описание)''', но в этот раз сделаем текстовое поле побольше (здесь, вероятно, будет больше информации) и в диалоговом
 +
окне '''Properties (Свойства)''', на вкладке '''General''', выберите для опции '''Text type (Тип текста)''' значение '''Multi-Line (Многострочный)'''.
 +
Пока мы в Редакторе форм, можно также добавить виджет-календарь для поля '''Date Purchased (Дата покупки)''', это намного упростит заполнение формы.
 +
Дважды щелкните на поле и на вкладке '''General''' найдите строку с названием '''Dropdown (Выпадающий)'''; выберите Yes (Да). Вот и все. Нажмите
 +
кнопку Save (Сохранить), и все готово для ввода данных. Можете закрыть окно Дизайнера форм, используя меню File > Quit (Файл > Выход). Вернувшись в
 +
главное окно, щелкните дважды на форме Инвентарь, чтобы открыть ее для ввода данных. Немного озадачивает то, что при этом форма базы данных может
 +
иметь в строке-заголовке суффикс только для чтения, но не беспокойтесь - записи, вводимые данным способом, сохраняются как обычно. В зависимости от
 +
настройки OOo на вашей машине, у вас уже может быть доступна правая панель. Если навигационная панель не размещается внизу окна (она содержит кнопки
 +
'''Back (Назад), Forward (Вперед), Save (Сохранить), Undo (Отменить)''' и т. д.), то для ее вывода выполните '''View > Toolbars > Form Navigation (Вид > Панели инструментов > Навигация формы)'''.
 +
 
 +
===Начинаем ввод===
 +
 
 +
Мы вводили данные в базу в прошлый раз, через табличный вид, так что несколько записей уже заполнено. Вы можете перемещаться по ним, используя кнопки
 +
'''Back (Назад)''' и '''Forward (Вперед)''' на панели навигации; или сразу начать ввод, нажмите кнопку '''New Record (Новая запись)''', расположенную по правому краю первого раздела кнопок (на ней изображена стрелка со звездочкой внутри). Перед вами появится абсолютно пустая запись с мигающим курсором в первом поле, обычно это поле ID. Вы можете начать ввод данных в различные поля, перемещаясь между ними при помощи клавиши Tab в установленном порядке
 +
обхода, как указывалось ранее, или выбирая нужное поле мышью. Заполнив запись, опять нажмите кнопку '''Новая запись'''. Это сохранит текущую запись и
 +
предоставит пустую для ввода данных. Панель навигации вблизи нижнего края содержит такие инструменты, как фильтрация и сортировка, кнопка отмены,
 +
опция '''Delete Record (Удалить запись)''', а у правого края панели - иконка для отображения таблицы базы данных и формы, очень полезного для просмотра
 +
деталей записей и их связей с другими данными в базе данных.
 +
 
 +
===Превращаем данные в информацию===
 +
 
 +
До сих пор мы работали над структурой базы данных и вводом данных в таблицы. Без этого не обойдешься; но если база данных для чего и нужна, так это для преобразования данных в наглядную информацию;
 +
возникает потребность в запросах. Не паникуйте: сами того не подозревая, концепцию запросов вы скорее всего уже освоили, поскольку каждый раз,
 +
посещая Google и вводя строку поиска, вы создаете запрос. Интернет можно рассматривать как огромную базу данных, и надежность результатов поиска
 +
Google основана на принципе разбиения этой базы по категориям. К примеру, рассмотрим стандартный поиск словосочетания '''Linux Format'''. На первой
 +
странице мы вводим строку поиска Linux Format и нажимаем кнопку Поиск. Google на самом деле ищет два слова: Linux и Format, поэтому страницы,
 +
содержащие оба этих слова, будут ближе к началу результирующего списка, чем страницы, содержащие только одно из них. Теперь представьте себе таблицу,
 +
используемую для этого поиска. Один столбец может быть озаглавлен Linux, а второй Format, и база данных отдаст приоритет страницам, содержащимся
 +
в обоих столбцах [отметим, что это - всего лишь наглядный пример, а не фактическая структура базы данных Google - прим.ред.].
 +
 
 +
В терминах баз данных,запрос - просто способ фильтрации ваших данных для просмотра подмножества базы данных. В прошлый раз мы рассматривали фильтры, и
 +
идея запросов в
 +
принципе та же - только мы можем сохранить эти критерии и применить их в любое время, или очистить их при необходимости. Рассмотрим пример.
 +
 
 +
Пример,
 +
вместо базы данных Домашний инвентарь (которая маловата для значительных запросов - я обычно закупаю больше!), основан на другом реальном проекте:
 +
библиографии книг и журналов, использованных за год обучения в университете. Это применимо к любой базе данных - ваши поля просто будут иметь другие
 +
имена.
  
Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов '''Forms Controls (Элементы управления)''' выберите иконку '''Text Box (Текстовое поле)''' и нарисуйте новое
+
Другой стороной поиска являются отчеты. Они выполняют ту же работу, что и
 +
запросы, с тем преимуществом, что результаты выводятся в виде таблицы в OOo Writer, и их можно распечатать и распространять обычным способом. Процесс
 +
создания отчета очень похож на создание запроса, но с дополнительным разделом, где можно выбрать стиль представления данных. Снова, OOo Base
 +
сохраняет критерии отчета на вкладке '''Reports (Отчеты)''', то есть отчет может быть многократно запущен в одной и той же базе данных, если данные
 +
изменились. OOo Base поддерживает большие проекты вроде списка членов и склада инструментов точно так же, как и малые наборы данных. В последних
 +
двух выпусках я описал только основы, но эти элементы применяются в большом классе приложений. Всегда помните, что полезность базы данных зависит от
 +
грамотности её структуры, так что с самого начала не пожалейте времени на отделку, и поймете, что работать с данными будет куда легче.

Текущая версия на 12:47, 16 января 2009

Содержание

[править] OOo Base: Лоск вашей БД

Данные бесполезны, если невозможно найти необходимую информацию.

В прошлом номере я явил миру свои привычки по закупке товаров, с целью показать вам, как строится простая база данных домашнего имущества. Напомню, что мы использовали мастера OpenOffice.org Base, чтобы определить, с какими данными работать (мастер таблиц), и создать простую форму для ввода данных (мастер форм); затем использовали табличный интерфейс для ввода, сортировки и фильтрации данных. В итоге получилась одна таблица и одна форма. Наша таблица имела несколько «полей», то есть заголовков столбцов: например, Item (Вещь) и Serial Number (Серийный номер), и мы вручную ввели некоторые данные в ячейки. Теперь добавим в таблицу место для заметок и категорий, поиграем с интерактивными виджетами форм и изучим запросы и отчеты как средство реорганизации базы данных.

Наша новая работа — редактирование таблиц базы данных с целью добавить место для заметок и опции ItemType (тип предмета, принадлежность): последняя поможет пользователю находить все предметы, относящиеся, скажем, к «компьютеру» или «кухне». Итак, запустите OOo Base и откройте созданную вами базу. Перейдите к таблицам, щелкнув на соответствующем пункте в левой панели главного окна Base, а затем правой кнопкой мыши на таблице, которую мы создали.

Теперь выберите пункт контекстного меню Edit (Правка), для перехода в экран редактирования таблицы. Этот экран, как и сама таблица, имеет типичный вид электронной таблицы, но сейчас в нем только три столбца с именами Field Name (Имя Поля), Field Type (Тип Поля) и Description (Описание) (см. рисунок). Столбцы Name и Type должны быть заполнены полями, которые вы определили при помощи мастера таблиц в прошлый раз. Для добавления нового поля данных необходимо просто щелкнуть на вакантной ячейке столбца Имя поля, задать имя и определить корректный тип данных. Новому полю ItemType можно придать стандартный тип Текст [VARCHAR], но новое поле Notes (Описание) в принципе может содержать много информации, поэтому лучше использовать для него тип данных Memo (Памятка) [LONGVARCHAR]. Не пугайтесь: элемент VARCHAR означает просто «изменяемый символ», а LONGVARCHAR — то же самое, только подразумевает более длинные текстовые строки.

Снова посмотрите на нижний рисунок. Если вы хотите изменить порядок полей в таблице, просто переместить поля вверх или вниз в списке нельзя — зато можно вырезать и вставлять строки, щелкая в крайней левой ячейке, где появляется маленький зеленый треугольник [столбец без надписей, с серым фоном — прим. пер.], а затем щелкнуть правой кнопкой для вызова контекстного меню. Когда вы сделаете это, все строки ниже вырезанных сдвинутся вверх к первой свободной строке, и любая операция вставки из буфера разместит вырезанную строку(-ки) внизу таблицы. На вид сложно, но вы быстро привыкнете к этому! Добавив новые поля и разместив их в нужном месте, вы можете — при желании — ввести описание, затем щелкнуть в верхней части окна на иконке панели инструментов с изображением дискеты для сохранения таблицы.

Закрыв окно правки, дважды щелкните на таблице в главном окне OOo Base, чтобы открыть ее в режиме добавления данных. Заметьте, что если у вас в таблице уже были данные, то они не уничтожаются при редактировании структуры таблицы; но вам потребуется пройтись по старым записям и заполнить прибавившиеся поля — всегда лучше делать все правильно с самого начала.

[править] Изменение формы

Хотя для ввода данных можно обойтись и таблицей, намного приятнее делать это в созданной нами форме (см. рисунок). Формы также облегчают восприятие отдельных элементов, потому что каждая запись отображается в своем собственном окне. В прошлый раз мы строили форму при помощи Мастера форм, а теперь добавим Notes (Описание) и ItemType (Принадлежность), которые мы уже добавили в таблицу; также улучшим дизайн, добавив виджет даты.

Для начала, щелкните на иконке Формы слева и затем выполните правый щелчок на форме Инвентарь (Household Inventory) (или как вы ее там назвали) и выберите Edit (Правка) для вызова главного окна редактирования. Если панелей инструментов Form Design (Разработка формы) и Form Controls (Элементы Управления) на экране нет, активируйте их из меню View > Toolbars (Вид > Панели инструментов).

Первое, что следует сделать — расчистить пространство для нового поля ItemType . К счастью, мастер форм в OOo автоматически группирует поля с их метками, то есть нужно просто щелкнуть на поле и перенести его в новое место. Если вы хотите передвигать метки и поля отдельно, разгруппируйте их, выбрав желаемое поле и выполнив Format > Group > Ungroup (Формат > Группировать > Разгруппировать) — используйте метод «щелчок, Shift+щелчок» для выбора нескольких элементов на странице, а затем путем Format > Group > Group (Формат> Группировать > Группировать) вновь объедините их. Мы щелкали на элементах и переносили их так, чтобы расчистить место в правом верхнем углу формы для размещения поля ItemType.

Теперь нам необходимо вставить в форму новую строку ввода для ItemType. На панели инструментов Forms Controls (Элементы управления) выберите иконку Text Box (Текстовое поле) и нарисуйте новое текстовое поле справа — точно так же, как рисуется прямоугольник в графическом пакете, то есть можно изменять размер, щелкнув на элементе и перетаскивая любую управляющую точку по углам и краям элемента. Если вам необходима большая точность, чем позволяют ваши глаза, щелкните правой кнопкой на элементе и выберите в контекстном меню пункт Position and Size (Положение и размер) . В появившемся окне можно менять — угадайте, что? - положение и размер выбранного элемента.

После размещения и установки размера элемента можно определить, как база данных будет его «видеть». Дважды щелкните на элементе и в появившемся диалоговом окне Properties (Свойства) выберите вкладку Data (Данные). Главная опция здесь Datafield (Поле данных), и его действительно необходимо связать с заголовком таблицы базы данных, в данном случае это ItemType (Принадлежность). Раз уж мы сюда попали, осмотримся: здесь можно много чего понаделать. Например, на вкладке General (Общие) располагаются опции для добавления 3D-вида формы (как на рисунках этого урока); можно изменить порядок обхода элементов (то есть порядок, в котором пользователь перемещается между элементами по клавише Tab); и установить текст по умолчанию для каждого элемента или перевести элемент в режим только для чтения. На вкладке Events (события) можно связать несколько макросов с различными действиями мыши и клавиатуры — но это уже вне рамок данного урока. Настроив элемент по своему вкусу, выберите Label Field (Метка), нарисуйте площадку выше (или сбоку) предварительно сделанного текстового поля, затем введите желаемый текст метки — я ввел текст ItemType для простоты. Сделав это, щелкните на элементе, затем при нажатой клавише Shift на обоих элементах, и сгруппируйте их. Так же мы поступим с элементом Notes (Описание), но в этот раз сделаем текстовое поле побольше (здесь, вероятно, будет больше информации) и в диалоговом окне Properties (Свойства), на вкладке General, выберите для опции Text type (Тип текста) значение Multi-Line (Многострочный). Пока мы в Редакторе форм, можно также добавить виджет-календарь для поля Date Purchased (Дата покупки), это намного упростит заполнение формы. Дважды щелкните на поле и на вкладке General найдите строку с названием Dropdown (Выпадающий); выберите Yes (Да). Вот и все. Нажмите кнопку Save (Сохранить), и все готово для ввода данных. Можете закрыть окно Дизайнера форм, используя меню File > Quit (Файл > Выход). Вернувшись в главное окно, щелкните дважды на форме Инвентарь, чтобы открыть ее для ввода данных. Немного озадачивает то, что при этом форма базы данных может иметь в строке-заголовке суффикс только для чтения, но не беспокойтесь - записи, вводимые данным способом, сохраняются как обычно. В зависимости от настройки OOo на вашей машине, у вас уже может быть доступна правая панель. Если навигационная панель не размещается внизу окна (она содержит кнопки Back (Назад), Forward (Вперед), Save (Сохранить), Undo (Отменить) и т. д.), то для ее вывода выполните View > Toolbars > Form Navigation (Вид > Панели инструментов > Навигация формы).

[править] Начинаем ввод

Мы вводили данные в базу в прошлый раз, через табличный вид, так что несколько записей уже заполнено. Вы можете перемещаться по ним, используя кнопки Back (Назад) и Forward (Вперед) на панели навигации; или сразу начать ввод, нажмите кнопку New Record (Новая запись), расположенную по правому краю первого раздела кнопок (на ней изображена стрелка со звездочкой внутри). Перед вами появится абсолютно пустая запись с мигающим курсором в первом поле, обычно это поле ID. Вы можете начать ввод данных в различные поля, перемещаясь между ними при помощи клавиши Tab в установленном порядке обхода, как указывалось ранее, или выбирая нужное поле мышью. Заполнив запись, опять нажмите кнопку Новая запись. Это сохранит текущую запись и предоставит пустую для ввода данных. Панель навигации вблизи нижнего края содержит такие инструменты, как фильтрация и сортировка, кнопка отмены, опция Delete Record (Удалить запись), а у правого края панели - иконка для отображения таблицы базы данных и формы, очень полезного для просмотра деталей записей и их связей с другими данными в базе данных.

[править] Превращаем данные в информацию

До сих пор мы работали над структурой базы данных и вводом данных в таблицы. Без этого не обойдешься; но если база данных для чего и нужна, так это для преобразования данных в наглядную информацию; возникает потребность в запросах. Не паникуйте: сами того не подозревая, концепцию запросов вы скорее всего уже освоили, поскольку каждый раз, посещая Google и вводя строку поиска, вы создаете запрос. Интернет можно рассматривать как огромную базу данных, и надежность результатов поиска Google основана на принципе разбиения этой базы по категориям. К примеру, рассмотрим стандартный поиск словосочетания Linux Format. На первой странице мы вводим строку поиска Linux Format и нажимаем кнопку Поиск. Google на самом деле ищет два слова: Linux и Format, поэтому страницы, содержащие оба этих слова, будут ближе к началу результирующего списка, чем страницы, содержащие только одно из них. Теперь представьте себе таблицу, используемую для этого поиска. Один столбец может быть озаглавлен Linux, а второй Format, и база данных отдаст приоритет страницам, содержащимся в обоих столбцах [отметим, что это - всего лишь наглядный пример, а не фактическая структура базы данных Google - прим.ред.].

В терминах баз данных,запрос - просто способ фильтрации ваших данных для просмотра подмножества базы данных. В прошлый раз мы рассматривали фильтры, и идея запросов в принципе та же - только мы можем сохранить эти критерии и применить их в любое время, или очистить их при необходимости. Рассмотрим пример.

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

Другой стороной поиска являются отчеты. Они выполняют ту же работу, что и запросы, с тем преимуществом, что результаты выводятся в виде таблицы в OOo Writer, и их можно распечатать и распространять обычным способом. Процесс создания отчета очень похож на создание запроса, но с дополнительным разделом, где можно выбрать стиль представления данных. Снова, OOo Base сохраняет критерии отчета на вкладке Reports (Отчеты), то есть отчет может быть многократно запущен в одной и той же базе данных, если данные изменились. OOo Base поддерживает большие проекты вроде списка членов и склада инструментов точно так же, как и малые наборы данных. В последних двух выпусках я описал только основы, но эти элементы применяются в большом классе приложений. Всегда помните, что полезность базы данных зависит от грамотности её структуры, так что с самого начала не пожалейте времени на отделку, и поймете, что работать с данными будет куда легче.

Персональные инструменты
купить
подписаться
Яндекс.Метрика