WINCC и SQL добавляют новый элемент в таблицу

#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/ or GROUP BY .