Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.01.2009, 06:02
Аватар для XIO
XIO XIO вне форума
Новичок
 
Регистрация: 06.12.2007
Сообщения: 77
Репутация: 32
По умолчанию Значение вычисляемого поля с помощью ADOQuery

Всем доброго времени суток.
Что-то застрял на одной задачке простенькой, 2 вечера просидел с ней, так и не понял в чем я неправ. Может кто подскажет?

Есть Таблица Conts. В ней по сути контакты различных лиц. в качестве ID использую поле по имене Kod (старая история..).
Реализация в дельфи:
ADOConnection -> DataSource -> ADODataSet
В ADODataSet есть вычисляемые поля.
Два из этих полей, работают отлично. Первое по датам вычисляется, второе примерно так:
Код:
If Not DataSet.FieldByName('Foto').IsNull then 
   DataSet.FieldByName('FotoInk').AsInteger := 3
else
   DataSet.FieldByName('FotoInk').AsInteger := 0;
Все это в обработчики события "OnCalcField" (Или как правильно называется?.. не важно) Conts_DataSet.

Так же есть вспомогательная табличка, Alarms_DataSet. Напоминания для каждого лица главной таблицы.
Так вот задача сводится к тому что бы в Гриде вывести картинку в вычисляемой колонке у тех лиц, у которых есть хотя бы одно напоминание. Сделал ADOQuery.
SQL:
Код:
Select Count(*) as Cnt From CONTS_ALARMS
where Cont_ID = :Cont_ID

DataSource для запроса выбрал именно Alarms
Далее в событии "OnCalcField" основной таблицы присваиваю к параметру ":Cont_ID" значение Kod из главной таблици. Открываю Запрос. Делаю проверку:
Код:
Query.Parametrs.ParamByName('Cont_ID').Value := DataSet.FieldByName('Kod').Value;
Query.Open;
If Query.FieldByName('Cnt').AsInteger > 0 then 
  DataSet.FieldByName('AlarInk').AsInteger := 4
else
  DataSet.FieldByName('AlarInk').AsInteger := 0;
Query.Close;
Все это в теле OnCalcField Главной таблицы.

Конечно такой проверкой сжираю много ресурсов. Обдумываю сейчас другой вариант.
СУТЬ проблемы в том, что когда проглядываю этот алгоритм в отладчике, все работает совершенно правильно. После отработки, в грид выводится по всему столбцу одно и тоже значение опираясь на последнюю запись в главной таблице.

В общем буду рад любому наставлению, совету, нагоняю и т.д. =)
__________________
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter