Форум: "Прочее";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизОткрыть часть набора данных Найти похожие ветки
← →
de. (2007-06-25 10:26) [0]Подскажите немогу справится.
В таблице которую я хочу открыть в Grid 2 785 345 записей!
Открывает примерно минут 5.
Как сделать чтобы сначала открылось скажем то количество записей которое возможно для отображения потом по мере когда я прокручиваю скроллинг открывались следующие записи.
Например как MS SQL Там довольно таки быстро открываются таблицы таких объемов...
← →
Ega23 © (2007-06-25 10:30) [1]Вот объясни мне, тупорылому барану: нахера клиенту 3 миллиона записей?!?!?!?!
← →
de. (2007-06-25 10:35) [2]
> Ega23 © (25.06.07 10:30) [1]
Архив.
← →
DVM © (2007-06-25 10:35) [3]
> Ega23 © (25.06.07 10:30) [1]
А как же. Клиент выбирать взгядом нужную будет!
← →
isasa © (2007-06-25 10:35) [4]Ega23 © (25.06.07 10:30) [1]
Шоб было! :)
Ну вообще-то у меня такой случай встречался. Правда, только один, за всю практику.
Попробуй поиграться опциями курсора.
Хотя основное время занимает парсинг самого грида, а не наполнение датасета.
Например, в компоненте TdxDBGrig OptionDB -> [edgoPartialLoad:=true edgoLoadAllRecords:=false ]
← →
Ega23 © (2007-06-25 10:38) [5]
> Архив.
Что "архив"? В текстовом файле архив? Тебе базы мало?
← →
clickmaker © (2007-06-25 10:43) [6]
> [2] de. (25.06.07 10:35)
а может фильтр применять перед открытием?
← →
de. (2007-06-25 10:44) [7]Нужно чтото типа:
DBTreeView своими руками
--------------------------------------------------------------------------------
Автор: Елена Филиппова
Специально для Королевства Delphi
Введение
В статье речь пойдет об отображении данных, хранящихся в БД и имеющих иерархическую (древовидную) структуру. Визуальное представление таких данных требует соответствующего инструмента. Существует немало компонент, которые позволяют представлять данные в виде дерева — для краткости будем называть их все DB TreeView. Компоненты эти довольно удобны, но, как правило, "заточены" под определенные задачи и каждый "шаг в сторону" в структуре данных заставляет многих пускаться в поиски. И на Круглом Столе появляются вопросы: "помогите найти компонент DB TreeView, который позволяет делать еще и ..." и так далее.
А ведь в Delphi существует стандартный компонент для представления древовидных данных, это знакомый всем TTreeView, его возможностей хватает с лихвой практически для всех задач по отображению деревьев. Сделать из TreeView самый настоящий DB TreeView, да еще полностью контролировать его развитие, более перспективный путь, нежели каждый раз искать новый чужой компонент.
Только применимо к DBGrid 8-)
Всмысле вышеуказанный treeview способен открывать большие таблици без ощутимых задержек.
← →
Ega23 © (2007-06-25 10:48) [8]
> Всмысле вышеуказанный treeview способен открывать большие
> таблици без ощутимых задержек.
Уверен? А не думаешь, что он подзапрос для каждого узла может делать?
> Только применимо к DBGrid 8-)
Нахрена в DBGrid ВСЯ выборка? Ты серьёзно думаешь, что пользователь будет 3 миллиона записей анализировать???
← →
de. (2007-06-25 10:52) [9]
> de. (25.06.07 10:44) [7]
...Параметр ParentID будет определять, какую ветку мы сейчас достраиваем. То есть, к какой ищем дочерние подразделения.
Процедура, формирующая очередной уровень (дочерний для ветви Node ) реализована следующим образом:
Procedure TFormTree.ExpandLevel( Node : TTreeNode);
Var ID , i : Integer;
TreeNode : TTreeNode;
Begin
// Для самого верхнего уровня выбрать только тех,
// кто не имеет родителей.
IF Node = nil Then ID:=0
Else ID:=Integer(Node.Data);
qTreeCompanies.Close;
qTreeCompanies.ParamByName("ParentID").AsInteger:=ID;
qTreeCompanies.Open;
TreeCompanies.Items.BeginUpdate;
// Для каждой строки из полученного набора данных
// формируем ветвь в TreeView, как дочерние ветки к той,
// которую мы только что "раскрыли"
For i:=1 To qTreeCompanies.RecordCount Do
Begin
// Запишем в поле Data ветки ее идентификационный номер(ID) в таблице
TreeNode:=TreeCompanies.Items.AddChildObject(Node ,
qTreeCompanies.FieldByName("Name").AsString ,
Pointer(qTreeCompanies.FieldByName("ID").AsInteger));
TreeNode.ImageIndex:=1;
TreeNode.SelectedIndex:=2;
// Добавим фиктивную (пустую) дочернюю ветвь только для того,
// чтобы был отрисован [+] на ветке и ее можно было бы раскрыть
TreeCompanies.Items.AddChildObject(TreeNode , "" , nil);
qTreeCompanies.Next;
End;
TreeCompanies.Items.EndUpdate;
End;
Теперь позаботимся о том, чтобы она вызывалась в нужный нам момент времени. На событие OnExpanding проверим, есть ли у текущей ветки фиктивная дочерняя ветвь и, если она есть, сформируем реальную ветку, предварительно удалив фиктивную.
if Node.getFirstChild.Data = nil then
begin
Node.DeleteChildren;
ExpandLevel(Node);
end;
Только вот сделать бы типа я прокручиваю скроллинг, и грид какбы "дозополняется" (на счет курсоров понятно попробую....) может еще будут какие предложения.
Да насчет такого количества записей оно конечно ни кому не надо, но это я привел так для описания динамичности которую я хочу получить от Grid- а.
← →
Ega23 © (2007-06-25 11:00) [10]А зачем?
← →
Ega23 © (2007-06-25 11:01) [11]Тем более что это никак не зависит от DBGrid"а. Это зависит исключительно от реализации DataSet
← →
KSergey © (2007-06-25 11:12) [12]Берешь ADO-компоненты и выставляешь серверный курсор
Точного названия свойств не скажу - под рукой нету. но найти легко, они published.
Только не надо потом задавать вопрос "а мне бы надо количество записей знать в ResordSet". Не будет этого.
← →
Desdechado © (2007-06-25 11:41) [13]> de. (25.06.07 10:35) [2]
> Архив.
Да хоть трижды архив. Ты, если в обычный бумажный архив ходишь, с первого шкафа рыться начинаешь или все-таки у служителя интересуешься размещением каталога, гда прописаны тематические/временнЫе/авторские рубрики?
Вот и тут сделай возможность пользователю отобрать то, что он хочет. А если он хочет все, пускай на зеркало не пеняет. В моей практике такие хотельщики после 3-4 ожидания начинают шевелить мозгами (чаще) или за них шевелят их трудовой книжкой.
← →
Anatoly Podgoretsky © (2007-06-25 11:44) [14]de. (25.06.07 10:35) [2]
Архив в грид?.
Порутчик молчать.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c