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

PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 06 дек 2012, 13:24
Zver
Доброго времени суток всем!

Хочу функцией PutTableToDBF выгрузить всю логическую таблицу, но результат нулевой.
Для этого указываю link = -1

При этом получается выгружать отдельные узлы этой логической таблицы.

Логическая таблица под катом.

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 06 дек 2012, 13:25
Zver
Вот логическая таблица
create view vw_PlanPrices
as Select
Dogovor.Nodoc
,Dogovor.Nodoc_ext
,Dogovor.Ddoc
,Katorg.Name
,Katnotes.Name
,Dogovor.Summa
,Katmc.Name
,Katmc.Obozn
,Spdocs.Kol
,Spdocs.Price
,Spdocs.Kol*Spdocs.Price
,Prices.Price
,Spdocs.Kol*Prices.Price
,Spdocs.Kol*Spdocs.Price - Spdocs.Kol*Prices.Price
From
Dogovor
,Katorg
,Katnotes
,KatMc
,SpDocs
,Prices
Where
((
Dogovor.Corg == KatOrg.Nrec
and Dogovor.Cnote == KatNotes.Nrec
and Dogovor.Nrec == SpDocs.Cdoc (noindex)
and Spdocs.CmcUsl == KatMc.Nrec
and Spdocs.CmcUsl == Prices.cThing (noindex)
and (281474976710667 = Prices.cklprice)
))
and 281474976739039 = Dogovor.Nrec
;

Так вызываю функцию:
vw_PlanPrices.PutTableToDBF (-1, 'D:\PricesPlan.dbf', 0 );

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 06 дек 2012, 14:05
oiko
Лучше так
((
281474976739039 == Dogovor.Nrec - если убрать будут все договора
and Dogovor.Corg == KatOrg.Nrec
and Dogovor.Cnote == KatNotes.Nrec
and 400==SpDocs.tidk // или чему он там у вас равен
and Dogovor.Nrec == SpDocs.Cdoc - спецификации может не быть
and Spdocs.CmcUsl == KatMc.Nrec - это может быть услуга
and 281474976710667 == Prices.cklprice - в этом прайсе может и не быть такой ТМЦ
and Spdocs.CmcUsl == Prices.cThing
));

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 06 дек 2012, 16:00
Zver
Oiko,

К сожалению никаких изменений не произошло :cry:

если эту конструкцию написать в саппорте, то получается правильный результат,

так что запрос правильный. Может есть ещё какие-то подводные камни?

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 07 дек 2012, 06:30
Алексей
а что за первый параметр -1 ?
я выгружаю так PutTableToDBF(#table,path, ptfFullTable); но это конкретная таблица... может нужно указать имя вьюхи?

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 07 дек 2012, 10:58
Zver
Алексей,

-1 - согласно документации в этом случае должна выгружаться вся таблица.

К сожалению, ваш способ не помог, компилятор ругается, что не понимает, зачем в этом месте имя таблицы.

Кроме того, обошел проблему, используя средства для работы с Excell файлами вместо PutTableToDBF.

Это заняло больше времени, но задача решена.

Re: PutTableToDBF Выгрузка всей логической таблицы

Добавлено: 07 дек 2012, 11:02
Den
вроде выгружает навскидку на простом примерчике все :

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

Interface testdbf;
 create view
  as select

   basedoc.ddoc,
   basedoc.nodoc,
   katorg.name,
   basedoc.total,
   katsopr.summa

  from 
   basedoc
  ,katorg
  ,stepdoc
  ,katsopr
  where 
  ((
        word(101)==basedoc.viddoc
    and basedoc.nrec == stepdoc.cbasedoc
    and stepdoc.nrec == katsopr.cstepdoc
    and basedoc.corg == katorg.nrec
  ))
  ;

 handleevent
  CmInit:{
          PutTableToDBF (-1,'c:\base.dbf',0);
         }
 end;
end.

может глючит где то на каком то узле выгрузки(или поле в select-liste). Нужно пробовать отключить по очереди узлы(исключать поля выгрузки) может нащупаете это место тогда