sGetTune('Boss')
Модераторы: m0p3e, edward_K, Модераторы
sGetTune('Boss')
Вот какой странный глюк вылезает -
в моём отчёте по платежам пользователь может выбирать контрагента и расчётный счёт, для чего есть таблицы
table struct schet
(
pik: string,
name: string,
schet1: string
);
table struct kontr
(
pik: string,
inn: string,
name: string,
d_name: string
)
with index (ind = name);
Заканчивается отчёт фамилией директора sGetTune('Boss').
Так вот если пользователь выбрал контрагента или расчётный счёт, то всё нормально, а если не выбрал (т.е. отчёт формируется по всем), то вылазит ошибка - нет настройки Boss.
Почему так? И что делать???
в моём отчёте по платежам пользователь может выбирать контрагента и расчётный счёт, для чего есть таблицы
table struct schet
(
pik: string,
name: string,
schet1: string
);
table struct kontr
(
pik: string,
inn: string,
name: string,
d_name: string
)
with index (ind = name);
Заканчивается отчёт фамилией директора sGetTune('Boss').
Так вот если пользователь выбрал контрагента или расчётный счёт, то всё нормально, а если не выбрал (т.е. отчёт формируется по всем), то вылазит ошибка - нет настройки Boss.
Почему так? И что делать???
Re: sGetTune('Boss')
Такая же фигня. Сначала пишет, что нет настройки MYORG, потом - нет настройки Boss.
Re: sGetTune('Boss')
Понятно, что такого не должно быть, но приведенных данных слишком мало для диагноза. Покажите исходник, что ли... Если он большой, то хотя бы наиболее значимые части (типа обращений к таблицам).
Re: sGetTune('Boss')
Код: Выделить всё
cmDoMarkUnMark:
{
if (curTable = #tabl_schet)
{
if tabl_schet.pik = 'V'
then tabl_schet.pik := '-'
else tabl_schet.pik := 'V';
update current tabl_schet;
ReReadRecord;
}
else
{
if tabl_kontr.pik = 'V'
then tabl_kontr.pik := '-'
else tabl_kontr.pik := 'V';
update current tabl_kontr;
ReReadRecord;
}
}
cmOK:
{
stmt := sqlAllocStmt;
sqlBindCol(stmt, 1, kol1);
sqlBindCol(stmt, 2, kol2);
sqlBindCol(stmt, 3, kol3);
sqlBindCol(stmt, 4, kol4);
sqlBindCol(stmt, 5, kol5);
sqlBindCol(stmt, 6, kol6);
sqlBindParam(stmt, 1, d_n);
sqlBindParam(stmt, 2, d_k);
sqlAddStr(query,'select distinct a.nodok,a.datvip,a.name,a.namepl1,a.sumplat,a.co,a.name1,a.schet1 from (');
sqlAddStr(query,'select distinct plpor.nrec,plpor.nodok,plpor.datvip,katorg.name name,plpor.namepl1,plpor.sumplat,katbank.name name1,katbank.schet1, ');
sqlAddStr(query,'fpco.name co from plpor ');
sqlAddStr(query,'inner join katorg on plpor.cpol=katorg.nrec ');
sqlAddStr(query,'inner join katbank on plpor.cbankplat=katbank.nrec ');
sqlAddStr(query,'left join fpco on plpor.cwaymove=fpco.nrec ');
sqlAddStr(query,'where plpor.tidkgal=1 ');
sqlAddStr(query,'and (plpor.datvip between ? and ?) ');
// если по выбранным счетам
str_bank:='';
vib_bank:=false;
PushPos(#tabl_schet);
_loop tabl_schet
{
if tabl_schet.pik = 'V'
then begin
if vib_bank=false then sqlAddStr(query,'and (') else sqlAddStr(query,' or ');
sqlAddStr(query,'((katbank.name='#39+tabl_schet.name+''#39+') and (katbank.schet1='#39+tabl_schet.schet1+''#39+'))');
vib_bank:=true;
str_bank:=str_bank+'Р/c № '+tabl_schet.schet1+' в '+tabl_schet.name+', ';
end;
}
if vib_bank=true then sqlAddStr(query,') ');
PopPos(#tabl_schet);
//
// если по выбранным контрагентам
vib_org:=false;
PushPos(#tabl_kontr);
_loop tabl_kontr
{
if tabl_kontr.pik = 'V'
then begin
if vib_org=false then sqlAddStr(query,'and (') else sqlAddStr(query,' or ');
sqlAddStr(query,'(katorg.shortname='#39+tabl_kontr.name+''#39+')');
vib_org:=true;
end;
}
if vib_org=true then sqlAddStr(query,') ');
PopPos(#tabl_kontr);
//
sqlAddStr(query,') a left join nalogfin on a.nrec=nalogfin.csoprdoc ');
sqlAddStr(query,'order by a.name,a.schet1,a.datvip,a.nodok');
k_osh:=sqlPrepare(stmt,query);
if k_osh>0 then message('sqlPrepare. Ошибка '+k_osh);
k_osh:=sqlExecute(stmt);
if k_osh>0 then message('sqlExecute. Ошибка '+k_osh);
if k_osh=0 {
xlCreateExcelWithTemplate(TranslatePath('%StartPath%')+'RESRAB\Платёжные документы\Платёжки.xlsx', true);
xlSetActiveWorkBookByName('1');
xlSetActiveSheetByName('Лист 1');
xlSetCellStringValue(sGetTune('Boss'), 2, 5, 2, 5);
i:=10;
sum_sum:=0;
while sqlFetch(stmt) = tsOk do
{
++i;
xlSetCellStringValue(i-10, i+3, 1, i+3, 1);
xlSetCellStringValue('Плат.пор. №'+kol1+' от '+DateToStr(kol2, 'DD.MM.YYYY'), i+3, 2, i+3, 2);
xlSetCellStringValue(kol3, i+3, 3, i+3, 3);
xlSetCellStringValue(kol4, i+3, 4, i+3, 4);
xlSetCellStringValue(kol5, i+3, 5, i+3, 5);
xlSetCellStringValue(kol6, i+3, 6, i+3, 6);
sum_sum:=sum_sum+kol5;
}
xlSetCellStringValue('Итого по документам:', i+4, 4, i+4, 4);
xlSetCellStringValue(sum_sum, i+4, 5, i+4, 5);
xlFrameCells(59, 2,1,1, 14, 1, i+3, 7);
sqlFreeStmt(stmt);
sqlFreeStr(query);
xlKillExcel; }
}
end;
Re: sGetTune('Boss')
В той части, которая показана, криминала не увидел. Видимо, здесь разработчики должны причину искать, она не в випе зарыта, а в бинарниках.
А поправить, в принципе, легко, если всё остальное в норме (т. е. SELECT правильный результат возвращает): в самом начале прочитать ФИО директора и сохранить в переменную, а потом готовое значение использовать.
А поправить, в принципе, легко, если всё остальное в норме (т. е. SELECT правильный результат возвращает): в самом начале прочитать ФИО директора и сохранить в переменную, а потом готовое значение использовать.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: sGetTune('Boss')
когда исчерпаете все варианты попробуйте в начале и после k_osh:=sqlExecute(stmt);
в cmOk добавить
stmt:=0;
query:=0;
Вообще после использование запросов их указатели(забыл как красиво называется) нужно освобождать.
Да и лучше обработку вынесите в функцию. Похоже вы тупо сломали галактику . Точнее из за того что в памяти оказался большой кусок где то чего то накрылось.
в cmOk добавить
stmt:=0;
query:=0;
Вообще после использование запросов их указатели(забыл как красиво называется) нужно освобождать.
Да и лучше обработку вынесите в функцию. Похоже вы тупо сломали галактику . Точнее из за того что в памяти оказался большой кусок где то чего то накрылось.