Спасибо! Всё заработало как надо! Только я не понял, почему когда задается переменная d в виде 07.12.2023 то без апострофов с каждой стороны скрипт не работает. Пришлось еще добавить переменную m=" ' ".
Выложу здесь рабочий скрипт.
Суть скрипта: "Вывести в окно "сообщение" количество шт. нарисованных на карте объектов каждым исполнителем начиная с даты, заданной при помощи окна ввода строки, а также вывести общее количество выполненных объектов".
Код |
---|
Sub otchetAll
Set Ls = Zulu.ActiveMapDoc.Layers.Active
If Ls.UserName <> "GAS_СЕТИ" Then
MsgBox "Активируйте слой GAS_СЕТИ и повторите попытку"
Exit Sub
End If
Dim d,m,dd
d=InputBox("Введите дату в указаном формате: ДД.ММ.ГГГГ")
If d="" Then
MsgBox "Поле ""дата"" не заполнено"
Exit Sub
End if
If IsDate(d) = True then
Else
MsgBox "ОШИБКА: Дата введена не корректно!"
Exit Sub
End If
m="'"
dd=Date
Set Lss = Application.ActiveDocument.NativeDoc.Layers.Active
text_sql = "SEL ECT [Объект добавил], COUNT(DISTINCT [Номер газопровода]) FR OM [GAS_СЕТИ] WHERE [Дата внесения объекта]>= " + CStr(m) + CStr(d)+ CStr(m) + " And typeid=2 GROUP BY [Объект добавил]"
otv_sql = "SEL ECT COUNT(DISTINCT [Номер газопровода]) FR OM [GAS_СЕТИ] WHERE [Дата внесения объекта]>= " + CStr(m) + CStr(d)+ CStr(m) + " And typeid=2"
Set Result1 = Lss.ExecSQL(text_sql)
Set Result2 = Lss.ExecSQL(otv_sql)
Set Out = OpenOutputChannel ("Сообщения")
Out.Clear
OUT.Put "{\B}Количество выполненных объектов в период с " + CStr(d)+ " г." + " по " + CStr(dd) + " г." + CHR(10)
OUT.Put "Исполнитель" + " " + "Кол-во объектов" + CHR(10) + CHR(10)
Set t = Result1.DataSet
t.MoveFirst
Do
If t.Eof = True Then Exit Do
OUT.Put t.FieldValue(0) + Space(20-Len(t.FieldValue(0))) + t.FieldValue(1) +CHR(10)
t.MoveNext
Loop
Set tt = Result2.DataSet
OUT.Put CHR(10) + "{\B}Общее кол-во, шт.:" + " " + tt.FieldValue(0) +CHR(10)
MsgBOX "Выполнено"
End Sub
|