Помогите найти ошибку!
Добавлено: 21 апр 2008, 16:15
Добрый день!
Коллеги, помогите найти ошибку - запутался в трех строках. Даже не знаю как назвать тему. Вот такая процедура:
StartNewVisual(vtNumericVisual,vfBreak,'Формирование отчета ...',0);
delete all FullGSM;
_loop PUTLST
{
_loop PUTGSM
{
if(putgsm.nrec = 4612101400378724834) Message ('start');
if tsOk = GetFirst FullGSM where ((PUTLST.NPL == FullGSM.numputlst))
{
if(putgsm.nrec = 4612101400378724834) Message('Error');
}
else
{
clearBuffer(#FullGSM);
FullGSM.numputlst := PUTLST.NPL;
insert current FullGSM;
if(putgsm.nrec = 4612101400378724834) Message ('finish');
}
}
}
StopVisual('',0);
На одной записи в таблице PUTGSM программа работает не так, как мне хотелось бы. Дело в том, что запись находится, при этом не будучи добавленной ни разу! В моем случае получаю сообщение "start", а затем "Error". Может, свежим взглядом кто увидит проблему... Или скажите, из-за чего такое возможно.
Вот вьюха:
create view mainview
var
dateFrom : date;
dateTo : date;
myOrg : comp;
as select *
from PUTLST, PUTGSM, SAVE_DRV, TOPLIVO, KATPODR, SELPODR, ItogGSM, FullGSM, TRANSP
where ((1 == PUTLST.STATPL and
dateFrom <<= PUTLST.DATPL and
dateTo >>= PUTLST.DATPL and
(myOrg = PUTLST.CORGTC) and
0 == PUTGSM.TIPINFO and
PUTLST.NREC == PUTGSM.CPUTLST and
PUTGSM.CTOPLIVO == TOPLIVO.NREC and
PUTLST.CPOL == KATPODR.NREC and
PUTLST.CPOL == SELPODR.NREC and
PUTLST.CTRANSP == TRANSP.NREC and
TRANSP.CMARKA == MARKA.NREC and
TRANSP.CKATOS == KATOS.NREC and
PUTLST.NREC == SAVE_DRV.CPUTLST));
Ну и таблица:
table struct FullGSM(gosnomer :string, //Гос. номер
marka :string, //Марка автомобиля
podr :string, //Подразделение эксплуатации
toplivon :string, //Топливо
normabaz :double, //Норма базисная
invnum :string, //Инвентарный номер
numputlst :string, //Номер путевого листа
cputlst :comp, //Уникальный код путевого листа
dateputlst :date, //Дата путевого листа
speedstart :double, //Показания спидометра при выезде
probeg :double, //Пробег автомобиля за период
speedend :double, //Показания спидометра при возвращении
voditel :string, //Водитель
timeAZSbeg :time, //Время первой заправки
timeAZSend :time, //Время последней заправки
nachost :double, //Остаток топлива в баках перед заправкой
prihod :double, //Приход ГСМ (общий)
AZS1 :double, //Тип заправки 1
AZS2 :double, //Тип заправки 2
AZS3 :double, //Тип заправки 3
AZS4 :double, //Тип заправки 4
AZS5 :double, //Тип заправки 5
AZS6 :double, //Тип заправки 6
AZS7 :double, //Тип заправки 7
AZS8 :double, //Тип заправки 8
AZS9 :double, //Тип заправки 9
AZS10 :double, //Тип заправки 10
AZS11 :double, //Тип заправки 11
AZS12 :double, //Тип заправки 12
rashod :double, //Расход ГСМ
norma :double, //Нормативный расход топлива
ostatok :double, //Остаток топлива
kontragent :string) //АЗС
with index (ind1=numputlst);
Коллеги, помогите найти ошибку - запутался в трех строках. Даже не знаю как назвать тему. Вот такая процедура:
StartNewVisual(vtNumericVisual,vfBreak,'Формирование отчета ...',0);
delete all FullGSM;
_loop PUTLST
{
_loop PUTGSM
{
if(putgsm.nrec = 4612101400378724834) Message ('start');
if tsOk = GetFirst FullGSM where ((PUTLST.NPL == FullGSM.numputlst))
{
if(putgsm.nrec = 4612101400378724834) Message('Error');
}
else
{
clearBuffer(#FullGSM);
FullGSM.numputlst := PUTLST.NPL;
insert current FullGSM;
if(putgsm.nrec = 4612101400378724834) Message ('finish');
}
}
}
StopVisual('',0);
На одной записи в таблице PUTGSM программа работает не так, как мне хотелось бы. Дело в том, что запись находится, при этом не будучи добавленной ни разу! В моем случае получаю сообщение "start", а затем "Error". Может, свежим взглядом кто увидит проблему... Или скажите, из-за чего такое возможно.
Вот вьюха:
create view mainview
var
dateFrom : date;
dateTo : date;
myOrg : comp;
as select *
from PUTLST, PUTGSM, SAVE_DRV, TOPLIVO, KATPODR, SELPODR, ItogGSM, FullGSM, TRANSP
where ((1 == PUTLST.STATPL and
dateFrom <<= PUTLST.DATPL and
dateTo >>= PUTLST.DATPL and
(myOrg = PUTLST.CORGTC) and
0 == PUTGSM.TIPINFO and
PUTLST.NREC == PUTGSM.CPUTLST and
PUTGSM.CTOPLIVO == TOPLIVO.NREC and
PUTLST.CPOL == KATPODR.NREC and
PUTLST.CPOL == SELPODR.NREC and
PUTLST.CTRANSP == TRANSP.NREC and
TRANSP.CMARKA == MARKA.NREC and
TRANSP.CKATOS == KATOS.NREC and
PUTLST.NREC == SAVE_DRV.CPUTLST));
Ну и таблица:
table struct FullGSM(gosnomer :string, //Гос. номер
marka :string, //Марка автомобиля
podr :string, //Подразделение эксплуатации
toplivon :string, //Топливо
normabaz :double, //Норма базисная
invnum :string, //Инвентарный номер
numputlst :string, //Номер путевого листа
cputlst :comp, //Уникальный код путевого листа
dateputlst :date, //Дата путевого листа
speedstart :double, //Показания спидометра при выезде
probeg :double, //Пробег автомобиля за период
speedend :double, //Показания спидометра при возвращении
voditel :string, //Водитель
timeAZSbeg :time, //Время первой заправки
timeAZSend :time, //Время последней заправки
nachost :double, //Остаток топлива в баках перед заправкой
prihod :double, //Приход ГСМ (общий)
AZS1 :double, //Тип заправки 1
AZS2 :double, //Тип заправки 2
AZS3 :double, //Тип заправки 3
AZS4 :double, //Тип заправки 4
AZS5 :double, //Тип заправки 5
AZS6 :double, //Тип заправки 6
AZS7 :double, //Тип заправки 7
AZS8 :double, //Тип заправки 8
AZS9 :double, //Тип заправки 9
AZS10 :double, //Тип заправки 10
AZS11 :double, //Тип заправки 11
AZS12 :double, //Тип заправки 12
rashod :double, //Расход ГСМ
norma :double, //Нормативный расход топлива
ostatok :double, //Остаток топлива
kontragent :string) //АЗС
with index (ind1=numputlst);