for (int i = value1; i <= value2; i++)
{
DataModule2->Query1->Active = false;
DataModule2->Query1->DatabaseName = "";
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("SELECT * FROM BaseName WHERE Field1>=" + IntToToStr(i) + " ORDER BY Field2");
DataModule2->Query1->Open();
}
SQL запросы в цикле
Код:
1) Если не делать никаких действий с DataSource->DataSet, то результаты SQL запросов не отображаются в DBGrid1. Как сделать так, чтобы они отображались?
2) Если результаты SQL запросов отображаются в DBGrid1 и при некотором значении i результат SQL запроса пустой, в DBGrid1 продолжает отображаться последний непустой результат. Как сделать, чтобы этого не происходило?
Цитата: AleksP
База данных содержит поле с числовыми значениями. База выводится на форму через DBGrid1->DataSource->DataSet. В приложении выполняются SQL запросы к базе в цикле следующим образом:
Код:
for (int i = value1; i <= value2; i++)
{
DataModule2->Query1->Active = false;
DataModule2->Query1->DatabaseName = "";
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("SELECT * FROM BaseName WHERE Field1>=" + IntToToStr(i) + " ORDER BY Field2");
DataModule2->Query1->Open();
}
{
DataModule2->Query1->Active = false;
DataModule2->Query1->DatabaseName = "";
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("SELECT * FROM BaseName WHERE Field1>=" + IntToToStr(i) + " ORDER BY Field2");
DataModule2->Query1->Open();
}
в чем смысл подобной работы с набором данных? Практически тоже самое можно получить написав:
Код:
DataModule2->Query1->Active = false;
DataModule2->Query1->DatabaseName = "";
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("SELECT * FROM BaseName WHERE Field1>=" + IntToToStr(value2) + " ORDER BY Field2");
DataModule2->Query1->Open();
DataModule2->Query1->DatabaseName = "";
DataModule2->Query1->SQL->Clear();
DataModule2->Query1->SQL->Add("SELECT * FROM BaseName WHERE Field1>=" + IntToToStr(value2) + " ORDER BY Field2");
DataModule2->Query1->Open();
без всякого цикла
Кстати метод Open() не стоит использовать. Используйте свойство Active
Цитата: AleksP
1) Если не делать никаких действий с DataSource->DataSet, то результаты SQL запросов не отображаются в DBGrid1. Как сделать так, чтобы они отображались?
делать какието действия с DataSource->DataSet :).
Цитата: AleksP
2) Если результаты SQL запросов отображаются в DBGrid1 и при некотором значении i результат SQL запроса пустой, в DBGrid1 продолжает отображаться последний непустой результат. Как сделать, чтобы этого не происходило?
в DBGrid отображается текущее состояние набора данных. Для того что бы оно изменилось необходмо набор данных закрыть и открыть заново.