Mysql WINCC和SQL在表中添加新元素
我已经在WINCC中创建了一个项目,在这里我创建了一个表(示例在底部),然后将温度变送器的值放入其中,以1秒为周期。我的问题是,一段时间后,新数据并没有出现在表的底部,而是随机出现在某个位置并开始在那个里写入。它并没有覆盖它,只是开始随机插入,然后在底部,然后再随机插入,等等 以下是我创建表的代码:Mysql WINCC和SQL在表中添加新元素,mysql,vbscript,wincc,tia-portal,Mysql,Vbscript,Wincc,Tia Portal,我已经在WINCC中创建了一个项目,在这里我创建了一个表(示例在底部),然后将温度变送器的值放入其中,以1秒为周期。我的问题是,一段时间后,新数据并没有出现在表的底部,而是随机出现在某个位置并开始在那个里写入。它并没有覆盖它,只是开始随机插入,然后在底部,然后再随机插入,等等 以下是我创建表的代码: Sub Create_new_table () Dim conn, rst, SQL_Table, name On Error Resume Next Set conn = CreateObje
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) & "_" & Month(Date) & "_" & 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 #" & Err.Number & " " & Err.Description
Err.Clear
Set conn = Nothing
Exit Sub
End If
' FORMING TABLE
SQL_Table = "CREATE TABLE Paster_TT43_" & name & "(" &_
"Signal NVARCHAR(30) ," &_
"Date NVARCHAR(30) ," &_
"Time NVARCHAR(30) ," &_
"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 #" & Err.Number & " " & 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
子创建新表()
Dim conn,rst,SQL_表,名称
出错时继续下一步
Set conn=CreateObject(“ADODB.Connection”)
Set rst=CreateObject(“ADODB.Recordset”)
名称=年(日)&“月(日)&”日(日)
'开放数据源-Datenquelleöffnen
conn.Open“Provider=MSDASQL;DSN=Database”'DSN=ODBC数据库的名称-DSN=ODBC数据库的名称
'错误例程-Fehlerroutine
如果错误号为0,则
ShowSystemAlarm“Error#”和Err.Number&“”和Err.Description
呃,明白了
设置连接=无
出口接头
如果结束
"成型台",
SQL_Table=“创建表粘贴器”&name&(“&_
“信号NVARCHAR(30),”&_
“日期NVARCHAR(30),”&_
“时间NVARCHAR(30),”&_
“值NVARCHAR(30))”
设置rst=conn.Execute(SQL_表)
“有更多的表要创建,例如,有一个
'错误例程-Fehlerroutine
如果错误号为0,则
ShowSystemAlarm“Error#”和Err.Number&“”和Err.Description
呃,明白了
'关闭数据源-Datenquelle schließen
康涅狄格州
设置连接=无
设置rst=无
出口接头
如果结束
'关闭数据源-Datenquelle schließen
康涅狄格州
设置rst=无
设置连接=无
端接头
这就是创建一个表的示例
现在,作为向其中添加新元素的示例,它每秒钟都在运行
Sub Add_New_Element()
Dim conn, conn2, rst, SQL_Table,SQL_Table2, name, rssql, rs, insertsql, Date, Time
name =Year(Date) & "_" & Month(Date) & "_" & Day(Date)
Date = Day(Date) & "_" & Month(Date) & "_" & Year(Date)
Time = Hour(Time) & ":" & Minute(Time) & ":" & 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 #" & Err.Number & " " & Err.Description
Err.Clear
Set conn = Nothing
Exit Sub
End If
SQL_Table = "INSERT INTO Paster_TT43_" & name & "(Signal, Date, Time, Value) VALUES ('" & SmartTags("15_Analog_input_TT43.Name") & "' , '" & datum & "' , ' " & vreme & "' , ' " & SmartTags("15_Analog_input_TT43.Scaled_Signal") & " ')"
Set rst = conn.Execute(SQL_Table)
'more signals after this etc..
conn.close
Set rst = Nothing
Set conn = Nothing
End Sub
子添加新元素()
Dim conn,conn2,rst,SQL_表,SQL_表2,名称,rssql,rs,insertsql,日期,时间
名称=年(日)&“月(日)&”日(日)
日期=日(日)&“月(日)&”年(日)
时间=小时(时间)&“&分钟(时间)&“:”&秒(时间)
出错时继续下一步
Set conn=CreateObject(“ADODB.Connection”)
conn.Open“Provider=MSDASQL;Initial Catalog=BazaPodataka;DSN=Database”
如果错误号为0,则
ShowSystemAlarm“Error#”和Err.Number&“”和Err.Description
呃,明白了
设置连接=无
出口接头
如果结束
SQL_Table=“插入粘贴器_TT43_”&name&“(信号、日期、时间、值)值(“&SmartTags(“15_模拟输入_TT43.name”)&“,”&datum&“,”&vreme&“,””&SmartTags(“15_模拟输入_TT43.Scaled_信号”)&“)
设置rst=conn.Execute(SQL_表)
"这之后有更多的信号等等。。
康涅狄格州
设置rst=无
设置连接=无
端接头
谢谢您如何检查表中的值?您可以按日期、时间排序,以便按顺序查看它们。不要将数据/查询的可视输出误认为它存储在SQL数据库中的实际顺序。过于简化:SQL不以任何特定顺序存储(新)行。相反,新数据存储在“合适的地方”。如果您希望查询结果按特定顺序排序,SQL使用
order BY
和/或GROUP BY
子句提供了必要的方法。您如何检查表中的值?您可以按日期、时间排序,以便按顺序查看它们。不要将数据/查询的可视输出误认为它存储在SQL数据库中的实际顺序。过于简化:SQL不以任何特定顺序存储(新)行。相反,新数据存储在“合适的地方”。如果希望查询结果按特定顺序排序,SQL提供了必要的方法,使用order BY
和/或GROUP BY
子句。