Совет дня


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

Опросы

Какую сборку OpenOffice.org вы используете сейчас?

см. также...

Нашли опечатку?

 
Выделите ошибочный текст, нажмите CTRL+ENTER и отправьте нам сообщение
 
Выпадающий список в форме или как связать таблицы Печать E-mail
Автор olegger   
05.04.2008 г.

В данной статье представлено пять вариантов создания выпадающего (раскрывающегося) списка в форме OOo Base.

Все варианты снабжены снимками экрана и примерами файлов.

Рекомендуется к прочтению начинающему пользователю OpenOffice.org Base Улыбающийся

 

Вариант 1.

Image

Создать связь между таблицами: в меню: Сервис-Связи.

Image 

Затем добавить обе таблицы. Взять мышкой за ключ iduser в Таблице 2 и потянуть его до поля iduser в Таблице 1.

Image

Создать Представление (там же, где и таблицы).

Image

Далее как в запросе: Добавить Таблицу 2. Выбрать из списка первого столбца:

  • в Поле nameuser,
  • в Таблица tbl_Tablica-2,
  • из списка второго столбца в Поле iduser,
  • в Таблица tbl_Tablica-2, не забудьте поставить галочки в квадратиках.

В Представлении будут только два поля:
   1. nameuser из Таблицы 2;
   2. iduser из Таблицы 2.
Image

После создания формы на основе Таблицы 1, заменить поле в iduser на список.

Image

В поле Списка кликнуть мышью, выбрать Элемент управления,

Image

далее в Данные, в Тип содержимого списка заменить на Таблицу, в Содержимое списка заменить на Представление,
а в Связываемое поле поставить поле 1 (т.е. Nameuser).

Image

ИТОГ: В соответствующее поле Таблицы 1 записывается id а в Форме отображается текст из nameuser Представления.


Вариант 2.

Image

  • Меняются местами поля iduser и nameuser в Таблице 2.
  • Создать связь между таблицами.
  • Представление не создается.
  • После создания формы на основе Таблицы 1, заменить поле в iduser на список.
  • В поле Списка кликнуть мышью, выбрать Элемент управления, далее в Данные, в Тип содержимого списка заменить на Таблицу, в Содержимое списка заменить на Таблицу 2, а в Связываемое поле поставить поле 1 ( т.е. Nameuser).

Image

ИТОГ: В соответствующее поле Таблицы 1 записывается id а в Форме отображается текст из nameuser Таблицы 2.


Вариант 3.

 Image

Главное условие - чтобы названия полей совпадали.

  • В Таблице 2 только одно поле nameuser - оно текстовое и является ключом.
  • Создать связь между таблицами.
  • Представление не создается.
  • После создания формы на основе Таблицы 1, заменить поле в iduser на Поле со списком.

Image

В поле Поле со списком кликнуть мышью, выбрать Элемент управления, далее в Данные, в
Тип содержимого списка заменить на Таблицу, в Содержимое списка заменить на Таблицу 2.

ИТОГ: В соответствующее поле Таблицы 1 будет писаться текст из nameuser Таблицы 2. В форме отображается текст из nameuser Таблицы 2.


Вариант 4.

Image

Смотри Таблицу 1 — как в третьем варианте, а Таблицу 2 — как в первом.

Главное условие - чтобы названия полей совпадали.

  • Связь между таблицами не создавать.
  • После создания формы на основе Таблицы 1, заменить поле в nameuser на Поле со списком.
  • В поле Поле со списком кликнуть мышью, выбрать Элемент управления, далее в Данные, в Тип содержимого списка заменить на Таблицу, в Содержимое списка заменить на Таблицу 2, как в предыдущем Варианте.

ИТОГ: В соответствующее поле Таблицы 1 будет писаться текст из nameuser Таблицы 2. В форме отображается текст из nameuser Таблицы 2.


вариант 5.

 Image

Обе Таблицы - как в предыдущем варианте.
  • Связь между таблицами не создавать.
  • После создания формы на основе Таблицы 1, заменить поле в nameuser на Поле со списком.
  • В поле Поле со списком кликнуть мышью, выбрать Элемент управления, далее в Данные, в Тип содержимого списка заменить на Sql, в Содержимое списка заменить на: SELECT "nameuser" FROM "tbl_Tablica-2". Или сгенерировать запрос SQL в конструкторе Команда SQL (начиная с версии OpenOffice.org 2.4), добавив туда Таблицу 2. Далее - как в запросе (Добавить Таблицу 2. Выбрать из списка в Поле  nameuser, в Таблица tbl_Tablica-2, не забудьте поставить галочку в квадратик).

Image
Image

ИТОГ: В соответствующее поле Таблицы 1 будет писаться текст из nameuser Таблицы 2. В форме отображается текст из nameuser Таблицы 2.


P.S.

Если ваша форма в виде таблицы, то применяем все то же самое. Только вместо заменить
поле в iduser на список
, кликаем мышью на названии столбца iduser и выбираем Заменить
на список
.
Image
Вместо Элемент управления выбрать Столбец.

Image 

Image

p.p.s 

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

 

Последнее обновление ( 05.04.2008 г. )
 

Комментарии 

 
0 #8 Apache 2009-01-26 07:51 Ура! Огромное спасибо!
Методом научного тыка у меня что-то плохо получаться начало
А так прямо разжевано.
Цитировать
 
 
0 #7 dvc 2008-08-20 12:19 Продублирую еще здесь вопрос:

Большое спасибо автору за документ. Кратко и доступно! Лично мне очень помогло.

Но хотелось бы еще одно добавление запросить в статью:

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

Хотелось бы увидеть текст макроса, который перечитывает выпадающий список ( listbox.reset() ?) и рекомендации, к каким событиям лучше и безопаснее привязать этот макрос. Потому что при неправильной привязке, можно получить бесконечный цикл обновления…
Цитировать
 
 
0 #6 dvc 2008-08-05 13:51 Удерживая ctrl Цитировать
 
 
0 #5 Aico 2008-06-17 18:39 Удерживая что??? А то для редактирования свойств поля всегда приходилось применять "Группировка - изменить группу", что отнимает некоторое количество времени, особенно если полей много… Цитировать
 
 
0 #4 aise 2008-06-05 19:39 Можно и просто щелкнуть по полю, удерживая Цитировать
 
 
0 #3 dr.Faust 2008-05-25 13:00 Разобрался.
Грешным делом решил, что элементы управления форм БД чем-то отличаются от обычных.
Нужно всего лишь разгруппировать лэйбл и фиелд.
Цитировать
 
 
0 #2 dr.Faust 2008-05-24 21:41 А что делать если в контекстном меню отсутствует пункт 'Заменить на'? Цитировать
 
 
0 #1 Юра 2008-04-07 09:23 Посетителями форума-источника отмечено что этими пятью способами не исчерпываются возможности ООо по связыванию таблиц в выпадающих списках, в том числе, что формы можно создавать не только в dBase, но и во Writer, однако это, пожалуй, уже для тех кто прошел ступеньку "начинающих" для которых и написана эта статья. Цитировать
 

Добавить комментарий

Уважаемые гости сайта! Мы не оказываем поддержку пользователей в формате комментариев и не отвечаем на вопросы по использованию OpenOffice.org, заданные в комментариях. Если Вам требуется такая поддержка, воспользуйтесь формой для сбора вопросов по OpenOffice.org.
Ваш комментарий будет опубликован после просмотра модератором


Защитный код
Обновить

« Пред.