![]() |
|
![]() ![]() ![]() |
|
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Использую
База данных: MySQL Конекчусь с помощью ZeosDBO Проссматриваю полученные данные через DBGridEh (EhLib 4.2) Для отчёта пользую FastReport 4.5 Задача состоит в следующем: Есть некая таблица из которой нужно распечатать данные помеченные пользователем. Попытки её решить: 1. Использовать выделение, встроенное в DBGridEh неудобно, т.к. пользователь всегда может забыть нажать Ctrl перед тем как ткнёт мышкой, после чего ему опять придётся "ползать" по таблице и выделять всё заново. :( 2. Пример приведённый в Ссылка на похожую тему тоже несовсем подходит (хотя нравится больше чем №1) т.к. событие DrawColumnCell (прорисовка чекбокса) происходит раньше, чем CellClick (изменение списка нажатых чекбоксов) :( из за этого чекбокс меняет своё состояние после ухода из этой ячейки. 3. Держать в таблице отдельное поле, тоже неподойдёт, т.к. с программой будет рабботать не 1 человек и получить ситуацию, в которой 1 человек метить кучу записей и пока жмёт на кнопку "печать" все пометки скидываются из за того, что 2ой пользователь запустил своего клиента, который выполнил "update table set field_int_bool = 0" Может есть у кого нибудь, какие нибудь соображение по САБЖу? (Желательно с примерами ;) ) Это сообщение отредактировал(а) BDmV - 15.2.2008, 09:07 |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Я использую для такого VTable из компонентов ODAC, но думаю и в Zeos есть что-то типа виртуальной таблицы. Перегружаю данные в виртуальную таблицу, добавляю еще одно поле "Печать" тип boolean и все пусть пользователь клацает нужные записи. В репорте уже выводим у которых поле "Печать" отмечено и все
![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
В EhLib есть MemoTable, но это не выход из положения, т.к. данные из БД я беру SQL запросом вида:
и использую связку TzQuery -> TDataSource -> TDBGridEh Мне не хочется сюда вставлять, какой нить TMemTableEh и каждый раз при малейшем изменении данных гонять их из таблици памяти в БД и обратно... |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Дык я тоже беру запросом, и вообще я Table никогда не использую, токи квери и сторедпрок
![]() ![]() А если выгружается приемлимое количество, то перегон в меморитабл и не заметишь ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Да сколькоб данных небыло... Память у компа не резиновая, и держать все записи в памяти желания нет..
Хотя я не знаю, как это с ODAC'ом происходит, Ораклы у мну нет. |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Ну тады рисуй, тока не забывай отмеченные клеточки тоже надо где-то хранить и в FR передавать ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Пытался рисовать, но вот как сделать так, чтоб сначало запоминался клик по чекбоксу, а потоп происходила прорисовка, я не понял. :(
|
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Дык я к тому и клонил что твой клик и должен где-то запоминаться, ина че при следующей перерисовке все под откос пойдет ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Ну дык я и говорю что я это помню, но перерисовка происходит после того как с этого поля уходишь, а мне нужно чтоб пользователь сразу увидел результат своего клика...
![]() А как с помощью ODAC Вы юзаете MemTable? Что то я в этих компанентах ничего связанного с MemTable я не вижу. :( А попытки связать TMemTableEh с TzQuery с последующим добавлением туда левого поля, приводят к тому же что и без TMemTable. :( Или всётаки Вы действительно каждый раз в цикле заполняете таблицу памяти? Это сообщение отредактировал(а) BDmV - 15.2.2008, 17:13 |
|||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Из ODAC я юзаю VTable, а не MemTable. И дальше писал что А MemTable вроде несколько другая хрень, но один фиг MemTable сразу из запроса тянет все данные в память и ниче ![]()
Отсюда я понял что как раз проблема с запоминанием еще до прорисовки ![]() -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
||||
|
||||
Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Как вариант создаем временную таблицу, на основании запроса, добавляем еще одно поле и из нее отображаем данные пользователю. Как с ней работать закончили, удаляем.
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Пробывал... Неинтересно.
Если я TMemtableEh связываю с датасетом, то я могу туда добавлять поля, но изменять их значение, почему то, не могу, наверное потому что значения пытаются меняться во всей связанной записи. :( А создавать чисто таблицу в памяти, гонять данные из памяти в БД и обратно, а потом в конце работы удалять её, не хочу. Кстати, а есть какой нить способ реагировать на нажатие на столбце Indicator? У TDBGridEh я нашёл реакцию только на заголовок Индикатора... Мож тогда проще будет запоминать ID записи не на событии CellClick, а на нажатие на Индикатор? |
|||
|
||||
Esperito |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: 2 Всего: 3 |
Быть может, проще сделать переключатель "Режим выделения / Режим редактирования" для юзера и в режиме выделения использовать стандартное выделение и программно удерживать Ctrl.
|
|||
|
||||
BDmV |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 14.5.2005 Репутация: 1 Всего: 1 |
Непроще :( Как я писал: |
|||
|
||||
Esperito |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: 2 Всего: 3 |
Я же говорю, программно удерживать Ctrl, т.е. держать его нажатым (или сделать так, чтобы гриду он кажался нажатым). Чтобы пользователю не приходилось его нажимать самому.
|
|||
|
||||
BustA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 14.1.2008 Репутация: нет Всего: нет |
Люди помогите, а вот в эту memtable как добавит отдельное поле??? чтоб я потом в него программно данные записывал?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |