Помогите, пожалуйста, с VIEW представлением
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 188
- Зарегистрирован: 04 апр 2009, 15:56
- Откуда: сАРАТОВ
- Контактная информация:
Помогите, пожалуйста, с VIEW представлением
Хочу поставить дату последней опрации из Oborot.
c1p1,c0p2 - из потока. Ужасно медленно работает .
Может, я неправильно строю view представление?
.Create view TData
from Oborot (ReadOnly),katorg (ReadOnly),KatBank (ReadOnly),KatCity (ReadOnly)
where
((oborot.kauos[1]==Katorg.nrec
and
Katorg.Nrec==KatBank.Corg
and
Katorg.ccity==Katcity.Nrec
))
and
c1p1=KatOrg.Name
and
(oborot.datob<=StrToDate(c0p2,'DD/MM/YYYY'))
and
(oborot.SchetO='362'
or
oborot.SchetO='376'
or
oborot.SchetO='360')
;
c1p1,c0p2 - из потока. Ужасно медленно работает .
Может, я неправильно строю view представление?
.Create view TData
from Oborot (ReadOnly),katorg (ReadOnly),KatBank (ReadOnly),KatCity (ReadOnly)
where
((oborot.kauos[1]==Katorg.nrec
and
Katorg.Nrec==KatBank.Corg
and
Katorg.ccity==Katcity.Nrec
))
and
c1p1=KatOrg.Name
and
(oborot.datob<=StrToDate(c0p2,'DD/MM/YYYY'))
and
(oborot.SchetO='362'
or
oborot.SchetO='376'
or
oborot.SchetO='360')
;
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
еще бы.
надо бы завести переменную
и просканировать oborot 3 раза используя индекс OBOROT21
where ((
wsch == oborot.SchetO
and c1p1==katOrg.Name
and katorg.nrec == oborot.kauos[1]
and StrToDate(c0p2,'DD/MM/YYYY') >>=oborot.datob
)) ;
..
wdt:=date(0,0,0)
set TData.wsch:='362'
if TData.getlas oborot=0
if wdt<TData.oborot.datob wdt:=TData.oborot.datob
надо бы завести переменную
и просканировать oborot 3 раза используя индекс OBOROT21
where ((
wsch == oborot.SchetO
and c1p1==katOrg.Name
and katorg.nrec == oborot.kauos[1]
and StrToDate(c0p2,'DD/MM/YYYY') >>=oborot.datob
)) ;
..
wdt:=date(0,0,0)
set TData.wsch:='362'
if TData.getlas oborot=0
if wdt<TData.oborot.datob wdt:=TData.oborot.datob
Re: Помогите, пожалуйста, с VIEW представлением
Здравствуйте! Есть такая проблемка... Представление в саппорте отрабатывает правильно, но при выводе данных по драг. металлам показывает неверные данные, он выводит две одинаковые записи:
Код: Выделить всё
.linkform ’KartStor_dm’ prototype is ’KartStor’
.group ’belform’
.NameInList ’КАРТОЧКА СКЛАДСКОГО УЧЕТА РБ ( с ДМ )’
.var
ItogoSummaNDE : double
ItogoSummaVal : double
NRec : comp
sch_2, x_2:integer; //для вывода на печать
N_ckdr : comp;
N_kol : double;
T_Spec : longint; // Таблица реализации
NT_ckdr : word;
NT_kol : word;
Au: double // золото
Ag: double //серебро
Pt: double // платина
Ptgr: double //платиновая группа
Pd: double // палладий
.endvar
.begin
NRec := TOVAR_NRec
End.
.CREATE VIEW vDrag
!AS SELECT *
!FROM naldrag, katdrag
! where
!((
!Comp(TOVAR_NRec) == naldrag .ckatos (noindex)
!And naldrag.ckatdrag == katdrag.nrec
!));
As select
Katdrag.nrec, naldrag.kol, naldrag.*
FROM
Katmc
left join naldrag on ((katmc.nrec==naldrag.ckatos (noindex)))
left join katdrag on ((naldrag.ckatdrag==katdrag.nrec))
WHERE
Katmc.nrec = comp(Tovar_nrec);
.fields
TOVAR_BarKod
sGetTune(’MyOrg’)
V2
V3
TOVAR_NAME
TOVAR_BarKod
TOVAR_Ed_Izm
.endfields
Утверждено учётной политикой ОАО “Керамин”
Код ТМЦ ^
^
наименование организации
^
наименование структурного подразделения
^
материально-ответственное лицо
КАРТОЧКА СКЛАДСКОГО УЧЕТА
Наименование материала: ^ , ^
Единица измерения: ^
Марка, сорт, профиль, размер и т.д.:
.var
prih: double
rash: double
itog: double
n: integer
itogIN: double
ItogOUT: double
.endvar
.fields
DoubleToStr(kol, KolForm) // входящий остаток
DoubleToStr(srPrice, PriceR)
n
field2 // дата
field5 //номер наклад
field1 // номер ордера
field6 field6_MOL// поставщик получат
DoubleToStr(prih, KolForm)
DoubleToStr (rash, KolForm)
DoubleToStr (itog, KolForm)
DoubleToStr(field11, PriceR)
field_m12
.endfields
.begin
Itog:= double(kol);
End.
№ Дата
записи Номер накладной Номер
ордера Место хранения От кого получено
или кому отпущено Приход Расход Остаток Цена Норма запаса
стеллаж ячейка
1 2 3 4 5 6 7 8 9 10 11 12
Входящий остаток ^ ^
.{
.begin
case field3 of
’Приход’:
{
prih := field10;
rash := 0;
itog := itog + prih;
itogIN := itogIN + prih;
}
’Расход’:
{
rash := field10;
prih := 0;
itog := itog - rash;
itogOUT := itogOUT + rash;
}
end;
n:=n+1
end.
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.}
.fields
DoubleToStr(itogIN, KolForm) // итого приход
DoubleToStr(itogOUT, KolForm) // итого расход
DoubleToStr(kolIsh, KolForm) // исходящий остаток
DoubleToStr(SrPriceIsh, PriceR)
.endfields
Итого обороты ^ ^
Исходящий остаток ^ ^
.begin
!Au := 0 ; // золото
!Ag := 0; //серебро
!Pt := 0; // платина
!Ptgr := 0; //платиновая группа
!Pd := 0; // палладий
T_Spec := TblInitNew(1,1); // создаем таблицу драг. металлов
NT_ckdr := TblNewField(T_Spec,12);
TblEndKey(T_Spec); // строим индекс
NT_Kol := TblNewField(T_Spec,12);
end.
.{ table ‘Vdrag’
.begin
TblSfString(T_Spec, NT_ckdr, vdrag.naldrag.ckatdrag);
if(TblGetEqual(T_Spec)) // Запись есть
{
TblSfDouble(T_Spec,NT_kol, TblGfDouble(T_Spec,NT_kol) + vdrag.naldrag.kol);
TblUpDateCurrent(T_Spec);
}
Else
{
TblSfDouble(T_Spec,NT_kol, vdrag.naldrag.kol);
TblInsertCurrent(T_Spec);
}
End.
.}
!.begin
!Au := If (vDrag.naldrag .ckatdrag=comp(’000100000000000Bh’), kolIsh * vDrag.naldrag.Kol,0); // золото
!Ag := If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), kolIsh * Double(vDrag.naldrag.Kol),0); // серебро
!Pt := If (vDrag.naldrag.ckatdrag=comp(’0001000000000015h’), kolIsh *vDrag. naldrag.Kol,0); // платина
!Ptgr := If (vDrag.naldrag.ckatdrag=comp(’0001000000000016h’) or vDrag.naldrag.ckatdrag=comp(’000100000000001Fh’), Ptgr + kolIsh * !vDrag.naldrag.Kol,0);
!Pd := If (vDrag.naldrag.ckatdrag=comp(’000100000000001Ah’), kolIsh * vDrag.naldrag.Kol,0);
!End.
.fields
N_ckdr
DoubleToStr(Au, ‘\4p666 666.8888’)
DoubleToStr(Ag, ‘\4p666 666.8888’)
!DoubleToStr((If (vDrag.naldrag.ckatdrag=’0001000000000010h’, kolIsh * Double(vDrag. naldrag.Kol),0)), ‘\4p666 666.8888’)
!If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), DoubleToStr(kolIsh * vDrag.naldrag.Kol, ‘\4p666 666.8888’),0)
DoubleToStr(Pt, ‘\4p666 666.8888’)
DoubleToStr(Ptgr, ‘\4p666 666.8888’)
DoubleToStr(Pd, ‘\4p666 666.8888’)
V3
.endfields
.begin
sch_2:= TblRecords(T_Spec)-1;
x_2:=0;
End.
Содержание драгоценных металлов
Наименование Масса, г.
.{ while (x_2<=sch_2)
.begin
N_ckdr:=TblGfString(T_Spec,NT_ckdr);
N_kol:=TblGfDouble(T_Spec,NT_kol);
Au := If (N_ckdr =comp(’000100000000000Bh’), kolIsh * N_kol,0); // золото
Ag := If (N_ckdr =comp(’0001000000000010h’), kolIsh *N_kol,0); // серебро
Pt := If (N_ckdr =comp(’0001000000000015h’), kolIsh * N_kol,0); // платина
Ptgr := If (N_ckdr =comp(’0001000000000016h’) or N_ckdr=comp(’000100000000001Fh’), Ptgr + kolIsh * N_kol,0);
Pd := If (N_ckdr =comp(’000100000000001Ah’), kolIsh * N_kol,0);
End.
^
.{?Internal; N_ckdr = comp(’000100000000000Bh’)
Золото ^
.}
.{?Internal; N_ckdr = comp(’0001000000000010h’)
Серебро ^
.}
.{?Internal; N_ckdr = comp(’0001000000000015h’)
Платина ^
.}
.{?Internal; N_ckdr = comp(’0001000000000016h’)
Платиновая группа ^
.}
.{?Internal; N_ckdr = comp(’000100000000001Ah’)
Палладий ^
.}
.begin
x_2:=x_2+1;
end.
.}
Подпись материально-
ответственного лица
^
Фамилия И.О.
.endform
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Помогите, пожалуйста, с VIEW представлением
Угу. И ка сие вообще компилятор проглотил? Что то слабо вериться, что атлантис наконец то стал соотв. по синтаксису обычному SQL
Надо как то так
Ну и в выводе вы чего то перемудрили.
сделайте вывод в цикле по table vdrag
и не увидел этого
перед циклом
function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';
в конце программного блока в цикле
function TblGetNext (LongInt) : boolean; external 'G_Common.dll';
Надо как то так
Код: Выделить всё
FROM
Katmc
, naldrag,katdrag
WHERE
(( comp(Tovar_nrec) == Katmc.nrec
and 3 == naldrag.tidk
and katmc.nrec==naldrag.ckatos
and naldrag.ckatdrag==katdrag.nrec
))
;
сделайте вывод в цикле по table vdrag
и не увидел этого
перед циклом
function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';
в конце программного блока в цикле
function TblGetNext (LongInt) : boolean; external 'G_Common.dll';
Re: Помогите, пожалуйста, с VIEW представлением
Ругается на функцию "Ожидалась константа, поле, функция, "IF" или "CASE" (стр.136, поз.1 в D:\NET\VIP\TEST\09_0068\09_0068\SRC\KARTSTOR_DM.RTF)
│ function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';"
│ function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';"
Код: Выделить всё
.linkform ’KartStor_dm’ prototype is ’KartStor’
.group ’belform’
.NameInList ’КАРТОЧКА СКЛАДСКОГО УЧЕТА РБ ( с ДМ )’
.var
ItogoSummaNDE : double
ItogoSummaVal : double
NRec : comp
sch_2, x_2:integer; //для вывода на печать
N_ckdr : comp;
N_kol : double;
T_Spec : longint; // Таблица реализации
NT_ckdr : word;
NT_kol : word;
Au: double // золото
Ag: double //серебро
Pt: double // платина
Ptgr: double //платиновая группа
Pd: double // палладий
.endvar
.begin
NRec := TOVAR_NRec
End.
.CREATE VIEW vDrag
!AS SELECT *
!FROM naldrag, katdrag
! where
!((
!Comp(TOVAR_NRec) == naldrag .ckatos (noindex)
!And naldrag.ckatdrag == katdrag.nrec
!));
As select
Katdrag.nrec, naldrag.kol, naldrag.*
FROM katmc, naldrag, katdrag
where
((comp(Tovar_nrec) == Katmc.nrec
and 3 == naldrag.tidk
and katmc.nrec==naldrag.ckatos
and naldrag.ckatdrag==katdrag.nrec
));
.fields
TOVAR_BarKod
sGetTune(’MyOrg’)
V2
V3
TOVAR_NAME
TOVAR_BarKod
TOVAR_Ed_Izm
.endfields
Утверждено учётной политикой ОАО “Керамин”
Код ТМЦ ^
^
наименование организации
^
наименование структурного подразделения
^
материально-ответственное лицо
КАРТОЧКА СКЛАДСКОГО УЧЕТА
Наименование материала: ^ , ^
Единица измерения: ^
Марка, сорт, профиль, размер и т.д.:
.var
prih: double
rash: double
itog: double
n: integer
itogIN: double
ItogOUT: double
.endvar
.fields
DoubleToStr(kol, KolForm) // входящий остаток
DoubleToStr(srPrice, PriceR)
n
field2 // дата
field5 //номер наклад
field1 // номер ордера
field6 field6_MOL// поставщик получат
DoubleToStr(prih, KolForm)
DoubleToStr (rash, KolForm)
DoubleToStr (itog, KolForm)
DoubleToStr(field11, PriceR)
field_m12
.endfields
.begin
Itog:= double(kol);
End.
№ Дата
записи Номер накладной Номер
ордера Место хранения От кого получено
или кому отпущено Приход Расход Остаток Цена Норма запаса
стеллаж ячейка
1 2 3 4 5 6 7 8 9 10 11 12
Входящий остаток ^ ^
.{
.begin
case field3 of
’Приход’:
{
prih := field10;
rash := 0;
itog := itog + prih;
itogIN := itogIN + prih;
}
’Расход’:
{
rash := field10;
prih := 0;
itog := itog - rash;
itogOUT := itogOUT + rash;
}
end;
n:=n+1
end.
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.}
.fields
DoubleToStr(itogIN, KolForm) // итого приход
DoubleToStr(itogOUT, KolForm) // итого расход
DoubleToStr(kolIsh, KolForm) // исходящий остаток
DoubleToStr(SrPriceIsh, PriceR)
.endfields
Итого обороты ^ ^
Исходящий остаток ^ ^
.begin
!Au := 0 ; // золото
!Ag := 0; //серебро
!Pt := 0; // платина
!Ptgr := 0; //платиновая группа
!Pd := 0; // палладий
T_Spec := TblInitNew(1,1); // создаем таблицу драг. металлов
NT_ckdr := TblNewField(T_Spec,12);
TblEndKey(T_Spec); // строим индекс
NT_Kol := TblNewField(T_Spec,12);
end.
.{ table ‘Vdrag’
.begin
function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';
TblSfString(T_Spec, NT_ckdr, vdrag.naldrag.ckatdrag);
if(TblGetEqual(T_Spec)) // Запись есть
{
TblSfDouble(T_Spec,NT_kol, TblGfDouble(T_Spec,NT_kol) + vdrag.naldrag.kol);
TblUpDateCurrent(T_Spec);
}
Else
{
TblSfDouble(T_Spec,NT_kol, vdrag.naldrag.kol);
TblInsertCurrent(T_Spec);
}
function TblGetNext (LongInt) : boolean; external 'G_Common.dll';
End.
.}
!.begin
!Au := If (vDrag.naldrag .ckatdrag=comp(’000100000000000Bh’), kolIsh * vDrag.naldrag.Kol,0); // золото
!Ag := If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), kolIsh * Double(vDrag.naldrag.Kol),0); // серебро
!Pt := If (vDrag.naldrag.ckatdrag=comp(’0001000000000015h’), kolIsh *vDrag. naldrag.Kol,0); // платина
!Ptgr := If (vDrag.naldrag.ckatdrag=comp(’0001000000000016h’) or vDrag.naldrag.ckatdrag=comp(’000100000000001Fh’), Ptgr + kolIsh * !vDrag.naldrag.Kol,0);
!Pd := If (vDrag.naldrag.ckatdrag=comp(’000100000000001Ah’), kolIsh * vDrag.naldrag.Kol,0);
!End.
.fields
N_ckdr
DoubleToStr(Au, ‘\4p666 666.8888’)
DoubleToStr(Ag, ‘\4p666 666.8888’)
!DoubleToStr((If (vDrag.naldrag.ckatdrag=’0001000000000010h’, kolIsh * Double(vDrag. naldrag.Kol),0)), ‘\4p666 666.8888’)
!If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), DoubleToStr(kolIsh * vDrag.naldrag.Kol, ‘\4p666 666.8888’),0)
DoubleToStr(Pt, ‘\4p666 666.8888’)
DoubleToStr(Ptgr, ‘\4p666 666.8888’)
DoubleToStr(Pd, ‘\4p666 666.8888’)
V3
.endfields
.begin
sch_2:= TblRecords(T_Spec)-1;
x_2:=0;
End.
Содержание драгоценных металлов
Наименование Масса, г.
.{ while (x_2<=sch_2)
.begin
N_ckdr:=TblGfString(T_Spec,NT_ckdr);
N_kol:=TblGfDouble(T_Spec,NT_kol);
Au := If (N_ckdr =comp(’000100000000000Bh’), kolIsh * N_kol,0); // золото
Ag := If (N_ckdr =comp(’0001000000000010h’), kolIsh *N_kol,0); // серебро
Pt := If (N_ckdr =comp(’0001000000000015h’), kolIsh * N_kol,0); // платина
Ptgr := If (N_ckdr =comp(’0001000000000016h’) or N_ckdr=comp(’000100000000001Fh’), Ptgr + kolIsh * N_kol,0);
Pd := If (N_ckdr =comp(’000100000000001Ah’), kolIsh * N_kol,0);
End.
^
.{?Internal; N_ckdr = comp(’000100000000000Bh’)
Золото ^
.}
.{?Internal; N_ckdr = comp(’0001000000000010h’)
Серебро ^
.}
.{?Internal; N_ckdr = comp(’0001000000000015h’)
Платина ^
.}
.{?Internal; N_ckdr = comp(’0001000000000016h’)
Платиновая группа ^
.}
.{?Internal; N_ckdr = comp(’000100000000001Ah’)
Палладий ^
.}
.begin
x_2:=x_2+1;
end.
.}
Подпись материально-
ответственного лица
^
Фамилия И.О.
.endform
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Помогите, пожалуйста, с VIEW представлением
А подумать? Я вам привел описание функций - чтобы вы видели как их юзать. Зачем прямо их вставлять в вашу форму? Я сам эти функции не использую уже лет 10 - мне проще временную таблу описать или TempDescr задействовать.
Re: Помогите, пожалуйста, с VIEW представлением
Сделал циклом по таблице vdrag, выводит только одну запись...
Код: Выделить всё
.linkform ’KartStor_dm’ prototype is ’KartStor’
.group ’belform’
.NameInList ’КАРТОЧКА СКЛАДСКОГО УЧЕТА РБ ( с ДМ )’
.var
ItogoSummaNDE : double
ItogoSummaVal : double
NRec : comp
sch_2, x_2:integer; //для вывода на печать
N_ckdr : comp;
N_kol : double;
T_Spec : longint; // Таблица реализации
NT_ckdr : word;
NT_kol : word;
Au: double // золото
Ag: double //серебро
Pt: double // платина
Ptgr: double //платиновая группа
Pd: double // палладий
.endvar
.begin
NRec := TOVAR_NRec
End.
.CREATE VIEW vDrag
!AS SELECT *
!FROM naldrag, katdrag
! where
!((
!Comp(TOVAR_NRec) == naldrag .ckatos (noindex)
!And naldrag.ckatdrag == katdrag.nrec
!));
As select
Katdrag.nrec, naldrag.kol, naldrag.*
FROM katmc, naldrag, katdrag
where
((comp(Tovar_nrec) == Katmc.nrec
and 3 == naldrag.tidk
and katmc.nrec==naldrag.ckatos
and naldrag.ckatdrag==katdrag.nrec
));
.fields
TOVAR_BarKod
sGetTune(’MyOrg’)
V2
V3
TOVAR_NAME
TOVAR_BarKod
TOVAR_Ed_Izm
.endfields
Утверждено учётной политикой ОАО “Керамин”
Код ТМЦ ^
^
наименование организации
^
наименование структурного подразделения
^
материально-ответственное лицо
КАРТОЧКА СКЛАДСКОГО УЧЕТА
Наименование материала: ^ , ^
Единица измерения: ^
Марка, сорт, профиль, размер и т.д.:
.var
prih: double
rash: double
itog: double
n: integer
itogIN: double
ItogOUT: double
.endvar
.fields
DoubleToStr(kol, KolForm) // входящий остаток
DoubleToStr(srPrice, PriceR)
n
field2 // дата
field5 //номер наклад
field1 // номер ордера
field6 field6_MOL// поставщик получат
DoubleToStr(prih, KolForm)
DoubleToStr (rash, KolForm)
DoubleToStr (itog, KolForm)
DoubleToStr(field11, PriceR)
field_m12
.endfields
.begin
Itog:= double(kol);
End.
№ Дата
записи Номер накладной Номер
ордера Место хранения От кого получено
или кому отпущено Приход Расход Остаток Цена Норма запаса
стеллаж ячейка
1 2 3 4 5 6 7 8 9 10 11 12
Входящий остаток ^ ^
.{
.begin
case field3 of
’Приход’:
{
prih := field10;
rash := 0;
itog := itog + prih;
itogIN := itogIN + prih;
}
’Расход’:
{
rash := field10;
prih := 0;
itog := itog - rash;
itogOUT := itogOUT + rash;
}
end;
n:=n+1
end.
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.}
.fields
DoubleToStr(itogIN, KolForm) // итого приход
DoubleToStr(itogOUT, KolForm) // итого расход
DoubleToStr(kolIsh, KolForm) // исходящий остаток
DoubleToStr(SrPriceIsh, PriceR)
.endfields
Итого обороты ^ ^
Исходящий остаток ^ ^
.begin
!Au := 0 ; // золото
!Ag := 0; //серебро
!Pt := 0; // платина
!Ptgr := 0; //платиновая группа
!Pd := 0; // палладий
T_Spec := TblInitNew(1,1); // создаем таблицу драг. металлов
NT_ckdr := TblNewField(T_Spec,12);
TblEndKey(T_Spec); // строим индекс
NT_Kol := TblNewField(T_Spec,12);
end.
!.{ table ‘Vdrag’
.begin
Vdrag._loop katmc
{
!function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';
TblSfString(T_Spec, NT_ckdr, vdrag.naldrag.ckatdrag);
if(TblGetEqual(T_Spec)) // Запись есть
{
TblSfDouble(T_Spec,NT_kol, TblGfDouble(T_Spec,NT_kol) + vdrag.naldrag.kol);
TblUpDateCurrent(T_Spec);
}
Else
{
TblSfDouble(T_Spec,NT_kol, vdrag.naldrag.kol);
TblInsertCurrent(T_Spec);
}
!function TblGetNext (LongInt) : boolean; external 'G_Common.dll';
}
End.
!.}
!.begin
!Au := If (vDrag.naldrag .ckatdrag=comp(’000100000000000Bh’), kolIsh * vDrag.naldrag.Kol,0); // золото
!Ag := If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), kolIsh * Double(vDrag.naldrag.Kol),0); // серебро
!Pt := If (vDrag.naldrag.ckatdrag=comp(’0001000000000015h’), kolIsh *vDrag. naldrag.Kol,0); // платина
!Ptgr := If (vDrag.naldrag.ckatdrag=comp(’0001000000000016h’) or vDrag.naldrag.ckatdrag=comp(’000100000000001Fh’), Ptgr + kolIsh * !vDrag.naldrag.Kol,0);
!Pd := If (vDrag.naldrag.ckatdrag=comp(’000100000000001Ah’), kolIsh * vDrag.naldrag.Kol,0);
!End.
.fields
N_ckdr
DoubleToStr(Au, ‘\4p666 666.8888’)
DoubleToStr(Ag, ‘\4p666 666.8888’)
!DoubleToStr((If (vDrag.naldrag.ckatdrag=’0001000000000010h’, kolIsh * Double(vDrag. naldrag.Kol),0)), ‘\4p666 666.8888’)
!If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), DoubleToStr(kolIsh * vDrag.naldrag.Kol, ‘\4p666 666.8888’),0)
DoubleToStr(Pt, ‘\4p666 666.8888’)
DoubleToStr(Ptgr, ‘\4p666 666.8888’)
DoubleToStr(Pd, ‘\4p666 666.8888’)
V3
.endfields
.begin
sch_2:= TblRecords(T_Spec)-1;
x_2:=0;
End.
Содержание драгоценных металлов
Наименование Масса, г.
.{ while (x_2<=sch_2)
.begin
N_ckdr:=TblGfString(T_Spec,NT_ckdr);
N_kol:=TblGfDouble(T_Spec,NT_kol);
Au := If (N_ckdr =comp(’000100000000000Bh’), kolIsh * N_kol,0); // золото
Ag := If (N_ckdr =comp(’0001000000000010h’), kolIsh *N_kol,0); // серебро
Pt := If (N_ckdr =comp(’0001000000000015h’), kolIsh * N_kol,0); // платина
Ptgr := If (N_ckdr =comp(’0001000000000016h’) or N_ckdr=comp(’000100000000001Fh’), Ptgr + kolIsh * N_kol,0);
Pd := If (N_ckdr =comp(’000100000000001Ah’), kolIsh * N_kol,0);
End.
^
.{?Internal; N_ckdr = comp(’000100000000000Bh’)
Золото ^
.}
.{?Internal; N_ckdr = comp(’0001000000000010h’)
Серебро ^
.}
.{?Internal; N_ckdr = comp(’0001000000000015h’)
Платина ^
.}
.{?Internal; N_ckdr = comp(’0001000000000016h’)
Платиновая группа ^
.}
.{?Internal; N_ckdr = comp(’000100000000001Ah’)
Палладий ^
.}
.begin
x_2:=x_2+1;
end.
.}
Подпись материально-
ответственного лица
^
Фамилия И.О.
.endform
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Помогите, пожалуйста, с VIEW представлением
угу. Цикл по МЦ у вас в одном цикле, а выводите вы теперь вне него. Конечно вы получили драгметалы только по последней МЦ.
Я не просил переносить цикл , а просто добавить в нем вывод . Вернитесь к прежней форме - там всего то не хватает TblFirst-Next - а уж как их вставить думайте. Готовое решение бесплатно не предлагаю.
Я не просил переносить цикл , а просто добавить в нем вывод . Вернитесь к прежней форме - там всего то не хватает TblFirst-Next - а уж как их вставить думайте. Готовое решение бесплатно не предлагаю.
Re: Помогите, пожалуйста, с VIEW представлением
Включил в цикл по таблице vdrag вывод полей. Так выводит все записи как надо. Только теперь выводит одну лишнюю запись, последнюю запись повторяет и задваивает количество...
Код: Выделить всё
.linkform ’KartStor_dm’ prototype is ’KartStor’
.group ’belform’
.NameInList ’КАРТОЧКА СКЛАДСКОГО УЧЕТА РБ ( с ДМ )’
.var
ItogoSummaNDE : double
ItogoSummaVal : double
NRec : comp
sch_2, x_2:integer; //для вывода на печать
N_ckdr : comp;
N_kol : double;
T_Spec : longint; // Таблица реализации
NT_ckdr : word;
NT_kol : word;
Au: double // золото
Ag: double //серебро
Pt: double // платина
Ptgr: double //платиновая группа
Pd: double // палладий
.endvar
.begin
NRec := TOVAR_NRec
End.
.CREATE VIEW vDrag
As select
Katdrag.nrec, naldrag.kol, naldrag.*
FROM katmc, naldrag, katdrag
where
((comp(Tovar_nrec) == Katmc.nrec
and 3 == naldrag.tidk
and katmc.nrec==naldrag.ckatos
and naldrag.ckatdrag==katdrag.nrec
));
.fields
TOVAR_BarKod
sGetTune(’MyOrg’)
V2
V3
TOVAR_NAME
TOVAR_BarKod
TOVAR_Ed_Izm
.endfields
Утверждено учётной политикой ОАО “Керамин”
Код ТМЦ ^
^
наименование организации
^
наименование структурного подразделения
^
материально-ответственное лицо
КАРТОЧКА СКЛАДСКОГО УЧЕТА
Наименование материала: ^ , ^
Единица измерения: ^
Марка, сорт, профиль, размер и т.д.:
.var
prih: double
rash: double
itog: double
n: integer
itogIN: double
ItogOUT: double
.endvar
.fields
DoubleToStr(kol, KolForm) // входящий остаток
DoubleToStr(srPrice, PriceR)
n
field2 // дата
field5 //номер наклад
field1 // номер ордера
field6 field6_MOL// поставщик получат
DoubleToStr(prih, KolForm)
DoubleToStr (rash, KolForm)
DoubleToStr (itog, KolForm)
DoubleToStr(field11, PriceR)
field_m12
.endfields
.begin
Itog:= double(kol);
End.
№ Дата
записи Номер накладной Номер
ордера Место хранения От кого получено
или кому отпущено Приход Расход Остаток Цена Норма запаса
стеллаж ячейка
1 2 3 4 5 6 7 8 9 10 11 12
Входящий остаток ^ ^
.{
.begin
case field3 of
’Приход’:
{
prih := field10;
rash := 0;
itog := itog + prih;
itogIN := itogIN + prih;
}
’Расход’:
{
rash := field10;
prih := 0;
itog := itog - rash;
itogOUT := itogOUT + rash;
}
end;
n:=n+1
end.
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.}
.fields
DoubleToStr(itogIN, KolForm) // итого приход
DoubleToStr(itogOUT, KolForm) // итого расход
DoubleToStr(kolIsh, KolForm) // исходящий остаток
DoubleToStr(SrPriceIsh, PriceR)
.endfields
Итого обороты ^ ^
Исходящий остаток ^ ^
.begin
!Au := 0 ; // золото
!Ag := 0; //серебро
!Pt := 0; // платина
!Ptgr := 0; //платиновая группа
!Pd := 0; // палладий
T_Spec := TblInitNew(1,1); // создаем таблицу драг. металлов
NT_ckdr := TblNewField(T_Spec,12);
TblEndKey(T_Spec); // строим индекс
NT_Kol := TblNewField(T_Spec,12);
end.
Содержание драгоценных металлов
Наименование Масса, г.
.{ table ‘Vdrag’
.begin
!Vdrag._loop katmc
!{
!function TblGetFirst (LongInt) : boolean; external 'G_Common.dll';
TblSfString(T_Spec, NT_ckdr, vdrag.naldrag.ckatdrag);
if(TblGetEqual(T_Spec)) // Запись есть
{
TblSfDouble(T_Spec,NT_kol, TblGfDouble(T_Spec,NT_kol) + vdrag.naldrag.kol);
TblUpDateCurrent(T_Spec);
}
Else
{
TblSfDouble(T_Spec,NT_kol, vdrag.naldrag.kol);
TblInsertCurrent(T_Spec);
}
!function TblGetNext (LongInt) : boolean; external 'G_Common.dll';
!}
End.
.fields
!N_ckdr
DoubleToStr(Au, ‘\4p666 666.8888’)
DoubleToStr(Ag, ‘\4p666 666.8888’)
!DoubleToStr((If (vDrag.naldrag.ckatdrag=’0001000000000010h’, kolIsh * Double(vDrag. naldrag.Kol),0)), ‘\4p666 666.8888’)
!If (vDrag.naldrag.ckatdrag=comp(’0001000000000010h’), DoubleToStr(kolIsh * vDrag.naldrag.Kol, ‘\4p666 666.8888’),0)
DoubleToStr(Pt, ‘\4p666 666.8888’)
DoubleToStr(Ptgr, ‘\4p666 666.8888’)
DoubleToStr(Pd, ‘\4p666 666.8888’)
V3
.endfields
.begin
sch_2:= TblRecords(T_Spec)-1;
x_2:=0;
End.
.{ while (x_2<=sch_2)
.begin
N_ckdr:=TblGfString(T_Spec,NT_ckdr);
N_kol:=TblGfDouble(T_Spec,NT_kol);
Au := If (N_ckdr =comp(’000100000000000Bh’), kolIsh * N_kol,0); // золото
Ag := If (N_ckdr =comp(’0001000000000010h’), kolIsh *N_kol,0); // серебро
Pt := If (N_ckdr =comp(’0001000000000015h’), kolIsh * N_kol,0); // платина
Ptgr := If (N_ckdr =comp(’0001000000000016h’) or N_ckdr=comp(’000100000000001Fh’), Ptgr + kolIsh * N_kol,0);
Pd := If (N_ckdr =comp(’000100000000001Ah’), kolIsh * N_kol,0);
End.
.{?Internal; N_ckdr = comp(’000100000000000Bh’)
Золото ^
.}
.{?Internal; N_ckdr = comp(’0001000000000010h’)
Серебро ^
.}
.{?Internal; N_ckdr = comp(’0001000000000015h’)
Платина ^
.}
.{?Internal; N_ckdr = comp(’0001000000000016h’)
Платиновая группа ^
.}
.{?Internal; N_ckdr = comp(’000100000000001Ah’)
Палладий ^
.}
.begin
x_2:=x_2+1;
end.
.}
.}
Подпись материально-
ответственного лица
^
Фамилия И.О.
.endform