Не получается быстро.
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
Не получается быстро.
Я уже обращалась за помощью, но никак не получается.
В форме создаю представление.
.Create view prixod1
from katsopr, spsopr
where ((
sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
))
and begDat <= katsopr.dsopr
and endDat >=katsopr.dsopr
and (word(502)=katsopr.vidsopr or word(600)=katsopr.vidsopr or word(103)=katsopr.vidsopr or word(102)=katsopr.vidsopr or word(630)=katsopr.vidsopr)
;
Пытаюсь в индексы загнать даты и Vidsopr, но постоянно выходит ошибка и не компилируется.
работает только так, но очень медленно.
дальше код :
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
!ПРИХОД
!накладная на приход готовой продукции
.begin
if Prixod1.katsopr.vidsopr=word(502) then begin
n2:=n2+Prixod1.spsopr.kolfact;
end;
!перемещение со склада на склад
if Prixod1.katsopr.vidsopr=word(600) then begin
np1:=np1+Prixod1.spsopr.kolfact;
end;
!возврат с консигнации (отпуск на консигн)
if Prixod1.katsopr.vidsopr=word(102) then begin
np2:=np2+Prixod1.spsopr.kolfact;
end;
!прием на консигнацию
if Prixod1.katsopr.vidsopr=word(103) then begin
np3:=np3+Prixod1.spsopr.kolfact;
end;
!акт на пересортицу
if Prixod1.katsopr.vidsopr=word(630) then begin
if prixod1.spsopr.prmc=1 then begin
np4:=np4+Prixod1.spsopr.kolfact;
end;
end;
end.
.}
.}
... дальше запись во временную таблицу.
insert lim3
set
lim3.barkod:=svet1,
lim3.namemc:=NomMC+' '+bk,
lim3.dcotp:=n2,
lim3.dcot2:=np1,
lim3.dcot3:=np2,
lim3.dcot4:=np3,
lim3.dcot5:=np4,
lim3.dc1=npsum,
lim3.dcot6:=nr2,
lim3.dcot7:=npr1,
lim3.dcot8:=npr2,
lim3.dcot9:=npr3,
lim3.dcot10:=npr4,
lim3.dcot:=n3,
lim3.dcon:=n4,
lim3.svet:=svet1,
lim3.DSUMLIMIT:=NN;
...
Невыносимо медленно. Что-то я не догоняю, почему у вас в индексы заносится, а у меня нет .Помогите, пожалуйста.
В форме создаю представление.
.Create view prixod1
from katsopr, spsopr
where ((
sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
))
and begDat <= katsopr.dsopr
and endDat >=katsopr.dsopr
and (word(502)=katsopr.vidsopr or word(600)=katsopr.vidsopr or word(103)=katsopr.vidsopr or word(102)=katsopr.vidsopr or word(630)=katsopr.vidsopr)
;
Пытаюсь в индексы загнать даты и Vidsopr, но постоянно выходит ошибка и не компилируется.
работает только так, но очень медленно.
дальше код :
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
!ПРИХОД
!накладная на приход готовой продукции
.begin
if Prixod1.katsopr.vidsopr=word(502) then begin
n2:=n2+Prixod1.spsopr.kolfact;
end;
!перемещение со склада на склад
if Prixod1.katsopr.vidsopr=word(600) then begin
np1:=np1+Prixod1.spsopr.kolfact;
end;
!возврат с консигнации (отпуск на консигн)
if Prixod1.katsopr.vidsopr=word(102) then begin
np2:=np2+Prixod1.spsopr.kolfact;
end;
!прием на консигнацию
if Prixod1.katsopr.vidsopr=word(103) then begin
np3:=np3+Prixod1.spsopr.kolfact;
end;
!акт на пересортицу
if Prixod1.katsopr.vidsopr=word(630) then begin
if prixod1.spsopr.prmc=1 then begin
np4:=np4+Prixod1.spsopr.kolfact;
end;
end;
end.
.}
.}
... дальше запись во временную таблицу.
insert lim3
set
lim3.barkod:=svet1,
lim3.namemc:=NomMC+' '+bk,
lim3.dcotp:=n2,
lim3.dcot2:=np1,
lim3.dcot3:=np2,
lim3.dcot4:=np3,
lim3.dcot5:=np4,
lim3.dc1=npsum,
lim3.dcot6:=nr2,
lim3.dcot7:=npr1,
lim3.dcot8:=npr2,
lim3.dcot9:=npr3,
lim3.dcot10:=npr4,
lim3.dcot:=n3,
lim3.dcon:=n4,
lim3.svet:=svet1,
lim3.DSUMLIMIT:=NN;
...
Невыносимо медленно. Что-то я не догоняю, почему у вас в индексы заносится, а у меня нет .Помогите, пожалуйста.
Как-то так...
Код: Выделить всё
.Create view prixod1
var vSopr : word
from katsopr, spsopr
where ((
vSopr == KatSopr.VidSopr
and BegDat <<= KatSopr.dSopr
and EndDate >>= KatSopr.dSopr
and sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec == spsopr.CMCUSL
))
;
Код: Выделить всё
!ПРИХОД
!накладная на приход готовой продукции
.begin Prixod1.vSopr := 502; end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
n2:=n2+Prixod1.spsopr.kolfact;
end;
.}
.}
!перемещение со склада на склад
.begin Prixod1.vSopr := 600; end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
np1:=np1+Prixod1.spsopr.kolfact;
end.
.}
.}
!возврат с консигнации (отпуск на консигн)
.begin Prixod1.vSopr := 102; end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
np2:=np2+Prixod1.spsopr.kolfact;
end.
.}
.}
!прием на консигнацию
.begin Prixod1.vSopr := 103; end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
np3:=np3+Prixod1.spsopr.kolfact;
end.
.}
.}
!акт на пересортицу
.begin Prixod1.vSopr := 630; end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
if prixod1.spsopr.prmc=1 then begin
np4:=np4+Prixod1.spsopr.kolfact;
end.
.}
.}
Когда пишете условия внутри двойных круглых скобок, старайтесь в словаре подобрать самый подходящий индекс. NoIndex и условия за скобками - вариант, когда исчерпаны все возможности использования индексов. Иногда ради оптимальных индексов может даже потребоваться проекцию перестроить. Возможно, в вашем случае (раз нужны приходы конкретной МЦ на конкретный склад) было бы удобнее идти от таблицы SPORDER, к которой полно всяких индексов, а уже потом определять вид накладной, идя в нее из ордера.почему у вас в индексы заносится, а у меня нет
Ну с таким описанием ошибки, понять в чем ошибка крайне непросто. Необходимо иметь хотябы минимальные экстрасенсорные способности...и все равно ошибка, то не может осуществить преобразование типов, то неверная настройка логических таблиц
Если это единственная View в отчете, то зачем ее именуете?Не хочет компилятор такую таблицу пропускать prixod1
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
view не единственная. В мою полностью рабочую форму просто вставляю view
.Create view prixod1
var vSopr : word
from katsopr, spsopr
where ((
vSopr == KatSopr.VidSopr
and BegDat <<= KatSopr.dSopr
and EndDat >>= KatSopr.dSopr
and sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec == spsopr.CMCUSL
))
;
больше не делаю никаких с этим представлением действий. Форма перестает компилироваться. Ошибка : не могу осуществить преобразование типов в этой строке. and begDat <<= katsopr.dsopr
.Create view prixod1
var vSopr : word
from katsopr, spsopr
where ((
vSopr == KatSopr.VidSopr
and BegDat <<= KatSopr.dSopr
and EndDat >>= KatSopr.dSopr
and sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec == spsopr.CMCUSL
))
;
больше не делаю никаких с этим представлением действий. Форма перестает компилироваться. Ошибка : не могу осуществить преобразование типов в этой строке. and begDat <<= katsopr.dsopr
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
Откомпиллировалось. Но в процессе выполнения ошибка.
BegDat, EndDat,sklad_nrec, MC_nrec - из потока, из прототипа
.Create view prixod1
from katsopr, spsopr
where ((
sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
and begDat <= katsopr.dsopr
and endDat >=katsopr.dsopr
and tip==katsopr.vidsopr
))
;
.begin
tip:=word(502)
end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
n2:=n2+Prixod1.spsopr.kolfact;
Summa2:=Summa2+Prixod1.spsopr.kolfact;
end.
.}
.}
Пишет ,что ошибка, таблица зависит от самой себя...
BegDat, EndDat,sklad_nrec, MC_nrec - из потока, из прототипа
.Create view prixod1
from katsopr, spsopr
where ((
sklad_nrec == katsopr.CPODRTO(noindex)
and katsopr.nrec == spsopr.csopr
and MC_nrec==spsopr.CMCUSL
and begDat <= katsopr.dsopr
and endDat >=katsopr.dsopr
and tip==katsopr.vidsopr
))
;
.begin
tip:=word(502)
end.
.{table 'Prixod1.katsopr'
.{table 'Prixod1.spsopr'
.begin
n2:=n2+Prixod1.spsopr.kolfact;
Summa2:=Summa2+Prixod1.spsopr.kolfact;
end.
.}
.}
Пишет ,что ошибка, таблица зависит от самой себя...