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

Ваш аккаунт

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

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

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

SQL запросы в цикле

11K
04 сентября 2008 года
AleksP
24 / / 26.01.2007
База данных содержит поле с числовыми значениями. База выводится на форму через 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();  
}

1) Если не делать никаких действий с DataSource->DataSet, то результаты SQL запросов не отображаются в DBGrid1. Как сделать так, чтобы они отображались?
2) Если результаты SQL запросов отображаются в DBGrid1 и при некотором значении i результат SQL запроса пустой, в DBGrid1 продолжает отображаться последний непустой результат. Как сделать, чтобы этого не происходило?
1
04 сентября 2008 года
kot_
7.3K / / 20.01.2000
Цитата: 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(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 отображается текущее состояние набора данных. Для того что бы оно изменилось необходмо набор данных закрыть и открыть заново.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог