|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Значение вычисляемого поля с помощью 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; Так же есть вспомогательная табличка, 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; Конечно такой проверкой сжираю много ресурсов. Обдумываю сейчас другой вариант. СУТЬ проблемы в том, что когда проглядываю этот алгоритм в отладчике, все работает совершенно правильно. После отработки, в грид выводится по всему столбцу одно и тоже значение опираясь на последнюю запись в главной таблице. В общем буду рад любому наставлению, совету, нагоняю и т.д. =) "Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт |