ClearBuffer

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

vip.prj
#include table.vip
#make "D:\Form\Re.slk"

table.vip

table struct tab25
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodprr:string,
kau3: comp,
kauks4: comp,
kauos4: comp,
txo: string
) with index (i0=ckau);

table struct tab26
( ckau: comp,
sumob: double,
datob: date,
scheto:string,
subossch:string,
schetk:string,
subschk:string,
sodpr:string,
sodprr:string,
da: date,
kau3: comp,
kauks4: comp,
kauos4: comp
) with index (i02=da);

Re.slk

.Form 'Регистр учета расходов связанных с производством НУ нал'
.group 'СВЕРКА СУММ БУ_НУ'
.ard
.var//
...............
...............
dfor1, dfor2, d1, d2: date;//
.endvar
.begin//
RunDialog('C_COMMON::GetInterval', dfor1, dfor2);//
end. //
.Create View v //
from //
tab25(memory), tab26(memory);//
.Create View v1 //
as select //
oborot.scheto,
oborot.subossch,
oborot.schetk,
oborot.subschk,
oborot.datob,
oborot.sumob,
oborot.kauks[1],
hozoper.code,
spkau.nrec,
stzatr.nrec
from oborot, spkau
where ((
oborot.chozoper==hozoper.nrec
and dfor1<<=oborot.datob
and dfor2>>=oborot.datob
and (substr(oborot.sodpr,1,2)<>'ИП') // не ИП
and oborot.kauos[1]/==spkau.nrec
and if (oborot.scheto='891Н',kauos[3],0)==stzatr.nrec
))
and (oborot.scheto='820Н' OR oborot.scheto='823Н' OR oborot.scheto='825Н' OR oborot.scheto='826Н' or oborot.scheto='891Н')
;
.Create View v2 //
as select //
oborot.scheto,
oborot.subossch,
oborot.schetk,
oborot.subschk,
oborot.datob,
oborot.sumob,
oborot.kauks[1],
oborot.sodpr,
hozoper.code,
spkau.nrec
from oborot, spkau, tab26
where
((
oborot.chozoper==hozoper.nrec
and oborot.kauos[1]/==spkau.nrec))
and substr(oborot.sodpr,1,2)='ИП' // ИП
and oborot.datob>=dfor1
and (oborot.scheto='820Н' OR oborot.scheto='823Н' OR oborot.scheto='825Н' OR oborot.scheto='826Н')
and (spkau.cnode=281474976713775 or spkau.cnode=281474976713781 or spkau.cnode=281474976713784 or spkau.cnode=281474976713787 or spkau.nrec=281474976716179)
;
.Create View m //
As Select//
tab25.scheto,
tab25.subossch,
tab25.schetk,
tab25.subschk,
tab25.sumob,
tab25.sodprr,
tab25.txo,
spkau.code,
spkau.name,
spkau.nrec,
spkau.kodgrkau
from tab25, spkau
where ((
10013<<=spkau.kodgrkau
and 10036>>=spkau.kodgrkau
and spkau.nrec/==tab25.ckau
and tab25.kauos4==stzatr.nrec
))
order by spkau.kodgrkau,spkau.code, stzatr.kod
;
.begin
if v1.getfirst oborot = tsok
v1._loop oborot
{
insert tab25 set //
sumob = v1.oborot.sumob, //
ckau = v1.spkau.nrec, //
datob = v1.oborot.datob, //
scheto = v1.oborot.scheto,//
subossch = v1.oborot.subossch,//
schetk = v1.oborot.schetk,//
subschk = v1.oborot.subschk,
kau3 = v1.oborot.kauks[1],
kauos4=v1.stzatr.nrec,
txo = v1.hozoper.code;
} //
end.
.begin
if v2.getfirst oborot = tsok
v2._loop oborot
{
ClearBuffer(tntab26);
tab26.sumob: = v2.oborot.sumob;
tab26.ckau: = v2.spkau.nrec;
tab26.datob: = v2.oborot.datob;
tab26.scheto: = v2.oborot.scheto;
tab26.subossch: = v2.oborot.subossch;
tab26.schetk := v2.oborot.schetk;
tab26.subschk: = v2.oborot.subschk;
tab26.sodpr: = v2.oborot.sodpr;
tab26.kau3: = v2.oborot.kauks[1];
if v2.getfirst hozoper = tsok
tab26.dop = v2.hozoper.code;
insert current tab26;
}
end.
.begin
{
update tab26
set da = date(day(dfor1),(substr(sodpr,8,2)),substr(sodpr,3,4)),
sodprr = substr(sodpr,1,2);
} //
end.
.begin
if getfirst tab26 = tsok message('Есть данные в таблице tab26')
{
insert tab25 (sumob,ckau,datob,scheto,subossch,schetk,subschk,sodprr,kau3)
select tab26.sumob, tab26.ckau, tab26.datob, tab26.scheto, tab26.subossch, tab26.schetk, tab26.subschk, tab26.sodprr, tab26.kau3 from tab26
where (( dfor1 == tab26.da))
;
}
end.

Проблема была в том что я хотела добавить ещё одно поле в tab26.
Компиляция проходила нормально, при формировании отчета выдает ошибку "попытка обращения к некорректному дискриптору".
Пробовали обойти проблему таким образом
.begin
if v2.getfirst oborot = tsok
v2._loop oborot
{
ClearBuffer(tntab26);
tab26.sumob: = v2.oborot.sumob;
tab26.ckau: = v2.spkau.nrec;
tab26.datob: = v2.oborot.datob;
tab26.scheto: = v2.oborot.scheto;
tab26.subossch: = v2.oborot.subossch;
tab26.schetk := v2.oborot.schetk;
tab26.subschk: = v2.oborot.subschk;
tab26.sodpr: = v2.oborot.sodpr;
tab26.kau3: = v2.oborot.kauks[1];
if v2.getfirst hozoper = tsok
tab26.dop = v2.hozoper.code;
insert current tab26;
}
end.
Но теперь ругается на ClearBuffer(tntab26) - "нет такой функции поля или метода ClearBuffer(tntab26)"
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

ClearBuffer(V2.tntab26);
V2.tab26.sumob:= v2.oborot.sumob;
V2.tab26.ckau:= v2.spkau.nrec;
V2.tab26.datob:= v2.oborot.datob;
V2.tab26.scheto:= v2.oborot.scheto;
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Сделала
.begin
if v2.getfirst oborot = tsok
v2._loop oborot
{
ClearBuffer(v2.tntab26);
v2.tab26.sumob:=v2.oborot.sumob;
v2.tab26.ckau:=v2.spkau.nrec;
v2.tab26.datob:= v2.oborot.datob;
v2.tab26.scheto:= v2.oborot.scheto;
v2.tab26.subossch:= v2.oborot.subossch;
v2.tab26.schetk:= v2.oborot.schetk;
v2.tab26.subschk:= v2.oborot.subschk;
v2.tab26.sodpr:= v2.oborot.sodpr;
v2.tab26.kau3:= v2.oborot.kauks[1];
if v2.getfirst hozoper = tsok
tab26.dop = v2.hozoper.code;
insert current tab26;
}
end.
Отчет компилируется нормально.
При формировании отчета выскакивает ошибка 216 (rtl: попытка обращения к некорректному дискриптору).
Причем эта ошибка возникает если я добавляю поле в tab26.
(если убрать поле dop из tab26 то все нормально работает)
В чем может быть причина?
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

а если размерность уменьшить .
не string, a string[20]
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

и
tab26.dop = v2.hozoper.code;
insert current tab26;
переписать как
v2.tab26.dop = v2.hozoper.code;
v2.insert current tab26;
Ged
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение Ged »

Ага, и еще v2.tab26.dop := v2.hozoper.code;
Gameus_
Местный житель
Сообщения: 209
Зарегистрирован: 18 окт 2006, 17:03
Откуда: Ростов на Дону Новочеркасск Новороссийск
Контактная информация:

Сообщение Gameus_ »

такая ошибка еще может быть если вы в разных отчетах используете таблицы с одинаковым именем но разной структурой (те, которые у вас в table.vip)
Ответить