RUS  ENG 

Выполнение SQL запроса и запись результатов в окно сообщений (VBScript)

12 декабря 2016

Выполнение 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


Скачать пример (66.88 КБ)


Возврат к списку

Последнее обновление — 27.12.2018 16:31:13