C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: пустой возвращаемый набор в ADOQuery - как отловить?  (Прочитано 1265 раз)
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


пустой возвращаемый набор в ADOQuery - как отловить?
« : 19 Март 2015, 14:48:18 »

Добрый всем день!
пробую работать с MS access через ado.
есть простой запрос ADOQuery q
у него в SQL -
select Sum(f0) as rez_f0,
 Sum(f2) as rez_f0
 from tab1 t
 where
   t.code1 = :ptr_code1
and t.code2 = :ptr_code2

всё нормально работает, но в некоторых запросах нет выводимых данных - то есть rez_f0 и rez_f1 нулевые. и тогда происходит какя-то фигня - при попытке прочитать значения f0 или f1
float f = q->FieldByName("rez_f0")->Value
получаю could not convert variant type Null into type double

нарисовался такой вопрос - как бы отловить такие пустые наборы данных?
пробовал IsEmpty, RecordCount - не работает.
Записан
OVE
Участник


Сказали спасибо: +67/-0
Offline

Сообщений: 72


Re: пустой возвращаемый набор в ADOQuery - как отловить?
« Ответ #1 : 19 Март 2015, 15:30:07 »

Код:
if(! q->FieldByName("rez_f0")->IsNull)
f= q->FieldByName("rez_f0")->Value
Записан
forester
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 9


« Ответ #2 : 20 Март 2015, 08:37:09 »

заморока в том, что q->FieldByName("rez_f0") действительно не есть Null
если
Variant v = q->FieldByName("rez_f0")->Value, то Null там действительно нет.
пока вышел из ситуации тем, что смотрю на

unsigned short us = v.VType
если us == 1 то набор ,как понимаю, некорректный.
а вот теперь, когда это работает, буду выяснять почему и как оно работает 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.082 секунд. Запросов: 21.