Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];
ВнизВесь в непонятках. Хранимая процедура(+) Найти похожие ветки
← →
AlexSerp (2004-05-19 12:09) [0]имеет 71 возвращаемое поле.
Работает на отчет (по авансовым отчетам).
Попросили добавить пару полей.
Добавил. Один сотрудник из отчета пропал.
Убрал те два поля, все появилось.
Никакой логики никак не могу увидеть.
Это глюк или ограичение ИБ6?
Что-то я нигде таких ограничений не видел.
Или плохо смотрел?
← →
Соловьев © (2004-05-19 12:12) [1]ошибка в 301 строке ХП - известный глюк ИБ
← →
Курдль © (2004-05-19 12:17) [2]
> Один сотрудник из отчета пропал.
Ну хоть в мире живых остался? :(
← →
Vlad © (2004-05-19 12:21) [3]В IB количество полей ограничивается размером записи - 64К, сюда не входят блобы
← →
Курдль © (2004-05-19 12:56) [4]
> Vlad © (19.05.04 12:21) [3]
> В IB количество полей ограничивается размером записи - 64К,
> сюда не входят блобы
Представьте себе 64К - это ж скока текста!
← →
Digitman © (2004-05-19 12:58) [5]
> имеет 71 возвращаемое поле
это же ужас какой-то ! куда ж ты их столько настрогал ?)
что-то, думаю, изначально неверно в логике таких "монстрообразных" запросов ...
← →
Val © (2004-05-19 13:13) [6]сотрудники могут пропадать из-за неверных внешних объединений :)
← →
AlexSerp (2004-05-19 13:24) [7]Digitman >это же ужас какой-то ! куда ж ты их столько настрогал ?)
Я всего лишь админ. Проги/отчеты и все такое написано не мной.
Я на развитии и устранении багов.
Вообще-то и побольше процедуры встречаются.
Так что вопрос не в этом.
Ладно бы вообще результата не было.
А то ведь строка из отчета.
Причем, если каждый запрос в процедуре запускать по этому сотруднику, то вся инфа на месте. А возврат из процедуры без него.
← →
AlexSerp (2004-05-19 13:28) [8]Соловьев, а есть решение против известного глюка?
Извини, я пока не нашел в инете.
← →
Соловьев © (2004-05-19 13:31) [9]
> [8] AlexSerp (19.05.04 13:28)
:)
это я шутил
ты вопрос такой задал - что только телепаты догажаются...
приведи код ХП, и вообще-то уже пора давно перейти на FireBird 1.5
← →
Andriano (2004-05-19 13:32) [10]Ну а что по поводу "неверных внешних объединений" - проверил?
Давно бы запрос показал.
И вообще, ну не может быть в отчете по авансовым платежам 71 поле.
← →
AlexSerp (2004-05-19 13:37) [11]Andriano, я уже все объединения проверил.
Текст процедуры выложить не могу - ограничение на длинну сообщения в форуме.
По поводу объединений - без двух доп.полей работает.
Значит дело все-таки не в объединениях.
← →
Соловьев © (2004-05-19 13:44) [12]
> [11] AlexSerp (19.05.04 13:37)
можно же и частями опубликовать...
← →
AlexSerp (2004-05-19 13:47) [13]ОК
CREATE PROCEDURE GURNAL_SCHET_71S (
SM_5002D DOUBLE PRECISION,
DATA_N DATE,
DATA_K DATE,
SH VARCHAR (15),
MES INTEGER,
GOD INTEGER)
RETURNS (
NSTR INTEGER,
FIO VARCHAR (30),
SM_DBN DOUBLE PRECISION,
SM_KRN DOUBLE PRECISION,
SM DOUBLE PRECISION,
SM_7102 DOUBLE PRECISION,
SM_7102D DOUBLE PRECISION,
SM_910421D DOUBLE PRECISION,
SM_51 DOUBLE PRECISION,
SM_5101 DOUBLE PRECISION,
SM_5102 DOUBLE PRECISION,
SM_5103 DOUBLE PRECISION,
SM_5104 DOUBLE PRECISION,
SM_5105 DOUBLE PRECISION,
SM_5106 DOUBLE PRECISION,
SM_5107 DOUBLE PRECISION,
SM_5108 DOUBLE PRECISION,
SM_5001K DOUBLE PRECISION,
SM_5004 DOUBLE PRECISION,
SM_7902 DOUBLE PRECISION,
SM_7902K DOUBLE PRECISION,
DATA DATE,
SM_50K DOUBLE PRECISION,
SM_50D DOUBLE PRECISION,
SM_5001D DOUBLE PRECISION,
SM_4402 DOUBLE PRECISION,
SM_260022124 DOUBLE PRECISION,
SM_230000012 DOUBLE PRECISION,
SM_260011310 DOUBLE PRECISION,
SM_260033365 DOUBLE PRECISION,
SM_6021 DOUBLE PRECISION,
SM_6021KOM DOUBLE PRECISION,
SM_19042 DOUBLE PRECISION,
SM_8402 DOUBLE PRECISION,
SM_9104 DOUBLE PRECISION,
SM_7302 DOUBLE PRECISION,
SM_7307 DOUBLE PRECISION,
SM_0804 DOUBLE PRECISION,
SM_1001111 DOUBLE PRECISION,
SM_1003000 DOUBLE PRECISION,
SM_1003100 DOUBLE PRECISION,
SM_1003200 DOUBLE PRECISION,
SM_1005000 DOUBLE PRECISION,
SM_1006 DOUBLE PRECISION,
SM_1009000 DOUBLE PRECISION,
SM_230078027 DOUBLE PRECISION,
SM_260022128 DOUBLE PRECISION,
SM_260022130 DOUBLE PRECISION,
SM_4401 DOUBLE PRECISION,
SM_4403 DOUBLE PRECISION,
SM_910494 DOUBLE PRECISION,
SM_9703 DOUBLE PRECISION,
SM_8401 DOUBLE PRECISION,
SM_1002200 DOUBLE PRECISION,
SM_1008 DOUBLE PRECISION,
SM_910451 DOUBLE PRECISION,
SM_230071027 DOUBLE PRECISION,
SM_ITOGO DOUBLE PRECISION,
NOM_AVOT VARCHAR (150),
SM_DB_KR DOUBLE PRECISION,
SM_DBK DOUBLE PRECISION,
SM_KRK DOUBLE PRECISION,
DAN DATE,
DAK DATE,
N_SOTR INTEGER,
SM_SH DOUBLE PRECISION,
SH1 VARCHAR (15),
SH2 VARCHAR (15),
SM_DB1 DOUBLE PRECISION,
SM_KR1 DOUBLE PRECISION,
N_BUX INTEGER,
NS INTEGER)
AS
← →
AlexSerp (2004-05-19 13:48) [14]declare variable SALDO_AV DOUBLE PRECISION;
declare variable SALDO_W1 DOUBLE PRECISION;
declare variable SALDO_KO DOUBLE PRECISION;
declare variable SALDO_W DOUBLE PRECISION;
declare variable SALDO_N DOUBLE PRECISION;
declare variable SALDO_76 DOUBLE PRECISION;
/*declare variable SM_DB1 DOUBLE PRECISION;*/
/*declare variable SM_KR1 DOUBLE PRECISION;*/
/*declare variable SM_SH DOUBLE PRECISION;*/
declare variable NN INTEGER;
declare variable DN INTEGER;
declare variable STR VARCHAR(10);
declare variable DATA_W DATE;
/*declare variable SH1 VARCHAR (15);*/
BEGIN
DAN=DATA_N; DAK=DATA_K;
NOM_AVOT=""; NN=0; NSTR=0;SM_KR1=0;SM_DB1=0;
SM_DB_KR=0;
for
Select A.A1,min(B.NAME) from BUX_SALDO A
left join SOTRUD B on (A.A1=B.N)
where A.DB like "710%"
and A.GOD=:GOD
and A.mes=:mes
group by A.A1
union
Select A.KLIENT_N,min(B.NAME) from BUX_OBOROT A
left join SOTRUD B on (A.KLIENT_N=B.N)
where A.modul in (5,51)
/*and A.GOD=:GOD*/
and a.data between :data_n and :data_k
group by A.KLIENT_N
into :N_SOTR,:FIO
do begin
SM_DBN=Null; SM_KRN=Null; SM=Null;
if (N_SOTR is Null) then N_SOTR=0;
if (FIO is Null) then FIO="нет";
NOM_AVOT="";
for
Select N_N from DOK_OSN_AV where ROD1=:N_SOTR
and DATA>=:DATA_N and DATA<=:DATA_K
into :NN do begin
if (NN is Null) then NN=0;
NOM_AVOT=NOM_AVOT||","||CAST(NN as varchar(10));
end
/*SALDO_N*/
Select sum(SM) from BUX_SALDO
where A1=:N_SOTR and DB like "7101%"
and MES=:MES and GOD=:GOD
into :SM;
if (SM is Null) then SM=0;
if (SM=0) then begin
SM_DBN=Null; SM_KRN=Null; SM=Null;
end
if (SM<0) then begin
SM_KRN=-SM; SM_DBN=Null;
end
if (SM>0) then begin
SM_DBN=SM; SM_KRN=Null;
end
/*SM DEBET*/
SM_SH=0;
SM_7102=0;
SM_7102D=0;
SM_5002D=0;
SM_910421D=0;
SM_51=0; SM_50K=0;
SM_5101=0;
SM_5102=0;
SM_5103=0;
SM_5104=0;
SM_5105=0;
SM_5106=0;
SM_5107=0;
SM_5108=0;
SM_5001K=0;
SM_5004=0;
SM_7902=0;
/*SM KREDIT*/
SM_SH=0;SM_50D=0;SM_4402=0;SM_260022124=0;SM_230000012=0;
SM_260011310=0;SM_260033365=0;SM_6021=0;SM_6021KOM=0;
SM_19042=0;SM_8402=0;SM_9104=0;SM_7302=0;
SM_5001D=0;
SM_0804=0;
SM_1001111=0;
SM_1003000=0;
SM_1003100=0;
SM_1003200=0;
SM_1005000=0;
SM_1006=0;
SM_1009000=0;
SM_230078027=0;
← →
AlexSerp (2004-05-19 13:48) [15]SM_260022128=0;
SM_260022130=0;
SM_4401=0;
SM_4403=0;
SM_910494=0;
SM_9703=0;
SM_8401=0;
SM_7902K=0;
SM_1002200=0;
SM_1008=0;
SM_910451=0;
SM_230071027=0;
for
Select SM,DB,KR,N from BUX_OBOROT
where
(KLIENT_N=:N_SOTR and DATA>=:DATA_N and DATA<=:DATA_K
and MODUL in (5,51))
or
(N_SOTRUD>0 and N_SOTRUD=:N_SOTR and DATA>=:DATA_N and DATA<=:DATA_K
and MODUL=3)
order by DB,KR
into :SM_SH,:SH2,:SH1,:N_BUX do begin
if (SM_SH is Null) then SM_SH=0;
if (SH1 is Null) then SH1="";
if (SH2 is Null) then SH2="";
/*DEBET*/
if (SH2 like "7101%") then begin
if (SH1 like "7102%") then SM_7102=SM_7102+SM_SH;
if (SH1 like "51%") then SM_51=SM_51+SM_SH;
if (SH1 like "50%") then SM_50K=SM_50K+SM_SH;
/*if (SH1 like "5101%") then SM_5101=SM_5101+SM_SH;*/
/*if (SH1 like "5102%") then SM_5102=SM_5102+SM_SH;
/*if (SH1 like "5103%") then SM_5103=SM_5103+SM_SH;
/*if (SH1 like "5104%") then SM_5104=SM_5104+SM_SH;
/*if (SH1 like "5105%") then SM_5105=SM_5105+SM_SH;
/*if (SH1 like "5106%") then SM_5106=SM_5106+SM_SH;
/*if (SH1 like "5107%") then SM_5107=SM_5107+SM_SH;
/*if (SH1 like "5108%") then SM_5108=SM_5108+SM_SH;*/
if (SH1 like "5004%") then SM_5004=SM_5004+SM_SH;
if (SH1 like "5001%") then SM_5001K=SM_5001K+SM_SH;
if (SH1 like "7902%") then SM_7902=SM_7902+SM_SH;
end
/*KREDIT*/
if (SH1 like "7101%") then begin
if (SH2 like "7102%") then SM_7102D=SM_7102D+SM_SH;
if (SH2 like "5002%") then SM_5002D=SM_5002D+SM_SH;
if (SH2 like "910421%") then SM_910421D=SM_910421D+SM_SH;
if (SH2 like "50%") then SM_50D=SM_50D+SM_SH;
if (SH2 like "5001%") then SM_5001D=SM_5001D+SM_SH;
if (SH2 like "4402%") then SM_4402=SM_4402+SM_SH;
if (SH2 like "260022124%") then SM_260022124=SM_260022124+SM_SH;
if (SH2 like "230000012%") then SM_230000012=SM_230000012+SM_SH;
if (SH2 like "260011310%") then SM_260011310=SM_260011310+SM_SH;
if (SH2 like "260033365%") then SM_260033365=SM_260033365+SM_SH;
/*if (SH2 like "6021%") then SM_6021=SM_6021+SM_SH;
if (SH2 like "6021kom%") then SM_6021KOM=0;*/
if (SH2 like "19042%") then SM_19042=SM_19042+SM_SH;
if (SH2 like "8402%") then SM_8402=SM_8402+SM_SH;
/*if (SH2 like "9104%") then SM_9104=SM_9104+SM_SH;*/
if (SH2 like "7302%") then SM_7302=SM_7302+SM_SH;
if (SH2 like "0804%") then SM_0804=SM_0804+SM_SH;
if (SH2 like "1001111%") then SM_1001111=SM_1001111+SM_SH;
if (SH2 like "1003000%") then SM_1003000=SM_1003000+SM_SH;
if (SH2 like "1003100%") then SM_1003100=SM_1003100+SM_SH;
if (SH2 like "1003200%") then SM_1003200=SM_1003200+SM_SH;
if (SH2 like "1005000%") then SM_1005000=SM_1005000+SM_SH;
if (SH2 like "1006%") then SM_1006=SM_1006+SM_SH;
if (SH2 like "1009000%") then SM_1009000=SM_1009000+SM_SH;
if (SH2 like "230078027%") then SM_230078027=SM_230078027+SM_SH;
if (SH2 like "260022128%") then SM_260022128=SM_260022128+SM_SH;
if (SH2 like "260022130%") then SM_260022130=SM_260022130+SM_SH;
if (SH2 like "4401%") then SM_4401=SM_4401+SM_SH;
if (SH2 like "4403%") then SM_4403=SM_4403+SM_SH;
if (SH2 like "910494%") then SM_910494=SM_910494+SM_SH;
if (SH2 like "9703%") then SM_9703=SM_9703+SM_SH;
if (SH2 like "8401%") then SM_8401=SM_8401+SM_SH;
if (SH2 like "7902%") then SM_7902K=SM_7902K+SM_SH;
if (SH2 like "1002200%") then SM_1002200=SM_1002200+SM_SH;
if (SH2 like "1008%") then SM_1008=SM_1008+SM_SH;
if (SH2 like "910451%") then SM_910451=SM_910451+SM_SH;
if (SH2 like "230071027%") then SM_230071027=SM_230071027+SM_SH;
end
end
SM_DB1=SM_7102+SM_50K+SM_5101+SM_5102+SM_5103+SM_5104+SM_5105
+SM_5106+SM_5107+SM_5108+SM_7902;
NS=0;
if (SM_7102=0) then begin SM_7102=Null; NS=NS+1; end
if (SM_51=0) then begin SM_51=Null; NS=NS+1; end
if (SM_50K=0) then begin SM_50K=Null; NS=NS+1; end
if (SM_5101=0) then begin SM_5101=Null; NS=NS+1; end
if (SM_5102=0) then begin SM_5102=Null; NS=NS+1; end
if (SM_5103=0) then begin SM_5103=Null; NS=NS+1; end
if (SM_5104=0) then begin SM_5104=Null; NS=NS+1; end
← →
AlexSerp (2004-05-19 13:48) [16]if (SM_5105=0) then begin SM_5105=Null; NS=NS+1; end
if (SM_5106=0) then begin SM_5106=Null; NS=NS+1; end
if (SM_5107=0) then begin SM_5107=Null; NS=NS+1; end
if (SM_5108=0) then begin SM_5108=Null; NS=NS+1; end
if (SM_5001K=0) then begin SM_5001K=Null; NS=NS+1; end
if (SM_7902=0) then begin SM_7902=Null; NS=NS+1; end
SM_KR1=SM_7102D+SM_5002D+SM_910421D+SM_50D+SM_4402+SM_260022124+SM_230000012+
SM_260011310+SM_260033365+SM_6021+SM_19042+SM_8402+
SM_9104+SM_7302
+SM_0804+SM_1001111+SM_1003000+SM_1003100+SM_1003200+
SM_1005000+SM_1006+SM_1009000+SM_230078027+SM_260022128+
SM_260022130+SM_4401+SM_4403+SM_910494+SM_9703+SM_8401+SM_7902K+SM_1002200+
SM_1008+SM_910451+SM_230071027;
SM_ITOGO=SM_KR1;
if (SM_ITOGO=0) then SM_ITOGO=Null;
if (SM is Null) then SM=0;
SM_DB_KR=SM+(SM_DB1-SM_KR1);
if (SM=0) then SM=Null;
if (SM_DB_KR>0) then begin SM_DBK=SM_DB_KR;SM_KRK=Null; end
if (SM_DB_KR<0) then begin SM_KRK=-SM_DB_KR;SM_DBK=Null;end
if (SM_DB_KR=0) then begin SM_KRK=Null;SM_DBK=Null; SM_DB_KR=Null; end
if (SM_7102D=0) then begin SM_7102D=Null; NS=NS+1; end
if (SM_5002D=0) then begin SM_5002D=Null; NS=NS+1; end
if (SM_910421D=0) then begin SM_910421D=Null; NS=NS+1; end
if (SM_50D=0) then begin SM_50D=Null; NS=NS+1; end
if (SM_4402=0) then begin SM_4402=Null; NS=NS+1; end
if (SM_260022124=0) then begin SM_260022124=Null; NS=NS+1; end
if (SM_230000012=0) then begin SM_230000012=Null; NS=NS+1; end
if (SM_260011310=0) then begin SM_260011310=Null; NS=NS+1; end
if (SM_260033365=0) then begin SM_260033365=Null; NS=NS+1; end
if (SM_6021=0) then begin SM_6021=Null; NS=NS+1; end
if (SM_6021KOM=0) then begin SM_6021KOM=Null; NS=NS+1; end
if (SM_19042=0) then begin SM_19042=Null; NS=NS+1; end
if (SM_8402=0) then begin SM_8402=Null; NS=NS+1; end
if (SM_9104=0) then begin SM_9104=Null; NS=NS+1; end
if (SM_7302=0) then begin SM_7302=Null; NS=NS+1; end
if (SM_5001D=0) then begin SM_5001D=Null; NS=NS+1; end
if (SM_0804=0) then begin SM_0804=Null; NS=NS+1; end
if (SM_1001111=0) then begin SM_1001111=Null; NS=NS+1; end
if (SM_1003000=0) then begin SM_1003000=Null; NS=NS+1; end
if (SM_1003100=0) then begin SM_1003100=Null; NS=NS+1; end
if (SM_1003200=0) then begin SM_1003200=Null; NS=NS+1; end
if (SM_1005000=0) then begin SM_1005000=Null; NS=NS+1; end
if (SM_1006=0) then begin SM_1006=Null; NS=NS+1; end
if (SM_1009000=0) then begin SM_1009000=Null; NS=NS+1; end
if (SM_230078027=0) then begin SM_230078027=Null; NS=NS+1; end
if (SM_260022128=0) then begin SM_260022128=Null; NS=NS+1; end
if (SM_260022130=0) then begin SM_260022130=Null; NS=NS+1; end
if (SM_4401=0) then begin SM_4401=Null; NS=NS+1; end
if (SM_4403=0) then begin SM_4403=Null; NS=NS+1; end
if (SM_910494=0) then begin SM_910494=Null; NS=NS+1; end
if (SM_9703=0) then begin SM_9703=Null; NS=NS+1; end
if (SM_8401=0) then begin SM_8401=Null; NS=NS+1; end
if (SM_7902K=0) then begin SM_7902K=Null; NS=NS+1; end
if (SM_5004=0) then begin SM_5004=Null; NS=NS+1; end
if (SM_1002200=0) then begin SM_1002200=Null; NS=NS+1; end
if (SM_1008=0) then begin SM_1008=Null; NS=NS+1; end
if (SM_910451=0) then begin SM_910451=Null; NS=NS+1; end
if (SM_230071027=0) then begin SM_230071027=Null; NS=NS+1; end
/*if ((FIO<>"нет") and (SM_DB1<>0 or SM_KR1<>0
or SM_DBN<>0 or SM_KRN<>0)) then suspend;*/
/*if (FIO<>"нет") then suspend;*/
if ((FIO<>"нет") and (SM_DBN<>0 or SM_KRN<>0 or NS<>48)) then begin
NSTR=NSTR+1;
suspend;
end
end
END
← →
AlexSerp (2004-05-19 13:50) [17]Те два поля выделены жирным.
Ниже по тексту идет разблюдовка по полям.
← →
Johnmen © (2004-05-19 13:57) [18]Видимо дело в арифметических операциях со значением NULL.
Т.е. 123+NULL=NULL и т.п.
← →
AlexSerp (2004-05-19 14:04) [19]Johnmen, пустота присваивается после вычислений.
← →
MIKE kouzmine © (2004-05-19 14:17) [20]Они исчезают из выборки? Или что?
← →
AlexSerp (2004-05-19 14:27) [21]MIKE kouzmine, именно.
Хотя в каждом отдельном запросе сотрудник выбирается без проблем.
Запросы неизменными остались.
Добавилось только два поля и их заполнение.
← →
Digitman © (2004-05-19 14:35) [22]и какой же (слов нет кто он) все это писал-то ?)
а завтра в корреспонденции с заданным фикс.счетом окажется новый счет, которого до сей поры не было в справочнике - и что ? снова процедуру переписывать ? еще поле добавлять ? а если послезавтра еще косой десяток счетов бухгалтеру стукнет в голову добавить ? так и будем раздувать кол-во реквизитов таблиц/запросов/процедур/взглядов ? они ж не резиновые))
← →
MIKE kouzmine © (2004-05-19 14:35) [23]А исчезают именно только они или случайные? Если они, то пройти отладкой именно по ним и понять, почему суспенд не выполняется.
if ((FIO<>"нет") and (SM_DBN<>0 or SM_KRN<>0 or NS<>48)) then begin
NSTR=NSTR+1;
suspend;
end
← →
AlexSerp (2004-05-19 14:44) [24]Digitman >и какой же (слов нет кто он) все это писал-то ?)
Это ж какие ты слова подобрал! ;-) Я обычно говорю ............ вот уже несколько лет, постоянно разгребая все, что понаписали доблестные разработчики.
База даже не спроектирована, это просто хранилище данных.
Проги написаны так, что постоянно что-то исчезает или задваивается/затраивается/....
Причем происходит все бессистемно.
Ну да ладно. Боремся помалек.
MIKE kouzmine, именно один и тот же сотрудник.
Отладкой пользовался из QuickDesk.
Видно совсем башкой ослаб.
Ща попробую шнягу с комментированием и оставлением каждого запроса отдельно. Может выплывет что-нть.
← →
Соловьев © (2004-05-19 14:47) [25]
> Отладкой пользовался из QuickDesk.
качай - http://www.ibexpert.com/rus/ibe_sfx.exe
← →
Digitman © (2004-05-19 14:49) [26]
> AlexSerp (19.05.04 14:27) [21]
как это у тебя запись исчезает из выборки ?
у тебя процедура же селективная ?
вот смотри сюда :
если таки WHERE-условие SELECT-предложения верно (т.е. однозначно приводит к выборке одной записи), то далее я вижу, что собственно suspend у тебя выполняется условно
if ((FIO<>"нет") and (SM_DBN<>0 or SM_KRN<>0 or NS<>48)) then begin
NSTR=NSTR+1;
suspend;
end
если условие в этом if не выполняется, то и suspend не выполнится !
о чем это говорит ? говорит это о том, что если обращение клиента к процедуре происходит как к селективной процедуре , то выборка будет пуста
отсюда вывод : проверяй правильность формирования этого if-условия, оно у тебя напрямую зависит от вычисленных значений переменных, и в связи с добавлением новых полей эти вычисленные значения запросто могут не соответствовать ожидаемым в условиях сравнения с константами
и оч важно здесь замечание Johnmen © (19.05.04 13:57) [18] - скорей всего оттуда и растут ноги у проблемы
← →
AlexSerp (2004-05-19 15:07) [27]Digitman, до того, как я прочитал твое сообщение,
уже именно этоif ((FIO<>"нет") and (SM_DBN<>0 or SM_KRN<>0 or NS<>48)) then begin
NSTR=NSTR+1;
suspend;
end
и проверил.
От же ж блин, оно ж работало без тех двух полей.
А теперь нет.
Поставил вместо AND -> OR.
Сотрудник появился.
Только там осталось покопаться в дебётах/кредётах.
Вот же как на админском деле мозги закисают.
Кабы в программеры обратно.
Нет ни у кого места в Москве? ;-)
← →
Digitman © (2004-05-19 15:29) [28]
> Поставил вместо AND -> OR
от балды, чувствуется, поставил ? абы задышало хоть как-то, а дальше - трава не расти ? ну так еще и XOR попробуй)
если "работало", то, значит, именно AND был нужен по логике !
и задача твоя, коль уж на то пошло, - выяснить, в какой точке кода процедуры происходит нечто ведущее к нарушаению истинности условного выражения
(FIO<>"нет") and (SM_DBN<>0 or SM_KRN<>0 or NS<>48)
← →
AlexSerp (2004-05-19 16:06) [29]Ребята, да, наобум "ИЛИ" поставил.
Точно мозги закисли.
Там везде формируется какая-та переменная NS.
Похоже на то, что когда писалась эта процедура разработчик таким образом прикрыл какую-то дыру.
Меня,есссно, в известность никто не ставил.
Оказалось, что тот сотрудник и попал под раздачу - NS=48 у него было.
Огромное всем спасибо.
Все решилось.
И с остаткоами на конец периода тоже.
← →
Digitman © (2004-05-19 16:31) [30]
> AlexSerp (19.05.04 16:06) [29]
ну и умница
только вот еслим так и дальше будет продолжаться в том же духе - геморрой тебе гарантирован)
не царское (не админское !) это дело - лезть в дебри прикладного программингга чего бы то ни было ... не работает чья-то задача ? нафиг ее сразу ! и - ставь перед фактом руководство ..
← →
AlexSerp (2004-05-19 16:42) [31]Digitman, ситуация поганенькая.
Программы сданы. Исходники переданы.
Кажин месяц гемор бессистемный.
Уже задолбало все до жути.
А мое дело не только админить, но и ошибки исправлять (исходники-то сданы). А также наполнять программы новой функциональностью (жаль только редко программировать удается) как на Делфи, так и на ИБ. Если б вы только видели исходники тех программ! Без слез не взглянешь. Я, когда ошибки исправляю, то разговариваю только матом.
А вообще, если б я знал, что проги будут писать дилетанты в прикладном программировании, то не пошел бы на эту работу. Правда, в тот момент мне предложили хорошую зарплату.
Теперь ищу место программиста.
← →
Digitman © (2004-05-19 17:07) [32]
> AlexSerp (19.05.04 16:42) [31]
мне искренне жаль, что ты торчишь в этой заднице
желаю выбраться из нее поскорей, иначе - кирдык ... ввязнешь по самые ухи ..
← →
Andriano (2004-05-20 08:35) [33]М-да... Закончил складской учет писать. Там и доки и справочники с деревьями, и журналы, и отчеты, и всякие сервисы. Но НИ ОДНОЙ такой процедуры или что-то подобного.
Настоятельно рекомендую: разберись в данных, да напиши свои запросы и процедуры.
Признаюсь, терпения не хватило понять смысл опубликованной процедуры. Да и нет там смысла, просто кого-то переклинило на хранимых процедурах.
← →
Digitman © (2004-05-20 09:20) [34]
> Andriano (20.05.04 08:35) [33]
> Признаюсь, терпения не хватило понять смысл опубликованной
> процедуры
примерный смысл, кажется, понятен судя по названию
GURNAL_SCHET_71S
типа, журнал какой-то отчетности по счетам, корреспондирующим с 71-ым счетом
судя по куче полей в выборке, большинство полей предназначено для возврата инф-ции по тому или иному узлу счет/субсчет/шифр_аналитики/и т.д., фигурирующему на момент вызова в справочнике счетов ... растет-плодится справочник - растет и число полей в выборке !
дурней логики и в кошмарном сне не придумаешь ..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.032 c