'Archiving data hourly Dim RuntimeStart, conn, rst, SQL, TabName, Variable_Day, Variable_Month, Variable_Year, Variable_Hour 'Building up connection to the database Set conn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") 'DSN = Name of the ODBC database conn.Open "Provider=MSDASQL;DSN=WinCCflexible" 'After month changed, a new database table will be create If (Day(Now)=1) = True And (Hour(Now)=0) = True Then SQL = "CREATE DATABASE Data_Logs_" & Year(Now) & "_" & Month(Now) Set rst = conn.execute(SQL) End If 'After hour change, calculate the hour before to set the database table with a "dynamic" name SmartTags("Day_Old") = DateAdd("d", -1, Now) Variable_Day = Day(SmartTags("Day_Old")) Variable_Month = Month(SmartTags("Day_Old")) Variable_Year = Year(SmartTags("Day_Old")) Variable_Hour = Hour(SmartTags("Day_Old")) 'Target: dbo = Key word -> DataBaseOwner TabName = "[Data_Logs_" & Variable_Year & "_" & Variable_Month & "].dbo." TabName = TabName & "Data_Logs_" & Variable_Year & "_" & Variable_Month & "_" & Variable_Day 'Read the Values from the current time (from minute 0 and second 0 till 59. minute und 59 second) and store this value in a archive SQL = "SELECT * INTO " & TabName & " FROM Data_Logs0 WHERE TimeString >= '"& CDate(Variable_Day & "." & Variable_Month & "." & Variable_Year & " " & "0:0") & "' And TimeString <= '"& CDate(Variable_Day & "-" & Variable_Month & "-" & Variable_Year & " " & "23:59") & "'" 'Stop connection to the database Set rst = conn.execute(SQL) 'After copying the data from the "Data_Logs0", the data could be delete SQL = "DELETE FROM Data_Logs0 WHERE TimeString >= '"& CDate(Variable_Day & "." & Variable_Month & "." & Variable_Year & " " & "0:0") & "' And TimeString <= '"& CDate(Variable_Day & "." & Variable_Month & "." & Variable_Year & " " & "23:59") & "'" Set rst = conn.execute(SQL) 'Stop connection to the database conn.Close 'Clear memory Set rst = Nothing Set conn = Nothing