C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Сортировка, ADOQuery
Лена
Отправлено: 25.09.2006, 12:35


Мастер участка

Группа: Участник
Сообщений: 501



Пытаюсь отсортировать данные в гриде по колонке code. Ничего не происходит когда выбираю CheckBox1 angry2.gif
Что не так?:
CODE

void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if(CheckBox1->Checked == true)
   {
    DataModule2->ADOQueryKey->Active = false;
    DataModule2->ADOQueryKey->SQL->Clear();
    DataModule2->ADOQueryKey->SQL->Add("select * FROM keys ORDER BY code;");
    DataModule2->ADOQueryKey->Active = true;
   }
}

Связь: ADOQueryKey -> TDatasetProvider -> TClientDataset -> TDatasource
AVC
Отправлено: 25.09.2006, 13:15


Ветеран

Группа: Модератор
Сообщений: 1583



Что говорит?
Как правилило ; в запросе писать не нужно.
Лена
Отправлено: 25.09.2006, 13:48


Мастер участка

Группа: Участник
Сообщений: 501



QUOTE (AVC @ 25.09.2006, 13:15)
Что говорит?
Как правилило ; в запросе писать не нужно.

Я пробовала без точки запятой.
Нажимаю на CheckBox1 и ничего не происходит. rolleyes.gif
Нет ни исключений ни сортировки — просто тишина. ohmy.gif

P.S.
Если умышленно сделать ошибку в запросе, то исключение возникает.

Отредактировано Лена — 25.09.2006, 13:53
Лена
Отправлено: 25.09.2006, 14:07


Мастер участка

Группа: Участник
Сообщений: 501



Заработло так:
CODE

void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if(CheckBox1->Checked == true)
   {
    DataModule2->ClientDataSetKey->Active = false;
    DataModule2->ADOQueryKey->Active = false;
    DataModule2->ADOQueryKey->SQL->Clear();
    DataModule2->ADOQueryKey->SQL->Add("select * FROM keys ORDER BY code");
    DataModule2->ADOQueryKey->Active = true;
    DataModule2->ClientDataSetKey->Active = true;
   }
}

Это вообще корректно? Как-то выглядит не очень. rolleyes.gif
olegenty
Отправлено: 25.09.2006, 14:52


Ветеран

Группа: Модератор
Сообщений: 2412



"ну вы блин даёте" (с)

ADOQuery у тебя — источник для ClientDataSet
визуализируемый набор данных у тебя — ClientDataSet

так чего ж ты от источника данных ждёшь? сортируй ClientDataSet БЕЗ ПЕРЕЗАПРОСА ДАННЫХ С СЕРВЕРА, он обладает соответствующим инструментарием, в частности, св-во IndexFieldNames
Лена
Отправлено: 25.09.2006, 15:32


Мастер участка

Группа: Участник
Сообщений: 501



>так чего ж ты от источника данных ждёшь?

Вам хорошо, у вас мозги мужские, а мне трудно. biggrin.gif

Написала так:
CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DataModule2->ClientDataSetKey->IndexFieldNames = "code";
}

Сортирует.
Почему я не могу заполнить IndexFieldNames в инспекторе объектов.?Там пусто в выпадающем списке. wizard.gif
Миshук
Отправлено: 28.09.2006, 06:17


Дежурный стрелочник

Группа: Участник
Сообщений: 36



QUOTE
Почему я не могу заполнить IndexFieldNames в инспекторе объектов.?Там пусто в выпадающем списке

Привет. Ну и что что пусто? Записывай туда нужное тебе имя поля и все будет ок.

Вернуться в Работа с базами данных в C++Builder