![]() |
|
Отдел технической поддержки дата обновления 07.08.2024 |
|
Применение VBScript при создании динамических отчетов
<!-- подсчет одинаково распиленных хлыстов по проекту -->
| <HTML> <HEAD> <TITLE>Раскрой профиля сжатый</TITLE> </HEAD> <BODY><CENTER> ~Точность:2:0:"."~ // точка - разделитель для VBScript ! <SCRIPT LANGUAGE="VBScript"> ~Проект:НАЧАЛО~ document.write "<P style=""font-size:16px; text-align: center; color:#0; font-weight: bold;"">Раскрой по проекту № ~Проект:Номер_проекта~</P>" ~Проект:КОНЕЦ~ document.write "<TABLE style=""border-collapse: collapse; font-size:11px; text-align:left; font-family:Arial; color:#0; font-weight: none;"" bgColor=#FFFFFF cellpadding=3 spacepadding=3 border=1 borderColor=#0>" document.write "<TR valign=top>" document.write "<TD bgColor=#CCCCCC align=center>Арт.</TD>" document.write "<TD bgColor=#CCCCCC align=center>Название</TD>" document.write "<TD bgColor=#CCCCCC align=center>Основ.</TD>" document.write "<TD bgColor=#CCCCCC align=center>Внутр.</TD>" document.write "<TD bgColor=#CCCCCC align=center>Внеш.</TD>" document.write "<TD bgColor=#CCCCCC align=center>Цел.,<br>мм</TD>" document.write "<TD bgColor=#CCCCCC align=center>Резы / углы</TD>" document.write "<TD bgColor=#CCCCCC align=center>Ост.,<br>мм</TD>" document.write "<TD bgColor=#CCCCCC align=center>Кол-во<br>хлыстов</TD>" document.write "</TR>" // подсчет количества обрабатываемых записей - размерность массивов данных ~SQL1:Установить:SELECT count(*) as RecCount FROM OptimHL~ ~SQL1:Добавить:WHERE pUnic=:Индекс1.AsInteger~ ~SQL1:Начало~ ~SQL1:RecCount:AsInteger:MaxRec~ ~SQL1:Конец~ // массив для проверки идентичности распилов хлыстов DIM V(~AsInteger:MaxRec~) // массив количества одинаково распиленных хлыстов DIM Q(~AsInteger:MaxRec~) ind=0 // индекс массивов V & Q ~SQL1:Установить:SELECT aNumb,nReik,clNum,clNu1,clNu2,aLenA,~ ~SQL1:Добавить:aLenB,nReik~ ~SQL1:Добавить:FROM OptimHL WHERE pUnic=:Индекс1.AsInteger~ ~SQL1:Добавить:ORDER BY aNumb,clNum,nReik~ ~SQL1:Начало~ ind=ind+1 V(ind) = "<TR valign=top><TD>~SQL1:aNumb:AsString~</TD>" V(ind) = V(ind) + "<TD>~SQL1:aNumb:As.Название~</TD>" V(ind) = V(ind) + "<TD>~SQL1:clNum:As.Текстура~</TD>" V(ind) = V(ind) + "<TD>~SQL1:clNu1:As.Текстура~</TD>" V(ind) = V(ind) + "<TD>~SQL1:clNu2:As.Текстура~</TD>" V(ind) = V(ind) + "<TD align=right>~SQL1:aLenB:AsFloat~</TD>" L = "" // для формирования строки таблицы ~SQL2:Установить:SELECT aLeng,nReik,clNum,clNu1,clNu2,~ ~SQL2:Добавить:OptimPR.aQtyP,aUg01,aUg02 FROM OptimPR,SpecPAU~ ~SQL2:Добавить:WHERE (OPTIMPR.pUnic=:Индекс1.AsInteger:)AND ~ ~SQL2:Добавить:(OptimPR.aUnic=SpecPAU.aUnic)AND~ ~SQL2:Добавить:(OptimPR.pUnic=SpecPAU.pUnic)AND~ ~SQL2:Добавить:(OptimPR.nReik=:SQL1nReik.AsInteger:)AND~ ~SQL2:Добавить:(aNumb=:SQL1aNumb.AsString:)AND~ ~SQL2:Добавить:(clNum=:SQL1clNum.AsInteger:)AND~ ~SQL2:Добавить:(clNu1=:SQL1clNu1.AsInteger:)AND~ ~SQL2:Добавить:(clNu2=:SQL1clNu2.AsInteger:)~ ~SQL2:Добавить:ORDER BY aLeng~ ~SQL2:Начало~ L = L + "~SQL2:aLeng:AsFloat~<b>х~SQL2:aQtyP:AsInteger~</b>" L = L + "" L = L + "~SQL2:aUg01:AsFloat~°x~SQL2:aUg02:AsFloat~°<BR>" ~SQL2:Конец~ V(ind) = V(ind) + "<TD align=right>" + L + "</TD>" V(ind) = V(ind) + "<TD align=right>~SQL1:aLenA:AsFloat~</TD>" Q(ind) = 1 ~SQL1:Конец~ // подсчет одинаково распиленных хлыстов FOR i=1 TO ind IF Q(i)>0 THEN FOR k=i+1 TO ind IF V(k)=V(i) AND Q(k)>0 THEN Q(i)=Q(i)+1 Q(k)=0 END IF NEXT END IF NEXT // вывод распилов в выходной отчет FOR i=1 TO ind IF Q(i)>0 THEN document.write V(i) document.write "<TD align=center><b>" document.write Q(i) document.write "</b></TD></TR>" END IF NEXT document.write "</TABLE>" </SCRIPT> </BODY> </HTML> Выходной отчет будет иметь примерный вид: Раскрой по проекту № 1
Примечание При формировании этого отчета был использован VBScript. Выходной отчет сформирован динамически, поэтому невозможна конечная редакция и открытие в MS Word / MS Excel. |