![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подкинте идею [D7, MSSQL]
кораблик © (2006-03-10 12:58:00)На форме находяться два компонента DBGrid, а так же две кнопки добавить и удалить. Верхний DBGrid связан с компонентом ADOQury соответствено отображаються выбраные данные из него, нижний DBGrid связан с компонентом RxMemoryData, для временого хранения данных . При нажатии кнопки добавить из верхней таблицы строка копируеться в нижнюю то есть в RxMemoryData, а при нажатии удалить удаляеться. Как сделать так что бы при копировании строки- эта строка исчезала (но не удалялась) в верхней талицы, то есть просто не отображалась, а при удалении из нижней таблицы снова появлялась в верхней.
msguns (2006-03-10 14:22:00) [1]>кораблик (10.03.06 14:12) [13]
Юзай TClientDataSet. Для такого случая самых подходящий парень
кораблик (2006-03-10 14:12:00) [2]2[7] кораблик (10.03.06 13:51)
>Если вторую таблицу выкинуть то не удобно будет.
Почему это?
-----
Потому что прога работает следущиим образом: выбираються данные в верхнюю таблицу на основании введёных параметров, потом пользователем в нижнюю таблицу выбираються нужные строчки, потом вводяться другие параметры и снова происходит выборка в верхнюю таблицу, пользватель опять копирует нужные строчки, а данные которые были скопированы в нижнюю таблицу остаються с преведущей выборки, плюс добавляються новыми, и так далее пока пользователь не нажал кнопку сохранить, после этого все данные из нижней таблицы, копируються в таблицу на сервере. Вобще цель исключить попадание повторяющихся строк в нижней таблице и что бы польхователь вобще их не видел в верхней, для удобства.
msguns (2006-03-10 14:00:00) [3]Извиняюсь. В список писать только выбоанные записи
Переклинило ;)
msguns (2006-03-10 14:00:00) [4]И флажок не нужен ;))
msguns (2006-03-10 13:58:00) [5]>кораблик (10.03.06 13:09) [5]
>Потом эти данные из нижней таблицы записваться в другую таблицу на сервере
Как вариант:
При открытии таблицы создать список (TList) указателей на записи, состоящие из 2-х полей: ID и Flag, куда записать все идент-ры датасета, флажок = фалс
При "клацании" на гриде ID текущей записи ищется в списке и флажок "переворачивается".
В событии OnDrawColumnCell искать ID рисуемой записи в списке и, если найден, то красить фон другим цветом.
Для "красивости" можно рядышком поместить стрингрид, "сделанный под грид", где рисовать выбранные (флаг=тру) записи. Записи в этот стрингрид добавлять (удалять) по "клацу" в гриде (вместе с обработкой списка)
Внешне будет выглядеть так:
Отобранные записи будут видны в гриде выделенными цветом, они же рядышком показаны в стрингриде.
Sergey13 (2006-03-10 13:55:00) [6]2[7] кораблик (10.03.06 13:51)
>Если вторую таблицу выкинуть то не удобно будет.
Почему это?
>Только как его сделать, фиктивное поле
Select f1,f2,f3, 1 as f4from table
например. Или вроде того.
Ormada (2006-03-10 13:55:00) [7]LockType=ltBatchOptimistic
кораблик (2006-03-10 13:51:00) [8]Может лучше выкинуть RxMemoryData, добавить в ADOQury фиктивное поле и рисовать в нем галочу выбора?
------------------------------------------------------------
Если вторую таблицу выкинуть то не удобно будет. А на счёт фиктивного поля, можно к примеру добавить его, а потом по нему фильтровать. Только как его сделать, фиктивное поле, не знаю и как с ним работать(
Плохиш (2006-03-10 13:11:00) [9]Можно использовать событие OnFilterRecord
кораблик (2006-03-10 13:09:00) [10]А конечный смысл у этих телодвижений какой?
-----------------------------------------------
Потом эти данные из нижней таблицы записваться в другую таблицу на сервере
кораблик (2006-03-10 13:06:00) [11]ну накладывай фильтр на верхнюю
----------------------------------
Думал об этом, а если строка фильтра будет слишком большой ?
а может перести квери в режим кэширования и удаляй потом на здоровье-главное не комитить потом
-----------
а это как можно поподробнее
Ormada (2006-03-10 13:06:00) [12]или исчо лучше сделать 2 квери в режиме кэширования!
Sergey13 (2006-03-10 13:05:00) [13]2кораблик (10.03.06 12:58)
А конечный смысл у этих телодвижений какой?
Может лучше выкинуть RxMemoryData, добавить в ADOQury фиктивное поле и рисовать в нем галочу выбора?
Ormada (2006-03-10 13:03:00) [14]ну накладывай фильтр на верхнюю
а может перести квери в режим кэширования и удаляй потом на здоровье-главное не комитить потом