Страница 1 из 1

Разница между select и GetFirst

Добавлено: 05 дек 2007, 15:07
Nikos
Добрый день! Нужна помощь.
Есть задача получить бух. справку закрытия счетов текущего месяца. Пишу:

select Plpor.* where ((
0 == REFTABLE.WACCOUNT
and 16 == REFTABLE.WMAIN
and 0 == REFTABLE.WSUB
and 9008 == REFTABLE.WTABLE1
and 4612012188596493196 == REFTABLE.CRECORD1
and REFTABLE.CRECORD2 /== PLPOR.NREC
and date(31,10,2007) == PLPOR.DATVIP (noindex)));

Все прекрасно работает, выдает нужную справку.
Но нужно то же самое сделать в vip. Если же пишу

GetFirst Plpor.* where ((
0 == REFTABLE.WACCOUNT
and 16 == REFTABLE.WMAIN
and 0 == REFTABLE.WSUB
and 9008 == REFTABLE.WTABLE1
and 4612012188596493196 == REFTABLE.CRECORD1
and REFTABLE.CRECORD2 /== PLPOR.NREC
and date(31,10,2007) == PLPOR.DATVIP (noindex)));

то не находит! Почему?

Добавлено: 05 дек 2007, 19:38
Max_Fin
Во первых что такое GetFirst Plpor.*
Во вторых GetFirst может работать только с одной таблицей, в данном случае в where должно справа использоваться только PlPor

Код: Выделить всё

if GetFirst REFTABLE where //возможно не GetFirst?
((
0 == REFTABLE.WACCOUNT 
and 16 == REFTABLE.WMAIN 
and 0 == REFTABLE.WSUB 
and 9008 == REFTABLE.WTABLE1 
and 4612012188596493196 == REFTABLE.CRECORD1 
)) = tsOK
{
  //непонятно зачем date(31,10,2007) == PLPOR.DATVIP?
  if GetFirst PlPor where ((REFTABLE.CRECORD2 == PLPOR.NREC)) = tsOK
  {
    if date(31,10,2007) = PLPOR.DATVIP {}
  }
}

Добавлено: 05 дек 2007, 22:48
edward_K
либо вы к своему select добавляете в начало
create view v as select ...
и потом пишите
if v.getfirst=0 ...

Добавлено: 06 дек 2007, 09:15
Nikos
1. GetFirst Plpor.* это я, конечно, описался (уже здесь)
2. Что GetFirst может работать только с одной таблицей это я совсем забыл (а, может, и не знал вовсе...) - это и было моей главной ошибкой.
3. С create view сделал - все заработало.
Большое спасибо за консультации!