![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка в вычисляемом поле [D7, XP]
Кирей © (2008-07-03 16:54:00)при добавлении в запрос поля
(10^dd1.znak)/2) as polovinaвіскакивает ошибка: Поставщик данных или другая служба вернули состояние E_Failгде ошибка?
Использую ADO + Microsoft OLE DB Provider for Visual FoxPro 8.0
sniknik (2008-07-04 16:24:00) [1]> проверил все таблицы
а нужно результат объединения...
> получается красивое данное без единого null
да ну?
вместо (10^dd1.znak)/2 в запросе поставь просто dd1.znak и внимательно посмотри на его значения...
или запомни количество возвращаемых записей, после последний left join (тот что для dd1), замени на inner join и сравни количество... если разница есть то есть и значения с null.
а чтоб была гарантия должно быть условие проверки на null.
> Может как-то можно трассировать в Delphi запрос?
дельфи запрос не выполняет. т.е. оно вообще не причем.
Кирей (2008-07-04 15:32:00) [2]проверил все таблицы, запрос без
(10^dd1.znak)/2)выполняется отлично, получается красивое данное без единого null, но это поле очень нужно. Может как-то можно трассировать в Delphi запрос?
sniknik (2008-07-04 10:40:00) [3]никак, значения 6 и 7 (до 9, а если тип выражения допускает то и до 15) вполне допустимы. т.е. если там все значения <= 7, и не null то ошибка не в этом.
и +, зачем в запросе "левое" соединение? раз dd1.znak обязательно должен иметь значение, при left все пропуски в соединении будут = null.
Кирей (2008-07-04 09:08:00) [4]
> даже 10^10 = E_Fail
> какое максимальное значение у тебя в dd1.znak?
может быть 7, но реально есть 6 а как же быть то?
sniknik (2008-07-03 17:38:00) [5]даже 10^10 = E_Fail
какое максимальное значение у тебя в dd1.znak?
Кирей (2008-07-03 17:03:00) [6]Пардон, скобка лишняя (экспериментировал с проверкой пустых значений)
вот весь запрос:
select dd.ls, ddd.pok, iif(isnull(ddd.pok1), dd.lastppok, ddd.pok1) as nlimits, (10^dd1.znak)/2
from ("abon.dbf" dd
left join
(select d.ls, d4.pok, d2.pok1, iif(isnull(d2.dateout), d.lastfee, d2.dateout) as nach_per, d4.data as kon_per
from (("abon.dbf" d
left join "\06_2008\nach.dbf" d2 on d.ls=d2.ls)
left join "\07_2008\obhod" d4 on d.ls=d4.ls)) ddd on dd.ls=ddd.ls)
left join
(select dd2.znak, dd1.ukod, dd1.datein from "lich.dbf" dd1, "lichinf.dbf" dd2 where dd1.shifr=dd2.kod) dd1 on dd.ukod=dd1.ukod
where (ddd.pok>0) and ((dd1.datein<ddd.nach_per) or (dd1.datein>ddd.kon_per)) and (dd.ls is not null)
Desdechado (2008-07-03 17:01:00) [7]Это не поле, т.к. явно одной скобки не хватает.
Что за шляпка?
Кирей (2008-07-03 17:01:00) [8]еще, dd1.znak не содержит пустых значений