#mysql #vbscript #wincc #tia-portal
#mysql #vbscript #wincc #tia-портал
Вопрос:
Я создал проект в WINCC, где я создаю таблицу (примеры внизу), а затем помещаю в нее значения датчика температуры с циклами в одну секунду. Моя проблема в том, что через некоторое время новые данные не попадают на дно таблицы, они случайным образом попадают в какое-то место и начинают там записываться. Он не перезаписывает его, просто начинает вставлять случайным образом, и через некоторое время он переходит на дно, а затем снова случайным образом и т. Д…
Вот мой код для создания таблицы:
Sub Create_new_table ()
Dim conn, rst, SQL_Table, name
On Error Resume Next
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
name =Year(Date) amp; "_" amp; Month(Date) amp; "_" amp; Day(Date)
'Open data source - Datenquelle öffnen
conn.Open "Provider=MSDASQL;DSN=Database" 'DSN= Name of the ODBC database - DSN= Name der ODBC-Datenbank
'Error routine - Fehlerroutine
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" amp; Err.Number amp; " " amp; Err.Description
Err.Clear
Set conn = Nothing
Exit Sub
End If
' FORMING TABLE
SQL_Table = "CREATE TABLE Paster_TT43_" amp; name amp; "(" amp;_
"Signal NVARCHAR(30) ," amp;_
"Date NVARCHAR(30) ," amp;_
"Time NVARCHAR(30) ," amp;_
"Value NVARCHAR(30) )"
Set rst = conn.Execute(SQL_Table)
' There are more tables to create there is one for example
'Error routine - Fehlerroutine
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" amp; Err.Number amp; " " amp; Err.Description
Err.Clear
'Close data source - Datenquelle schließen
conn.close
Set conn = Nothing
Set rst = Nothing
Exit Sub
End If
'Close data source - Datenquelle schließen
conn.close
Set rst = Nothing
Set conn = Nothing
End Sub
Это был пример создания одной таблицы
Теперь пример для добавления в него новых элементов, он идет каждую секунду
Sub Add_New_Element()
Dim conn, conn2, rst, SQL_Table,SQL_Table2, name, rssql, rs, insertsql, Date, Time
name =Year(Date) amp; "_" amp; Month(Date) amp; "_" amp; Day(Date)
Date = Day(Date) amp; "_" amp; Month(Date) amp; "_" amp; Year(Date)
Time = Hour(Time) amp; ":" amp; Minute(Time) amp; ":" amp; Second(Time)
On Error Resume Next
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=MSDASQL;Initial Catalog=BazaPodataka;DSN=Database"
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" amp; Err.Number amp; " " amp; Err.Description
Err.Clear
Set conn = Nothing
Exit Sub
End If
SQL_Table = "INSERT INTO Paster_TT43_" amp; name amp; "(Signal, Date, Time, Value) VALUES ('" amp; SmartTags("15_Analog_input_TT43.Name") amp; "' , '" amp; datum amp; "' , ' " amp; vreme amp; "' , ' " amp; SmartTags("15_Analog_input_TT43.Scaled_Signal") amp; " ')"
Set rst = conn.Execute(SQL_Table)
'more signals after this etc..
conn.close
Set rst = Nothing
Set conn = Nothing
End Sub
Спасибо
Комментарии:
1. Как вы проверяете значения в таблице? Вы можете сделать заказ по дате, времени, чтобы увидеть их по порядку.
2. Не путайте визуальный вывод данных / запроса с фактическим порядком, в котором они хранятся в базе данных SQL. Упрощенный: SQL не хранит (новые) строки в каком-либо определенном порядке. Вместо этого новые данные сохраняются «там, где они подходят». Если вы хотите, чтобы результаты запроса были отсортированы в определенном порядке, SQL предоставляет необходимые средства с
ORDER BY
предложением and/ orGROUP BY
.