Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по DBGrid-у Помогите пожалуйста. / 8 сообщений из 8, страница 1 из 1
15.09.2003, 18:58
    #32265560
BGladiator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
Здравствуйте. Вот в чём проблема: есть DBGrid - в нём несколько колонок, указан некоторый DataSource откуда и берутся данные. При печати печатаются все строки этого DBGrida. Мне же нужно чтобы печатались лишь выбранные. Для этого в запросе, который использ. для этого DBGrida я добавил ещё одно поле SELECTION - соответственно и втаблицу БД откуда выбираются данные тоже пришлось добавить такое же поле, в котором ничего не содержится (' '). Теперь при нажатии пробела сделал обработчик, который заносит в это поле произвольную метку ('X').
Теперь при печати печатаются только те строки в которых поле SELECTION имеет метку ('X').Всё бы хорошо да только вот установка этих меток (особенно для нескольких строк) происходит слишком медленно. :( И ещё было проверено что во время установки этих меток, которые служат всего лишь для печати происходит UPDATE таблици в БД. Из-за чего при работе нескольких
пользователей возникают блокировки.
Если кто-то знает как можно реализовать эти метки для печати проще пожалуйста подскажите. Если можно по подробнее, потому что перепробовал много вариантов - не выходит.
Заранее спасибо.
...
Рейтинг: 0 / 0
15.09.2003, 20:36
    #32265619
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
Вариант первый, если есть ключевое поле, то запоминать в списке значения этих полей непосредственно в программе. При печати использовать не таблицу, которая отображается на экране, а специальный запрос, в котором будет что-то типа

select *
from table
where ID in [список значений ID из выбранных строк]

строку со списоком генерируем перед открытием запроса, а запрос открываем непосредственно перед печатью (предпростмотром).

Вариант второй, создавать временную таблицу, которая уникальна для каждого пользователя (можно использовать имя компьютера для формирования файла), в которой сохранять значения ID для выбранных строк. Это чтобы избежать блокировок в основной таблице. Для печати опять же используем запрос, в котором участвуют две таблицы.
...
Рейтинг: 0 / 0
15.09.2003, 21:06
    #32265631
Tung
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
я поддердиваю, проще всего пользоваться запросами. Только мне кажется будет весьма неудобно, каждый раз ставить метки перед печатью.
А если в БД будет 5000 записей, илли 50 000, тут уж не налистаешься, надо создать поле по которому классифицировать данные (например поле class), но это поле должно заполняться при внесении записи,

А потом уж и селект

например:

Select * from table
where class in ('хозтовары', 'промтовары')
...
Рейтинг: 0 / 0
16.09.2003, 07:24
    #32265777
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
>Дмитрий Мыльников
>"... таблицу, которая уникальна для каждого пользователя ..."

Немного поправлю, таблица - да, но с уникальным значением поля для каждого пользователя (можно группу полей). Тогда не будет проблем с созданием таблиц для нового пользователя.
...
Рейтинг: 0 / 0
16.09.2003, 08:10
    #32265802
RDen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
Немного не по теме.........
Подскажите пожалуйста, как правильно вывести DBGrid на печать (все столбцы и строки), а то ерунда какая-то получается....
...
Рейтинг: 0 / 0
16.09.2003, 08:36
    #32265821
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
2 RDen:
взять нормальный грид, например из EHlib, и выгружать в Excel, а там юзер пусть сам че хочет, то и печатает...
...
Рейтинг: 0 / 0
16.09.2003, 10:08
    #32265956
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
Если через АДО, то можно LockType:=ltBatchOptimistic, при этом изменения не будут напрямую передаваться на сервер.
...
Рейтинг: 0 / 0
16.09.2003, 10:12
    #32265961
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по DBGrid-у Помогите пожалуйста.
И еще можно попробовать сделать после считывания данных в рекордсет Connection := Nil; (отсоединить рекордсет), LockType:=ltBatchOptimistic добавить к нему поле Fields.Add, задать свойства этому полю и пользоваться... Но я этот подход реально не пробовал.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по DBGrid-у Помогите пожалуйста. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]