Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1182500300
First
2007-06-22 12:18
2007.07.22
Анимация


2-1182987110
Виктор007
2007-06-28 03:31
2007.07.22
Как сделать...


1-1175586374
Kolan
2007-04-03 11:46
2007.07.22
Свой ActionList


15-1182330618
sergeyst
2007-06-20 13:10
2007.07.22
Найти макс из чисел, встречающееся в матрице более 1-го раза


2-1182882228
Chaval'
2007-06-26 22:23
2007.07.22
ListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский