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

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

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

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

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

например:

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

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


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