Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подкинте идею [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]

ну накладывай фильтр на верхнюю
а может перести квери в режим кэширования и удаляй потом на здоровье-главное не комитить потом


Наверх

Титульная страница Поиск, карта сайта Написать письмо