Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2009, 10:53   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
Вопрос Как правильно построить цикл для выборки?

помогите правильно организовать алгоритм ... а то у меня отображает только последнюю найденную запись
я делаю так:

я пвтаюсь найти все записи в таблице где нет даты рассмотрения дела...
(DataRassm) такое странное сравнение потому что если сохраняю данные с пустым maskedit для значения DataRassm у меня сохраняет 30.12.1899 так что если кто знает как и это исправить до большое спасибо от меня

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('SELECT ZamechIPredlaz.DataRassm, ZamechIPredlaz.nomer FROM ZamechIPredlaz');
ADOQuery1.open;
ADOQuery1.First;

  while not ADOQuery1.Eof do
  begin

 if ((ADOQuery1.Fields.Fields[0].AsString ='') or (ADOQuery1.Fields.Fields[0].AsString ='30.12.1899')  )
 then
 begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.add('select * from ZamechIPredlaz where  nomer='+ADOQuery1.Fields.Fields[1].AsString+'');
ADOQuery2.open;

end ;
ADOQuery1.Next;


        end ;
Tanuska___:) вне форума Ответить с цитированием
Старый 12.01.2009, 14:50   #2
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от Tanuska___:) Посмотреть сообщение
помогите правильно организовать алгоритм ... а то у меня отображает только последнюю найденную запись
я делаю так:

я пвтаюсь найти все записи в таблице где нет даты рассмотрения дела...
(DataRassm) такое странное сравнение потому что если сохраняю данные с пустым maskedit для значения DataRassm у меня сохраняет 30.12.1899 так что если кто знает как и это исправить до большое спасибо от меня

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('SELECT ZamechIPredlaz.DataRassm, ZamechIPredlaz.nomer FROM ZamechIPredlaz');
ADOQuery1.open;
ADOQuery1.First;

  while not ADOQuery1.Eof do
  begin

 if ((ADOQuery1.Fields.Fields[0].AsString ='') or (ADOQuery1.Fields.Fields[0].AsString ='30.12.1899')  )
 then
 begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.add('select * from ZamechIPredlaz where  nomer='+ADOQuery1.Fields.Fields[1].AsString+'');
ADOQuery2.open;

end ;
ADOQuery1.Next;


        end ;
[Tanuska___], вы не правильно подходите к SQL. Не нужно самой выбирать записи из таблицы. Это сделает за вас сервер. Нужно просто в SQL запросе указать критерий отбора интересующих вас записей.

В вашем случае, как я понимаю, поле ZamechIPredlaz.DataRassm должно содержать значение '30.12.1899' либо не иметь значения вовсе. Вот и создайте соответствующий запрос. Он будет выглядеть примерно так:

Код:
SELECT * FROM ZamechIPredlaz
WHERE (ZamechIPredlaz.DataRassm IS NULL)
OR (ZamechIPredlaz.DataRassm = '30.12.1899')
Результатом выборки будут интересующие вас записи.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно записать код юникодного символа 0xAD программно для вывода? SkAndrew Общие вопросы Delphi 4 08.11.2008 08:55
Как построить Bitmap для jpeg файла ??? Kocapb Общие вопросы C/C++ 4 14.12.2007 19:50
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
Как лучше построить код для Radiobutton Inbox Общие вопросы Delphi 4 29.01.2007 20:38