|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|
Особенности отображения таблицы данных TDBGrid от разных провайдеров11.02.2024, 20:52. Показов 1579. Ответов 25
Метки нет (Все метки)
Здравствуйте!
Есть таблица БД SQLite и есть два проекта: в одном провайдером выступает TADOTable, а в другом TFDTable. Есть задача в DBGrid строки рисовать разными цветами. Для этого свойство TDBGrid(sender).DataSource.DataSet.RecNo проверяется на четность. Так вот, в первом случае при событии перерисовки ячейки GridDrawColumnCell это свойство идет по порядку (1, 2, 3...n), а во втором просто сразу n. Почему так и можно во втором случае что-то исправить?
0
|
|
| 11.02.2024, 20:52 | |
|
Ответы с готовыми решениями:
25
Можно ли указать для разных Access баз разных ADo провайдеров? При разных вариантах заполнения таблицы результат отображения изменяется в одном браузере Несколько шлюзов от разных провайдеров |
|
Модератор
|
||
| 12.02.2024, 07:18 | ||
|
По сабжу: у Вас ошибка в 88-й строке
Это, если что, принятый на форумах намек на то, что проблема в Вашем коде и не худо бы Вам его показать, т.к. без него любой ответ будет не более чем гаданием на кофейной гуще.
Хотя проблема, скорее всего (вот, гадание начинается !!!) в сортировке данных. При использовании компонентов T...Query Вы, записывая свой SQL-запрос, можете сами влиять на то, как и по какому полю/полям будет отсортирован получаемый набор данных. В случае же с T...Table Вы никак на режим сортировки повлиять не можете, поэтому ориентироваться по номеру записи в наборе - это не самая лучшая идея...) Поэтому данный инструмент (T...Table), лично я просто никогда не использую: мало того, что он с сортировкой непредсказуем, так он еще может работать только с одной таблицей БД и, вдобавок, тянет на клиента ВСЁ! содержимое этой таблицы. При наличии хотя бы 1000000000 записей и не очень шустрого канала связи с удаленной СУБД процесс получения данных может занять весьма длительное время.
0
|
||
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
||||||
| 12.02.2024, 10:26 [ТС] | ||||||
0
|
||||||
|
Модератор
|
|
| 12.02.2024, 10:49 | |
|
А зачем вообще определять четность номера записи набора данных? Вам надо раскрасить грид через строку: красная, зеленая, красная, зеленая... Так? Ну так и подумайте на тему, как обойтись без RecNo!
0
|
|
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|
| 12.02.2024, 11:04 [ТС] | |
|
Я перепробовал разные способы. Через четность является полностью рабочим, но только почему-то с ADOConnection. При этом, при отладке с ADOConnection прямо можно проследить прорисовку ячеек, чего нет с FDConnection (там по окончанию отрисовки сразу же отображается готовый результат). Как будто бы это разные компоненты работают.
0
|
|
|
807 / 423 / 37
Регистрация: 05.05.2022
Сообщений: 2,933
|
||||||
| 12.02.2024, 11:04 | ||||||
Тут тоже FireDAC, MS SQL Server. Если у вас RecNo не работает, хотя я с таким не сталкивался, что за таблица такая. Может с Fetch что-то не то, у меня вместо дефолтного 50 в коннекшене Mode стоит fmAll, чтобы сразу всё тащило. То сделайте глобальную булеву переменную и в каждой рисовке инвертируйте ее.
1
|
||||||
|
807 / 423 / 37
Регистрация: 05.05.2022
Сообщений: 2,933
|
|
| 12.02.2024, 11:41 | |
|
А зачем тут такая точность? Главное, чтобы в каждом вызове значение было инвертированным относительно предыдущего. Впрочем, нюанс о котором сразу не подумал, вызов для каждого столбца ведь, но тогда инвертирование надо проводить, например, перед рисованием первого столбца, или после последнего.
0
|
|
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
||
| 12.02.2024, 12:04 [ТС] | ||
|
С глобальной булевой переменной пробовал - не решение. Попробовал Ваш код, результат тот же (ну так Ваш код - это тот же мой): в первом случае работает, а во втором - нет. Осталось понять, какие Ваши настройки не совпадают с моими.
0
|
||
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|||
| 12.02.2024, 12:20 [ТС] | |||
|
Добавлено через 5 минут
0
|
|||
|
807 / 423 / 37
Регистрация: 05.05.2022
Сообщений: 2,933
|
|
| 12.02.2024, 12:20 | |
Сообщение было отмечено t232006 как решение
Решение
Там нет координат Col, Row в параметрах onDrawDataCell.
У меня кроме Fetch и конкретно драйвера ничего не менялось. Я не понимаю, как RecNo может тупить. Ну выкиньте TFDTable, Его никто не использует, возьмите TFDQuery. Может в таблице ключа нет? BTW сочетание красного с зеленым будет до слез доводить. Нужны менее контрастные цвета.
1
|
|
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
||
| 12.02.2024, 12:29 [ТС] | ||
Это было только для примера. В программе можно настраивать цвета.Попробую с Query. Хотя я что-то сомневаюсь.
0
|
||
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|
| 12.02.2024, 12:31 [ТС] | |
|
0
|
|
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|||
| 12.02.2024, 13:38 [ТС] | |||
|
Добавлено через 36 минут
0
|
|||
|
|
||||||||||||||||
| 12.02.2024, 14:00 | ||||||||||||||||
|
вот заставили старого деда открыть VCL.
две картинки - один вариант с RecNo другой вариант с дополнительным полем в запросе, который тоже по сути RecNo
1
|
||||||||||||||||
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
|
| 12.02.2024, 14:17 [ТС] | |
|
krapotkin, да, хороший, рабочий вариант. Только для его реализации нужно изменять структуру таблицы базы данных, если я использую компонент Table (компонент Query для меня не подходит).
0
|
|
|
807 / 423 / 37
Регистрация: 05.05.2022
Сообщений: 2,933
|
||||||||||||
| 12.02.2024, 14:39 | ||||||||||||
1) Можно сделать в БД таблицу с логикой, и на них лукап-поле. 2) Можно прописать свое событие onGetText у филда. Например у меня есть такое
3) Можно сделать чекбоксы вместо текста. Как именно я сам спрашивал на этом самом форуме в 2019-ом, скорее всего в августе, мне тогда просто готовое решение дали.
0
|
||||||||||||
|
4 / 4 / 0
Регистрация: 09.12.2022
Сообщений: 297
|
||
| 12.02.2024, 14:48 [ТС] | ||
|
Можно про лукап поле поподробнее? Как реализовать это поле в компоненте Query?
0
|
||
|
807 / 423 / 37
Регистрация: 05.05.2022
Сообщений: 2,933
|
||||||
| 12.02.2024, 15:04 | ||||||
|
Рисование ячеек начинается с закраски в любом случае.
Lookup-поля это вообще-то базовая вещь со времен BDE, просто создается новое поле типа LookUp, задается основной датасет, поле по которому надо искать, обычно, внешний ключ, второй датасет, поле по которому будет поиск, обычно первичный ключ, результирующее поле. Т. е. просто делается на уровне приложения аналог Join в SQL. Типа
Ну и позволяет строить Join-подобные конструкции, т. к. запросы, полученные через Join редактировать через Edit нельзя. Если нужно только отображать, то onGetText для такой простой задачи, думаю, будет лучше.
0
|
||||||
| 12.02.2024, 15:04 | |
|
Помогаю со студенческими работами здесь
20
Две локальные сети от разных провайдеров Особенности отображения капчи Отображения данных в форме в виде таблицы Как соединить две подсети от разных провайдеров? Как настроить сетевое окружиение с разных провайдеров? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|