Выполнение SQL запроса и запись результатов в окно сообщений (VBScript)
Пример скрипта VBScript - в котором выполняется несколько SQL запросов и результаты записываются в окно сообщений.В слой тепловой сети, предварительно были добавлены поля [kpd] и [Стоимость строительства 1пм трассы руб].
- Поле [kpd] - добавлено в таблицу по источнику. Заполняется вручную, является произведением КПД электродвигателя и насоса.
- Поле [Стоимость строительства 1пм трассы руб] подставляется из подчиненной таблицы, в которой представлена стоимость, в зависимости от диаметра и материала трубопроводов.
- Стоимость 1 кВт*ч принимается постоянной величиной и задается в тексте макроса 3.39 руб.
- 985 кг/м3- плотность воды при температуре 55 °С.
- Формулы, приведенные в макросе брались с форума Аbok
Дополнил описание примера на сайте.
'Пример выполнения SQL запроса и записи результатов в окно сообщений
SUB MatHarThermo()
'Встаем на активный слой, для успешного выполнения необходим слой тепловой сети, поля [kpd] и [Стоимость строительства 1пм трассы руб]
Set L = Application.ActiveDocument.NativeDoc.Layers.Active
'получаем результаты выполняя SQL запросы
Set Result1 = L.ExecSQL("SELECT (AVG([Drek_pod]))*1000, sum(([Диаметр подающего тр-да (конструкторский), м]+[Диаметр обратного тр-да (конструкторский), м])*[Длина участка, м]), sum(2*[Длина участка, м]) GROUP BY [Drek_pod]")
Set Result2 = L.ExecSQL("SELECT SUM(([Drek_pod]+[Drek_obr])*[L]),SUM(([Стоимость строительства 1пм трассы руб])*[L]*1/1000),Sum(2*[L]) WHERE typeid=6")
Set Result3 = L.ExecSQL("SELECT sum(([Gsum_pod]*(1.1)*[Ht_ras]*985/(3600*102*[kpd]))), sum(0.00272*[Ht_ras]/([kpd])),sum(0.00272*[Gsum_pod]*[Ht_ras]/([kpd])) , sum(0.00272*3.39*[Gsum_pod]*[Ht_ras]/([kpd])), sum(365*24*0.00272*3.39*[Gsum_pod]*[Ht_ras]/([kpd])) WHERE typeid=1")
Set Out = OpenOutputChannel ("Сообщения")
Out.Clear
'открываем и отчищаем окно сообщений
Out.Put "{\B}Капитальные затраты:{\B}"+Chr(10)
'Пишем первую строчку - Капитальные затраты: переходим на следующую строку, для вывода результатов.
Set h= Result2.DataSet
'h- результат запроса 2(Result2)
h.MoveFirst
Out.Put "Суммарная протяженность трубопроводов "+ Chr(9) + h.FieldValue(2) + " " + Chr(9)+" м" + +CHR(10)
'h.FieldValue(2)- третий результат запроса 2. Дальше аналогично
h.MoveNext
Out.Put "Суммарная материальная характеристика " + h.FieldValue(0) + " " +" м2" + +CHR(10)
h.MoveNext
Out.Put "Кап.затраты в новое строительство " + h.FieldValue(1) + " " +" млн.руб" + +CHR(10) +CHR(10)
Out.Put "{\B}Эксплуатационные затраты:{\B}"+CHR(10)
set u= Result3.DataSet
u.MoveFirst
Out.Put "Мощность электродвигателя насоса " + u.FieldValue(0) + " " +" КВт" + +CHR(10)
u.MoveNext
Out.Put "Удельные затраты электроэнергии " + u.FieldValue(1) + " " +" кВт*ч/м3" + +CHR(10)
u.MoveNext
Out.Put "Часовой расход электроэнергии " + u.FieldValue(2) + " " +" кВт*ч" + +CHR(10)
u.MoveNext
Out.Put "Часовые затраты на электроэнергию " + u.FieldValue(3) + " " +" Руб" + +CHR(10)
u.MoveNext
Out.Put "Годовые затраты на электроэнергию " + u.FieldValue(4) + " " +" Руб" + +CHR(10)+CHR(10)
Out.Put "Диаметр" + " " +" Материальная" + " " +" Протяженность" +CHR(10) + " " +" характеристика"
'результат 1 запроса - таблица. Таблицу выводим в Цикле.
set t= Result1.DataSet
t.MoveFirst
do
if t.eof = true then exit do
Out.Put t.FieldValue(0) + " " + t.FieldValue(1) + " " + t.FieldValue(2) +CHR(10)
t.MoveNext
loop
' Если все результаты, выведены выводим сообщение
MsgBox "Готово!" ,64
end sub
Последнее обновление — 27.12.2018 16:31:13