Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DBGrid и удобство


Автор: MacTep 5.2.2005, 20:22
Привет всем! Есть DBGrid. В нем очень много записей. Мне в определенный момент работы программы нужно пройтись по всем записям в таблице и найти какие-либо записи по какому-либо параметру. Я делаю это так: вста на первую запись (Table1.First) и постепенно перехожу к следующей (Table1.Next). Но при этом в DBGrid отображаются все мои действия с таблицами, постоянно происходит движение данных в таблице (т.е. виден процесс отбора записей). Как сделать так, чтобы этот процесс не был виден? Я бы просто просматривал все записи, а пользователь и не знал, что я это делаю? Спасибо!

Автор: Marriage 5.2.2005, 22:35
НУ не Знаю даже ...
Может так :

ODS - Тот который связан с Нридоь

ODS1 - Новый, динамический...
ПОтом

ODS.SQL.TEXT1:=ODS.SQL.TEXT;

Или обязательно пряио этот же датасет ???

Автор: Alex 5.2.2005, 23:11
На сколько я знаю это можно сделать, только с помощью еще одного DataSeta

Автор: Sharl 5.2.2005, 23:40
Код

 Table1.DisableControls;
 Table1.EnableControls;


Добавлено @ 23:48
А вообще-то используй

function Locate(const KeyFields: string;
const KeyValues: Variant;
Options: TLocateOptions): Boolean;


Table1.Locate(field_name,value, [loCaseInsensitive,loPartialKey]);

Автор: MacTep 6.2.2005, 12:06
Спасибо за советы, постараюсь решить проблему. Только вот функция Locate - она же только по ключевым полям поиск осуществляет или я что-то путаю? А можно smile ?
Добавлено @ 12:09
Кстати, данный код:
Код

 Table1.DisableControls;
 Table1.EnableControls;
очень помог! Спасибо! Так как раз все работает! И даже второго dataset не понадобилось! Но и Alex'у тоже отдельное спасибо!

Автор: Sharl 6.2.2005, 12:38
Цитата

функция Locate - она же только по ключевым полям поиск осуществляет...?

Нет.


А пример я уже привел
Код


var
 field_name,value: String;

 Table1.Locate(field_name,value, [loCaseInsensitive,loPartialKey]);

Автор: Akella 7.2.2005, 14:13
Цитата(Sharl @ 5.2.2005, 23:40)
Table1.DisableControls;
Table1.EnableControls;

Такое не всегда прокатит, по крайней мере у меня был случай (master-detail), когда пришлось отказаться от такого метода.

Пришлось использовать
Код

DBGrid1.DataSource.Enabled:=False;
DBGrid2.DataSource.Enabled:=True;

Автор: ~FoX~ 7.2.2005, 15:04
А может проще TQvery использовать?

Автор: MacTep 9.2.2005, 14:17
Все окейно, уже реил свою проблему. Всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)