Присвоить данные ячейке

Автор MasterLi, 8 февраля 2022, 11:11

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

MasterLi

Как ячейке присвоить данные из базы данных (по сути сделать её текстовым полем) ?
Причём чтобы можно было передвигаться по записям в таблице и содержимое ячейки менялось.

eeigor

#1
Не совсем понятен вопрос. Однако так можно переходить по записям в текстовом процессоре (Writer, поля слияния документа), а Вы открыли тему в Calc, где данные из базы данных загружаются на лист (doImport) и помещаются в диапазон базы данных. Все записи видны на листе, каждая в своей строке.
Останьтесь в базе данных, просматривайте записи по одной в текстовых полях формы.
Что Вы делаете?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

MasterLi

Я хочу, чтобы в определённые ячейки подтягивались данные из базы данных и их можно было листать, как в форме.

Например, ФИО, дата рождения и т.п.

Работать нужно именно в Calc.

Такое можно реализовать ?

eeigor

#3
Думаю, что нет. А к форме Calc, которая должна делать то, о чём Вы просите, много претензий. Посмотрите тему.
Но листать она будет всё равно диапазон данных листа (отдельные строки, которые можно видеть).
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

1) Ctrl+Shift+F4 - находим данные и тянем нужные поля за их заголовки - во Writer/Calc/Impress/Draw
2) Вид-Панели...-Элементы... и жмем на Угольник (Режим разработки)
3) Тащим контрол >| Панель навигации
4) Отключаем Угольник
5) Щелкаем кнопки в Панели навигации - получаем что хотели

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

eeigor

Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

MasterLi

Цитата: economist от  9 февраля 2022, 13:46
1) Ctrl+Shift+F4 - находим данные и тянем нужные поля за их заголовки - во Writer/Calc/Impress/Draw
2) Вид-Панели...-Элементы... и жмем на Угольник (Режим разработки)
3) Тащим контрол >| Панель навигации
4) Отключаем Угольник
5) Щелкаем кнопки в Панели навигации - получаем что хотели

База данных д.б. зарегистрирована в LO

Это же не ячейке присваивается. Это образуется текстовое поле с этикеткой. Так можно и руками сделать.

economist

В посте #0 упомянуты текстовые поля, а способ из #4 дает немного другие - поля БД, которые нельзя связать с ячейкой.

Значит ТС придется писать макрос для обмена значениями поля БД и ячейки. Но обычно используют более удобные инструменты поиска нужной записи в БД с помощью особых эл-тов управления и/или объектов RecordSet, эффективно кэширующих данные.

Листать строки из большой таблицы БД - неэффективно, лучше вставить "окошко" в БД в виде контрола "Таблица" (XGRID): Вид-Панели...-Элементы... - Таблица, сделать ее на 5-7 строк. И вставить окно для поиска, как описано тут:
http://wiki.harlamenkov.ru/wiki/RU/kb/00000359

Я таким методом ищу по первым введенным символам в документах Writer в больших таблицах БД на базе TXT с сотнями тысяч строк, и поиск, на счастье, получается просто мгновенным (быстрее только SQLite).

Если же БД не TXT, а покруче (SQLite, FireBird, MySQL, PostrgreSQL) - то можно решать и обратную задачу - менять содержимое БД из формы в Calc/Writer: https://forum.openoffice.org/en/forum/viewtopic.php?f=100&t=36716&hilit=gridcontrol+updat%2A
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...