Связь формы с таблицей.

Автор Лапчатый, 24 июня 2010, 23:37

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

Лапчатый

Народ, просветите чайника.
Когда-то разрабатывал базы данных на Кларионе.
Там всё просто: листаю таблицу, выбираю нужную запись.
Выбрал, поставил на неё курсор, нажал Enter и попал в форму, отображающую выбранную запись.
Отредактировал данные, запись сохранил и вернулся в таблицу.
Как нечто подобное сделать в OOo.Base?
Тоись полистал таблицу, выбрал нужную запись и с помощью формы её отредактировал.
Или я хочу невозможного и в OOo.Base совсем другая парадигма?

dr.Faust

Не знаю.
Напишу почти оффтоп (просто всегда интересовало):
Но вот зачем? И редактируйте запись сразу в таблице. Почему так нельзя?
На работе написал свою "программу" учёта, только чтобы небыло дурацких форм - так они мешают работе... Мы меряли отом скорость - редактирование в таблице у нас получилось в 8-10 раз быстрее.
Свобода информации - свобода личности!

Syzygy

Цитата: Лапчатый от 24 июня 2010, 22:37Тоись полистал таблицу, выбрал нужную запись и с помощью формы её отредактировал.
Насколько понял, такой функции нет.

Цитата: dr.Faust от 24 июня 2010, 23:08Но вот зачем?
Удобно иногда бывает, особенно если записи длинные. К примеру, прямо в таблице отфильтровал записи, нашёл по первому полю что-то и дальше уже в форме, чтобы не ошибиться. Оно понятно, что "можно быстрее", но некоторым удобнее по-другому.
A Matter of Life and Death

dr.Faust

Макрос можно прикрутить.
Свобода информации - свобода личности!

Лапчатый

#4
Цитата: dr.Faust от 25 июня 2010, 13:25Макрос можно прикрутить.
Ужос.
В досовском Кларионе 20 лет назад это делалось автоматом, без всякого программирования.

Лапчатый

#5
Цитата: dr.Faust от 24 июня 2010, 23:08Но вот зачем? И редактируйте запись сразу в таблице. Почему так нельзя?
Страшно неудобно.
Запись длинная. К тому же содержит пару memo-полей (памяток).

Лапчатый

Цитата: dr.Faust от 25 июня 2010, 13:25Макрос можно прикрутить.
Pardon, совсем чайник.
1. Как к таблице макрос прикрутить?
2. Как из макроса форму вызвать, подставив в неё текущую запись таблицы?

JohnSUN

Цитата: Лапчатый от 26 июня 2010, 00:00
Pardon, совсем чайник.
Категорически не согласен! Человек, который правильно пишет слова "DOS" и "Кларион", чайником являться не может!  ;D
Цитата: Лапчатый от 26 июня 2010, 00:001. Как к таблице макрос прикрутить?
Не к таблице, к форме.
В Кларионе было так же: форма привязывалась к данным (таблице целиком или к отдельной записи), из полей формы вызывались другие формы...
Общая структура пользовательского интерфейса так и строилась: меню, из каждого пункта которого вызывается новая форма; эта новая форма может быть другим меню, списочной формой или отчетом (кране редко - формой одной записи: это обычно были настройки программы, отдельная таблица из одной записи с кучей полей); в списочной форме по Insert и Enter открывалась форма для новой или текущей записи (по Delete форма была не нужна). В форме записи, если отдельное поле ссылалось на таблицу, открывалась списочная форма выбора для той таблицы, в которой в свою очередь можно было открыть форму записи для ввода новой строки или изменения существующей...
То есть все механизмы сводились к двум десяткам стандартных переходов, которые были описаны в шаблонах (тэмплейтах) - иногда коротких, на десяток строк кода, иногда поболе - строк 150-200...
Описав структуру базы (таблицы с данными и их взаимосвязь), создав нужные формы (можно было сделать это и автоматически - не очень красиво, зато быстро), а затем описав логику пользовательского интерфейса (из какой формы какая и где будет вызываться) можно было автоматически сгенерировать полный код работающей программы. На самом деле это тоже была программа из отдельных операторов, ее можно было прочитать и кое-где подправить руками, но это было уже не обязательно. То есть пользователь Клариона реально программировал, хотя мог об этом и не догадываться.
Похожие механизмы (генерация кода по шаблону) прорабатывались и для других СУБД. Например, тэмплейтами для Клиппера программисты обменивались постоянно...
Цитата: Лапчатый от 26 июня 2010, 00:002. Как из макроса форму вызвать, подставив в неё текущую запись таблицы?
Эм... Не совсем понял вопрос, но ответить попробую  :)
Я начинал со справки ООо, раздел Basic, восьмой пункт снизу - "Примеры программирования для элементов управления в редакторе диалоговых окон". Это не совсем то (или правильнее - "совсем не то"), что надо именно сейчас. Просто когда я заставил заработать каждый из приведенных там примеров - пришло хоть какое-то понимание и дальше пошло легче: Питоньяк, xRay, обсуждения на форуме... А прикручивается готовый макрос к событиям или формы или отдельных её элементов. Но об этом, наверное, чуть позже, да?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Лапчатый

#8
Цитата: JohnSUN от 26 июня 2010, 11:12новая форма может быть другим меню, списочной формой
Большое спасибо за подробный ответ, буду осмыслять.
Для начала вопрос: правильно ли я понимаю, что списочной формой в Base называется то, что в кларионовском дизайнере называлось таблицей?
Ибо, если мне склероз не изменяет, то, что в Base называется таблицей, в кларионовском дизайнере называлось файлом.
Как раньше по этому поводу говорили фидошники, слэнги  ведь свои даже  в  pазных хакерских тусовках, а в фанских эхах и подавно.


Лапчатый

Итак, благодаря уважаемому JohnSUN осваиваю терминологию, принятую в OOo.Base.
Тады переформулирую первоначальный вопрос.
Имею списочную форму, отображающую некоторую таблицу. Так как запись длинная, то списочная форма отображает не все ейные поля.
Листаю оную списочную форму и выбираю нужную запись.
Вопросы.
1. Как теперь вызвать простую (не списочную) форму, отображающую выбранную запись и позволяющая её редактировать?
2. Как вызвать ту же форму для добавления записи в таблицу?

dr.Faust

А просто субформой обойтись нельзя?
Свобода информации - свобода личности!

Лапчатый

Цитата: dr.Faust от 29 июня 2010, 19:26
А просто субформой обойтись нельзя?
Скорее всего, можно. Я уже пытался пройти в этом направлении.
Но попытка воспользоваться мастером для генерации списочной формы с простой субформой приводит к зависанию мастера.
А как такую пару соорудить без мастера, пока не разобрался.

dr.Faust

У меня нормально получилось - только что проверил 2 раза.
Можно пример вашей базы?
Свобода информации - свобода личности!

Лапчатый

Цитата: dr.Faust от 30 июня 2010, 11:38
У меня нормально получилось - только что проверил 2 раза.
Можно пример вашей базы?
Pardon, сейчас на службе, а база дома. Так что смогу только вечером.
Да, уточню - OpenOffice.org 3.1, под Linux (Ubuntu 9.10).

Лапчатый

Цитата: Лапчатый от 30 июня 2010, 12:11Так что смогу только вечером.
Ищо раз pardon. Приболел, поэтому прям тогда не получилось.
Вот пример базы:
http://file.qip.ru/file/Zi1hTnIz/Inventar.html
Собсно, это даже базой назвать слишком сильно.
1 таблица.
1 списочная форма "Список".
1 обычная форма (учётная карточка) "Редактирование".

Дык, как можно полистать форму "Список", выбрать нужную запись и отредактировать её с помощью формы "Редактирование"?