MsgFilterSQL Alarm Control
Свой код привожу ниже:
Code: Select all
Sub OnClick(Byval Item)
Dim s, d1,d2,m1,m2,y1,y2,h1,mm1,s1,h2,mm2,s2, mnr1, mnr2
'Фильтр по дате и времени
s = ""
If HMIRuntime.Tags("ACTIVATE_FILTR_1").Read = 1 Then
d1 = ScreenItems("IOd1").OutputValue
m1 = ScreenItems("IOm1").OutputValue
y1 = ScreenItems("IOy1").OutputValue
d2 = ScreenItems("IOd2").OutputValue
m2 = ScreenItems("IOm2").OutputValue
y2 = ScreenItems("IOy2").OutputValue
h1 = ScreenItems("IOd3").OutputValue
mm1 = ScreenItems("IOm3").OutputValue
s1 = ScreenItems("IOy3").OutputValue
h2 = ScreenItems("IOd4").OutputValue
mm2 = ScreenItems("IOm4").OutputValue
s2 = ScreenItems("IOy4").OutputValue
s = "DATETIME >= '"+CStr(y1)+"-"+CStr(m1)+"-"+CStr(d1)+" "+CStr(h1)+":"+CStr(mm1)+":"+CStr(s1)+".000'"
s = s + " AND DATETIME <= '"+CStr(y2)+"-"+CStr(m2)+"-"+CStr(d2)+" "+CStr(h2)+":"+CStr(mm2)+":"+CStr(s2)+".999'"
End If
'Фильтр по номеру сообщения
If HMIRuntime.Tags("ACTIVATE_FILTR_2").Read = 1 Then
If s <> "" Then s = s + " AND "
mnr1 = CStr(ScreenItems("IOy5").OutputValue)
mnr2 = CStr(ScreenItems("IOy6").OutputValue)
s = s + "MSGNR >= "+mnr1+" AND MSGNR <= "+mnr2
End if
'Присваиваем значение фильтра тегу
HMIRuntime.Tags("Filter_FilterString").Write s
'Присваиваем значение фильтра Alarm Control'у
Parent.Parent.ScreenItems("Control1").MsgFilterSQL = s
End Sub
Если фильтр по номеру сообщения написать так:
If HMIRuntime.Tags("ACTIVATE_FILTR_2").Read = 1 Then
s = "MSGNR >= 10 AND MSGNR <= 40"
то скрипт дальше выполняется.
Apdiagnose выдает ошибку (get_item: Параметр задан неверно)
ссылаясь на строку ( mnr1 = CStr(ScreenItems("IOy5").OutputValue) ).
Как правильно прочитать значение тега IOy5 (Text tag 8-bit character set) ?