Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sub ic_excel_Click()
- Dim sqlQuery
- sqlQuery = GetSqlQuery()
- ExportCsv sqlQuery
- End Sub
- ''''''''''''''''''''''''''''''''''' Globals '''''''''''''''''''''''''''''''''''
- Public endDate, startDate
- '''''''''''''''''''''''''''''''''' /Globals/ ''''''''''''''''''''''''''''''''''
- Function GetSqlQuery()
- Dim chart
- Dim dict
- Dim elem
- Dim m_Keys
- Dim list
- Dim query
- Dim sqlQuery, sqlQueryAux
- Dim tableName
- Set chart = Screen.Item("E3Chart")
- Set query = chart.Queries.Item("Query")
- Set dict = CreateObject("Scripting.Dictionary")
- Set list = CreateObject("System.Collections.ArrayList")
- ' TODO:
- startDate = FormatDate( XControlGrafico.Item("TextoDataInicial").Value )
- endDate = FormatDate( XControlGrafico.Item("TextoDataFinal").Value )
- sqlQuery = "SELECT "
- For Each pen In chart.Pens
- dict.Add pen.Name, GetTableName(pen.Name)
- sqlQuery = sqlQuery & "SUM(" & pen.Name & ") AS " & pen.Name & ","
- Next
- sqlQuery = sqlQuery & "E3TimeStamp FROM ("
- m_Keys = dict.Keys
- For Each elem In dict
- For i = 0 To dict.Count - 1
- If (GetTableName( m_Keys(i) ) <> dict.Item( elem )) Then
- sqlQueryAux = sqlQueryAux & "NULL AS " & m_Keys(i)
- Else
- ' TODO: table name.
- tableName = "IURD.dbo." & dict.Item( elem )
- sqlQueryAux = sqlQueryAux & tableName & "." & m_Keys(i) & " AS " & m_Keys(i)
- End If
- sqlQueryAux = sqlQueryAux & "," &_
- IIf(i <> dict.Count - 1, "", tableName & ".E3TimeStamp FROM " & tableName)
- Next
- list.Add sqlQueryAux
- sqlQueryAux = ""
- Next
- For i = 0 To list.Count - 1
- sqlQuery = sqlQuery & "(SELECT "
- sqlQuery = sqlQuery & list(i) & IIf(i <> list.Count - 1, ") UNION ALL ", ")")
- Next
- sqlQuery = sqlQuery & ") RESULTS " &_
- "WHERE E3TimeStamp >= '" & startDate & "' AND E3TimeStamp <= '" & endDate & "' " &_
- "GROUP BY E3TimeStamp " &_
- "ORDER BY E3TimeStamp DESC"
- GetSqlQuery = sqlQuery
- End Function
- Function FormatDate( strDate )
- FormatDate = CStr( E3Format(CDate(strDate), "yyyy-MM-dd HH:mm:ss") )
- End Function
- Function GetTableName( pen )
- ' TODO: Insert all tables from database.
- Select Case Split(pen, "_")(1)
- Case "3SA", "3SB" GetTableName = "Analogicos_3SS"
- Case "2SA", "2SB" GetTableName = "Analogicos_2SS"
- Case "1SA", "1SB" GetTableName = "Analogicos_1SS"
- Case "1PA", "1PB" GetTableName = "Analogicos_1PA"
- Case "2PA", "2PB" GetTableName = "Analogicos_2PA"
- Case "3PA", "3PB" GetTableName = "Analogicos_3PA"
- Case "4PA", "4PB" GetTableName = "Analogicos_4PA"
- Case "5PA", "5PB" GetTableName = "Analogicos_5PA"
- Case "TA", "TB", "TLE", "TLD" GetTableName = "Analogicos_TE"
- Case "NVA", "NVB", "NVC" GetTableName = "Analogicos_NV"
- Case "ATA", "ATB" GetTableName = "Analogicos_AT"
- Case Else GetTableName = ""
- End Select
- End Function
- Sub ExportCsv( sqlQuery )
- Dim oShell: Set oShell = CreateObject ("WScript.Shell")
- Dim regex: Set regex = CreateObject("VBScript.RegExp")
- Dim filename
- regex.Global = True
- regex.IgnoreCase = True
- regex.Pattern = "(\-|\s|\:)"
- filename = "c:\Users\%username%\Desktop\MyFile_" & regex.Replace(startDate, "") & "_" & regex.Replace(endDate, "") & ".csv"
- output = "cmd /C sqlcmd -S .\sqlexpress -U sa -P iurdCwb123 -d IURD -s; -W -Q " & Chr(34) &_
- sqlQuery & Chr(34) & " >> " & filename
- oShell.Run output
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment