Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ADOQuery

343
25 сентября 2006 года
lena_ki
282 / / 14.04.2005
Пытаюсь отсортировать данные в гриде по колонке code. Ничего не происходит когда выбираю CheckBox1
Что не так?:
 
Код:
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;
   }
}

Cортировка не происходит.
Связь: ADOQueryKey -> TDatasetProvider -> TClientDataset -> TDatasource
343
25 сентября 2006 года
lena_ki
282 / / 14.04.2005
Так заработло:
Код:
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;
   }
}

Надежно так?
3.0K
25 сентября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=lena_ki]Так заработло:
Код:
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;
   }
}

Надежно так?[/QUOTE]Если прочитать help об Active, тогда не совсем то что надо, вроде она при закрытии кеширует данные. Может перед закрытием ClientdataSet написать
DataModule2->ClientDataSetKey->EmptyDataSet();

или к первому варианту (без точки с запятой в конце SQL) дописать

DataModule2->ClientDataSetKey->EmptyDataSet();
DataModule2->ClientDataSetKey->Refresh();

И если в ClientDataSet-е данные не редактируются, тогда можно свойство LogChanges установить в false.
343
25 сентября 2006 года
lena_ki
282 / / 14.04.2005
Вот получилось одной строкой сделать, вроде работает:
 
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     DataModule2->ClientDataSetKey->IndexFieldNames = "code";
}
3.0K
25 сентября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=lena_ki]Вот получилось одной строкой сделать, вроде работает:
 
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     DataModule2->ClientDataSetKey->IndexFieldNames = "code";
}
[/QUOTE]C этого нужно было начинать, если определены индексы. :)
343
25 сентября 2006 года
lena_ki
282 / / 14.04.2005
Индексы не определены. Эта строка делает индекс, как я поняла.
3.0K
25 сентября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=lena_ki]Индексы не определены. Эта строка делает индекс, как я поняла.[/QUOTE]Когда я работал с TClientdataset, то если мне нужен был индекс, тогда определил индексный файл. imho это лучший вариант, чем при смене индексов каждый раз заново пересортировать данные.
DataModule2->ClientDataSetKey->IndexFieldNames = "code"; не строит индекс, а только сортирует записи в порядке code.
А если тебе нужен только один индекс, то почему изначально не выбрать данные в этом порядке?
343
25 сентября 2006 года
lena_ki
282 / / 14.04.2005
[quote=Мerlin]почему изначально не выбрать данные в этом порядке?[/quote]


Да, спасибо. Теперь у меня так при загрузке:
в ADOQuery строка select * from keys order by code
а в FormCreate еще строка:
DataModule2->ClientDataSetKey->IndexFieldNames = "code";
чтобы при добавлении новых данных в грид сразу происходила сортировка.
Получается, что при первоначальной загрузке и при добавлении данных всегда все сортируется. :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог