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

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

11 Август 2022, 20:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 26


« Стартовое сообщение: 16 Июль 2022, 11:12 »

Есть панель навигации самой оболочки, в которой есть поиск.
но там огромная форма с кучей полей.
мне нужно создать в самой форме поле поиска по конкретному полю таблицы.
долго искал - пока ничего похожего не нашел.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 719


« Ответ #1: 16 Июль 2022, 14:20 »

Вот тут есть все в нескольких вариантах: https://wiki.harlamenkov.ru/wiki/RU/kb/00000359
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
at0mix
Участник
**
Offline Offline

Сообщений: 26


« Ответ #2: 16 Июль 2022, 15:27 »

Огромное спасибо!
дня 4 шерстил инет - а эту статью не нашел %(
думаю что какой нибудь вариант подойдет.
Записан
at0mix
Участник
**
Offline Offline

Сообщений: 26


« Ответ #3: 27 Июль 2022, 08:40 »

Вот тут есть все в нескольких вариантах: https://wiki.harlamenkov.ru/wiki/RU/kb/00000359
Теперь нужна помощь - разобраться в ошибках
стоит ЛО 7.3.2.2, база firebird встроенная (как посмотреть версию не знаю)

макрос:
Sub findPK(oEvent)
   Dim oControl      'Элемент управления - источник сообщения
   Dim oForms      'Коллекция форм
   Dim oForm      'Главная форма
 
   oControl = oEvent.Source
   oForms = oControl.getModel().getParent().getParent()
   oForm = oForms.getByName("Список ПК")
   oForm.Filter = "'Имя ПК' like '" & oControl.Text & "*'"
   oForm.reload()
End Sub

таблица "Список ПК"
поле "Имя ПК"

Ошибка обновления текущей записи /builds/AstraOS/buildsystem/astra-build-fixes/ci__libreoffice/libreoffice-7.3.2/connectivity/source/commontools/dbtools.cxx:747

firebird_sdbc error:
*violation of PRIMARY or UNIQUE KEY constraint "INTEG_21" on table "Список ПК"
*Problematic key value is ("Имя ПК" = 'vdnpp2676') caused by 'isc_dsql_execute'
 /builds/AstraOS/buildsystem/astra-build-fixes/ci__libreoffice/libreoffice-7.3.2/connectivity/source/drivers/firebird/Util.cxx:68

в навигаторе форм перенес кнопку с макросом в первый уровень - ошибка исчезла.
но выяснил что вместо поиска этот макрос работает в режиме перезаписи поля в текущей записи.
т.е. при старте в поле выводится текст из поля "Имя ПК" первой записи. если я ввожу в это поле какой либо текст - этот текст просто перезаписывает поле в текущей записи. если перейти в панели навигации на другую запись - эффект такой же.
вообще ничего не понимаю.........
« Последнее редактирование: 27 Июль 2022, 11:59 от at0mix » Записан
sokol92
Мастер
*****
Online Online

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


WWW
« Ответ #4: 27 Июль 2022, 12:44 »

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

Владимир.
at0mix
Участник
**
Offline Offline

Сообщений: 26


« Ответ #5: 27 Июль 2022, 14:26 »

Сама по себе ошибка говорит, что Вы пытаетесь добавить в таблицу запись с уникальным ключом, который уже есть в таблице.
Спасибо.
Вообще есть где-то описание расшифровок ошибок?

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

есть еще какие-либо варианты создать в форме поле поиска? ничего найти не могу подходящего......
Записан
at0mix
Участник
**
Offline Offline

Сообщений: 26


« Ответ #6: 28 Июль 2022, 09:12 »

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

в разделе Таблицы - "неделя" рабочая - просто хранит номер отчетной недели (на будущее)
"Список ПК" - основная таблица.
Формы:

- "СписокПК-кнопка" - поиск и вывод в форму найденной записи. имя ПК вводится в поле поиска, после нажатия на кнопку в основной форме должна выводиться найденная запись - не работает. плюс еще в форме не редактируются поля.

- "Список ПК-макрос" - макрос поиска. тоже не работает %( но данные редактируются

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

* линукс-01-макрос.odb (152.23 Кб - загружено 6 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #7: 28 Июль 2022, 18:10 »

- "Список ПК-макрос" - макрос поиска. тоже не работает %( но данные редактируются
Попробуйте в макросе заменить соответствующую строчку на эту:
Код:
oForm.Filter = """Имя ПК"" LIKE '" & oControl.Text & "*'"
У меня работает.
Записан

sokol92
Мастер
*****
Online Online

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


WWW
« Ответ #8: 28 Июль 2022, 18:31 »

Спасибо за пример. Теперь мы можем поэтапно двигаться вперед.

1. В форме "СписокПК-кнопка" не редактируются поля.

Исправляем.
Заходим в режим редактирования формы, Меню / Формы / Свойства формы, вкладка "Данные". Меняем значение свойства "Анализ команд SQL" на "Да". Сохраняем форму (Ctrl+S) и закрываем.
Открываем эту же форму для показа данных. Пробуем изменить какое-нибудь поле, открытое для редактирования (например, ФИО).
Обратите внимание на инструментальную линейку внизу формы и тщательно исследуйте все кнопки. Вы должны получить ответы на большинство заданных вопросов.

Например, мы хотим выставить фильтр для просмотра всех полей, у которых поле "линукс" формы равно 1. Ищем внизу кнопку "Фильтр (Ctrl+Shift+L)", наживаем на нее. Теперь в поле "линукс" вводим 1 и внизу нажимаем кнопку "Применить фильтр". Мы видим, что в результате осталось 7 записей, у которых поле "линукс" равно 1.

Макросы на этом этапе нам не нужны.

Сделаем перерыв на освоение изложенного.
Записан

Владимир.
at0mix
Участник
**
Offline Offline

Сообщений: 26


« Ответ #9: 29 Июль 2022, 09:11 »

Попробуйте в макросе заменить соответствующую строчку на эту:
Код:

oForm.Filter = """Имя ПК"" LIKE '" & oControl.Text & "*'"

У меня работает.
Спасибо - учту на будущее про одинарные, двойные кавычки и экранирование %(

только тут другая засада - это работает "на посмотреть". т.е. по факту в форму подставляется ОДНА запись (или несколько если по маске выбрано) из СЕЛЕКТА. Соответственно попытка редактирования этой выбранной записи приводит к ошибке:
Ошибка обновления текущей записи /builds/AstraOS/buildsystem/astra-build-fixes/ci__libreoffice/libreoffice-7.3.2/connectivity/source/commontools/dbtools.cxx:747
Код ошибки: 1
firebird_sdbc error:
*violation of PRIMARY or UNIQUE KEY constraint "INTEG_21" on table "Список ПК"
*Problematic key value is ("Имя ПК" = 'vdnpp0171')
caused by 'isc_dsql_execute'

т.е. как поиск макрос работает, но аналога встроенного в оболочку поиска нет. а встроенный в оболочку поиск ищет запись по условию и устанавливет найденную запись (не результат выборки а именно запись!) в форме. и тогда я могу редактировать поля этой записи.

т.е. в данном случае нужно как-то сохранить внесенные в полях формы изменения и опять же макросом сделать запись этих изменений.

т.е. мою задачу - установить указатель на запись №ХХ в таблице, содержащую в поле УУ текст АА - не выполняет.....
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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