Доброго времени суток всем!
Хочу функцией PutTableToDBF выгрузить всю логическую таблицу, но результат нулевой.
Для этого указываю link = -1
При этом получается выгружать отдельные узлы этой логической таблицы.
Логическая таблица под катом.
			
			
									
						
							PutTableToDBF Выгрузка всей логической таблицы
Модераторы: m0p3e, edward_K, Модераторы
- 
				Zver
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
PutTableToDBF Выгрузка всей логической таблицы
Программист-самоучка
			
						- 
				Zver
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: PutTableToDBF Выгрузка всей логической таблицы
Вот логическая таблица
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 );
			
			
									
						
							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 Выгрузка всей логической таблицы
Лучше так
((
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
));
			
			
									
						
										
						((
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
));
- 
				Zver
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: PutTableToDBF Выгрузка всей логической таблицы
Oiko,
К сожалению никаких изменений не произошло 
 
если эту конструкцию написать в саппорте, то получается правильный результат,
так что запрос правильный. Может есть ещё какие-то подводные камни?
			
			
									
						
							К сожалению никаких изменений не произошло
 
 если эту конструкцию написать в саппорте, то получается правильный результат,
так что запрос правильный. Может есть ещё какие-то подводные камни?
Программист-самоучка
			
						- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: PutTableToDBF Выгрузка всей логической таблицы
а что за первый параметр -1 ?
я выгружаю так PutTableToDBF(#table,path, ptfFullTable); но это конкретная таблица... может нужно указать имя вьюхи?
			
			
									
						
										
						я выгружаю так PutTableToDBF(#table,path, ptfFullTable); но это конкретная таблица... может нужно указать имя вьюхи?
- 
				Zver
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: PutTableToDBF Выгрузка всей логической таблицы
Алексей, 
-1 - согласно документации в этом случае должна выгружаться вся таблица.
К сожалению, ваш способ не помог, компилятор ругается, что не понимает, зачем в этом месте имя таблицы.
Кроме того, обошел проблему, используя средства для работы с Excell файлами вместо PutTableToDBF.
Это заняло больше времени, но задача решена.
			
			
									
						
							-1 - согласно документации в этом случае должна выгружаться вся таблица.
К сожалению, ваш способ не помог, компилятор ругается, что не понимает, зачем в этом месте имя таблицы.
Кроме того, обошел проблему, используя средства для работы с Excell файлами вместо PutTableToDBF.
Это заняло больше времени, но задача решена.
Программист-самоучка
			
						- 
				Den
- Местный житель
- Сообщения: 1847
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: PutTableToDBF Выгрузка всей логической таблицы
вроде выгружает навскидку на простом примерчике все :
может глючит где то на каком то узле выгрузки(или поле в select-liste). Нужно пробовать отключить по очереди узлы(исключать поля выгрузки) может нащупаете это место тогда
			
			
									
						
										
						Код: Выделить всё
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.