|
__________________
4 / 4 / 1
Регистрация: 11.05.2021
Сообщений: 178
|
||||||
SQLite запрос с рекурсией для раскрытия/закрытия групп справочника в DBGrid04.12.2021, 23:20. Показов 3643. Ответов 26
Метки нет (Все метки)
Приветствую всех,
в справочнике есть группы с элементами, которые по клику DBGrid надо раскрывать и закрывать. Нашел такой рекурсивный запрос, немного доделал, сам по себе работает, т.е. в группы можно провалиться и подняться выше, но проблема в том, что при таком запросе, как я понимаю, в DataSource попадает временная таблица для рекурсии и при попытке редактирования элементов, соответственно, вылетает ошибка. Может, есть к-либо другой рекурсивный запрос или есть возможность этот допилить? Кликните здесь для просмотра всего текста
скрины прилагаю, т.е. моя база Clients, временная name_tree В архиве - весь проект. Дерево не работает, это следующий этап проб и вопросов. Проект тестовый, поэтому кнопки всякие лишние в избытке.
0
|
||||||
| 04.12.2021, 23:20 | |
|
Ответы с готовыми решениями:
26
Как из групп справочника достать элементы в документ |
|
|
|
| 07.12.2021, 23:35 | |
|
как обычно вопрос упирается в ЗАЧЕМ?
зачем тащить 10000 элементов, если пользователь посмотрит только 100 и на самом деле, если использовать стандартный TTreeView, то 10000 элементов оно будет создавать очень ощутимое время
0
|
|
|
3764 / 2272 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||
| 08.12.2021, 01:26 | ||
|
Видимо я что-то сделал не так и тогда я создал дерево случайной глубины вложенности до 5 на 10000 элементов. И это заняло 0.9 сек, я увеличил глубину до 10 и получил около 2 сек. И только на 50000 элементах при глубине 3 я получил задержку почти в 4 сек. Не думаю, что это можно назвать ощутимой задержкой
0
|
||
| 08.12.2021, 08:23 | |
|
Не по теме: локально да, проблем нет, а вот если тянуть датасет с сервера (а если сервер удаленный)
0
|
|
|
__________________
4 / 4 / 1
Регистрация: 11.05.2021
Сообщений: 178
|
|||||||||||||||||||||||||||||||
| 08.12.2021, 22:27 [ТС] | |||||||||||||||||||||||||||||||
|
Всех приветствую, чтобы не делать новый пост, задам, наверно, последний вопрос в этом.
У меня главная форма MainForm, на которой находится FDConnection1 и (пока находится) для разовых FDQuery1 и FDQuery1, которые по примеру Пытливый переделаю на динамические.
------------ Есть Form2, где находятся DBGrid2, FDQuery2 и DataSource2. --------------- При показе Form2 загружаются корневые элементы в DBGrid2. Если закрыть Form2 после загрузки с
Тыком выяснил, что если при закрытии Form2 перед
Вопрос - насколько корректно такое закрытие Form2 с MainForm.FDConnection1.Close; и надо ли потом при открытии Form2 делать FDConnection1.Open;?
0
|
|||||||||||||||||||||||||||||||
|
|
|
| 09.12.2021, 23:02 | |
|
connection - это канал связи с базой
открывается/закрывается он очень долго и поэтому не надо баловаться таким настроили канал на сервер и погнали - туда - запросы - оттуда - датасеты прилетают
0
|
|
|
__________________
4 / 4 / 1
Регистрация: 11.05.2021
Сообщений: 178
|
|||||||||||
| 10.12.2021, 09:50 [ТС] | |||||||||||
|
krapotkin, спасибо, я понимаю, что коннект - дело хлопотное, вопрос возник в том, что при закрытии формы, открытой из главной формы, вываливается ошибка, а если при закрытии перед
И для меня несколько неожиданно, что после закрытия коннекта и повторного открытия этой же формы она нормально работает, TBDGrid заполнятся. Т.е. вопрос касается моей корректности. Добавлено через 5 минут как вариант, из-за чего может вываливаться эта ошибка - что в TBDGrid используется рекурсивный запрос и получается, что вместо таблицы Clients, коотрая существует в БД, в Гриде или Датасете (пока не знаю, где точно), сидит уже другая таблица Tmp, которая использовалась в рекурсии.
0
|
|||||||||||
|
|
||||||
| 10.12.2021, 13:13 | ||||||
|
проблемы в этой программе не с рекурсией точно
проблема с архитектурой в виде снежного кома, где все обращаются друг к другу как попало Form7 лезет в Form2.FDquery1 и ее не заботит, есть в это время Form2 вообще или нет глобальные процедуры тоже лазят к формам через глобальные же переменные вот поэтому и написано везде, что глобальные - зло. что нужно сделать. 0) все-таки прочитать про формы https://www.cyberforum.ru/blog... g4873.html 00) прочитать, почему нельзя в методах класса обращаться к переменным этого класса https://www.cyberforum.ru/blog... g5465.html 1) создать Datamodule и поставить его в Autocreate первым 2) вторым в Autocreate поставить главную форму 3) удалить из Autocreate все остальные формы 4) FDConnection перенести в Datamodule 5) для всех Query и других БД-компонентов: если Query используется только в одной форме, то оставить его в этой форме, если более чем в одной - перенести в datamodule 6) перестать на ходу заполнять SQL в запросах. Сделайте это в design-time и оставьте в покое. параметры задайте параметрами запроса 7) Дать компонентам и формам осмысленные имена!!!!! 8) все свободные процедуры перевести в методы соответствующих форм после этого попытаться скомпилировать и когда ошибки закончатся, вот тогда уже можно двигаться дальше P.S. Удалил переменную Form2, соответственно вытаскал все обращения к ней Сделал просто
Т.е. как обычно, не ту задачу решаем, товарищи
0
|
||||||
| 10.12.2021, 13:13 | |
|
Запрос. Выбрать корневую группу для элемента иерархического справочника SQLite запрос для списка с подчиненными
C API, sqlite. Держит открытым файловый handle после закрытия базы данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|