Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

6 Декабрь 2020, 01:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как связать поля запроса и формы?  (Прочитано 5474 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andy_trotc
Участник
**
Offline Offline

Сообщений: 5


« Стартовое сообщение: 1 Июнь 2016, 20:52 »

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


* Снимок экрана от 2016-06-01 20-20-41.png (19.58 Кб, 268x288 - просмотрено 29 раз.)

* Снимок экрана от 2016-06-01 20-20-00.png (9.81 Кб, 311x296 - просмотрено 29 раз.)
* test.odb (17.49 Кб - загружено 12 раз.)
Записан
andy_trotc
Участник
**
Offline Offline

Сообщений: 5


« Ответ #1: 2 Июнь 2016, 16:12 »

Мне хотелось бы, чтобы при внесении в форму названия населенного пункта, который уже есть в таблице и в запросе, в поле формы "Код нп" автоматически попадал соответствующий этому населенному пункту буквенно-цифровой код из запроса. Возможно требуется использовать какой-то макрос или запрос? А может это вообще невозможно осуществить  средствами LO Base?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 037


iMac, LibreOffice и Apache OpenOffice


« Ответ #2: 2 Июнь 2016, 23:34 »

Есть два варианта заполнения формы:
1. если данные имеются в базе, — раскрываем список и выбираем населенный пункт, код появляется автоматически. Жмём ENTER. (Проверяем запись в таблицу)

2. новые данные (нет в базе и в списке), — пишем название, жмём ENTER, пишем код, жмём ENTER. (Раскрываем список и видим новый населённый пункт, можно проверить запись в таблицу)

* test1.odb (18.55 Кб - загружено 38 раз.)
Записан

andy_trotc
Участник
**
Offline Offline

Сообщений: 5


« Ответ #3: 6 Июнь 2016, 21:41 »

Rami, понимаю, что огромное спасибо - это слишком много, поэтому сходил по ссылке в Вашей подписи ))
Во всяком случае, пинок я получил в нужном направлении ) 
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 037


iMac, LibreOffice и Apache OpenOffice


« Ответ #4: 7 Июнь 2016, 12:04 »

Rami, понимаю, что огромное спасибо - это слишком много, поэтому сходил по ссылке в Вашей подписи ))
Спасибо Всё хорошо
Записан

Hasim
Форумчанин
***
Offline Offline

Сообщений: 754

Woe from wit


« Ответ #5: 7 Июнь 2016, 13:12 »

rami, в таблице не должно быть повторяющихся строк (Сидоровка У12) - это грубая ошибка.
Возможно, там есть два населенных пункта Сидоровка, но с разными кодами.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 037


iMac, LibreOffice и Apache OpenOffice


« Ответ #6: 7 Июнь 2016, 13:56 »

в таблице не должно быть повторяющихся строк (Сидоровка У12) - это грубая ошибка.
С учётом автозаполнения первичного ключа полностью повторяющиеся строки невозможны.
Возможно, там есть два населенных пункта Сидоровка, но с разными кодами.
Я не знаю что должно быть в реальной базе, автор вопроса урезал до минимума образец базы чтобы не отвлекать внимание от вопроса. Я ответил на вопрос как макросом заполнить поле соответствующими данными, если будут дополнительные вопросы, можно продолжить.
Записан

Hasim
Форумчанин
***
Offline Offline

Сообщений: 754

Woe from wit


« Ответ #7: 7 Июнь 2016, 14:35 »

В таблице "Нас. пункты" встречаются повторяющиеся названия и соответствующие им буквенно-цифровые коды.
Из этой фразы ТС прямо следует, что есть повторяющиеся названия с разными кодами.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 037


iMac, LibreOffice и Apache OpenOffice


« Ответ #8: 7 Июнь 2016, 17:03 »

В таблице "Нас. пункты" встречаются повторяющиеся названия и соответствующие им буквенно-цифровые коды.
Из этой фразы ТС прямо следует, что есть повторяющиеся названия с разными кодами.
Я бы не сказал, что "прямо следует". Автору вопроса не нужно готовое решение, а нужен образец как решаются подобные задачи.

Но если вы хотите рассмотреть вариант где одному населённому пункту соответствуют несколько кодов (список выбора), нужно поле "кодНП" заменить на поле со списком. Вот такой вариант, может пригодится кому.

* test2.odb (18.75 Кб - загружено 17 раз.)
Записан

andy_trotc
Участник
**
Offline Offline

Сообщений: 5


« Ответ #9: 16 Июнь 2016, 17:15 »

Попробовал скопировать этот макрос в свою базу, в одном случае работает, в другом — нет. Для начала прочел бегло 500 страниц Питоньяка, но ответов не нашел.

Код:
Sub Main(ev)
DB=ThisComponent.Parent.DataSource.getConnection("","")
Statement=DB.createStatement()
zapros="SELECT ""MyColumn""    REM допустимо ли такое название столбца таблицы: «My)Column», т. е. с круглой скобкой?
FROM ""MyTable""                          REM допустимо ли такое имя таблицы: «My Table», т. е. с пробелом в названии?
WHERE ""MyColumn""='" & ev.Source.Text & "'"  REM что такое ev.Source? Поиск выдает сайты электромобилей
oResult=Statement.executeQuery(zapros)
If Not IsNull(oResult) And Not IsEmpty(oResult) Then
If oResult.Next Then s=oResult.getString(1)  REM что означает цифра «1» в скобках?
End If
ev.Source.Context.Controls(3).Text=s  REM что означает цифра «3» в скобках?
DB.Close()
End Sub

Где еще почитать?
« Последнее редактирование: 16 Июнь 2016, 17:17 от andy_trotc » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 037


iMac, LibreOffice и Apache OpenOffice


« Ответ #10: 16 Июнь 2016, 19:24 »

Цитата:
допустимо ли такое название столбца таблицы: «My)Column», т. е. с круглой скобкой?
Цитата:
допустимо ли такое имя таблицы: «My Table», т. е. с пробелом в названии?
Я стараюсь использовать сокращённые слова состоящие из букв и цифр без пробелов (без спецсимволов), хотя на пробелы и скобки база не ругается.
Цитата:
что такое ev.Source? Поиск выдает сайты электромобилей
Поиск смотрит в будущее Смеющийся
ev сокращение от слова event — событие — это параметр переданный событием (изменение содержимого элемента управления) в макрос, ev.Source это свойство Source переменной ev. Фактически ev.Source это элемент запустивший макрос, ev.Source.Text это текст записанный в элементе управления.
Цитата:
If oResult.Next Then s=oResult.getString(1)  REM что означает цифра «1» в скобках?
Цитата:
ev.Source.Context.Controls(3).Text=s  REM что означает цифра «3» в скобках?
Цифра в скобках означает номер элемента в массиве, в первом случае массив поиска, во втором массив элементов управления.
Попробовал скопировать этот макрос в свою базу, в одном случае работает, в другом — нет.
В моём примере номер элемента управления 3 (второе поле со списком), но если в новой базе (форме) другие элементы, нужно вносить соответствующие изменения в макрос.
Где еще почитать?
Кроме Питоньяка — форумы (как наш, только на других языках с Гуглом) и документация
Записан

andy_trotc
Участник
**
Offline Offline

Сообщений: 5


« Ответ #11: 16 Июнь 2016, 21:19 »

Благодарю! Пошел курить документацию  Непонимающий Но я еще вернусь, обязательно  Веселый
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!