Показать сообщение отдельно
  #1  
Старый 28.06.2012, 20:05
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию В поисках Гуру

Уважаемые, есть программа, что-то вроде электронного органайзера (напоминалка). Все данные хранятся в БД. Работаю через ADO.
В таймере ежесекундно делаю выборку из БД, все найденые записи вывожу на экран в новой форме.
qrProverka - AdoQuery которым я считываю в таймере данные из БД
qwProverka - AdoQuery, для записи данных в таймере
Проблема в том, что программа считывает, но не записывает.

Код:
//ПРОВЕРКА ЗАДАЧ НА ВЫПОЛНЕНИЕ
procedure TMainForm.Timer1Timer(Sender: TObject);
var S:String;
begin
try
qrProverka.SQL.Text  :=  'select * from [Задачи] where '+
                  '(([Дата исполнения] < :NowDT) or ([Дата исполнения] = :NowDT)) and '+
                  '(([Состояние] = :sost1) or ([Состояние] = :sost2)) and '+
                  '[Показано] = 0';
qrProverka.Parameters.ParamByName('NowDT').Value:=TDateTime(Now);
qrProverka.Parameters.ParamByName('sost1').Value:='Пропущено';
qrProverka.Parameters.ParamByName('sost2').Value:='В ожидании';
qrProverka.Open;

with TMessageForm.Create(Self) do begin
     label1.Caption  :=  'Задача №'+qrProverka.FieldByName('ID').AsString+' от '+qrProverka.FieldByName('Дата регистрации').AsString;
     label2.Caption  :=  qrProverka.FieldByName('Наименование').AsString;
     label3.Caption  :=  'Выполнить '+qrProverka.FieldByName('Дата исполнения').AsString;
     memo1.Text      :=  qrProverka.FieldByName('Описание').AsString;
     show;
end;

     //Если Состояние = В ожидании то меняем на Пропущено
     if qrProverka.FieldByName ('Состояние').AsString = 'В ожидании' then S :=  ' and Состояние = '+QuotedStr('Пропущено')
     else S :=  '';

     //Обновляем задачу. Отмечаем что показали ее
     qwProverka.SQL.Text :=  'UPDATE Задачи SET [Показано] = :view'+S+' WHERE [ID] = :uid';
     ShowMessage(qrProverka.FieldByName('ID').AsString);
     qwProverka.Parameters.ParamByName('uid').Value  :=  qrProverka.FieldByName('ID').AsString;
     qwProverka.Parameters.ParamByName('view').Value :=  1;

     qwProverka.ExecSQL;
     qrproverka.Refresh;
     ShowMessage(qrProverka.FieldByName('Показано').AsString);

     qrProverka.Next;
  finally

  end;
end;

Подскажите или наведите на путь истинный. Лопата есть, куда копать?
Ответить с цитированием