Guest User

Untitled

a guest
Jan 25th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Sub ic_excel_Click()
  2.     Dim sqlQuery
  3.     sqlQuery = GetSqlQuery()
  4.     ExportCsv sqlQuery
  5. End Sub
  6. ''''''''''''''''''''''''''''''''''' Globals '''''''''''''''''''''''''''''''''''
  7. Public endDate, startDate
  8. '''''''''''''''''''''''''''''''''' /Globals/ ''''''''''''''''''''''''''''''''''
  9. Function GetSqlQuery()
  10.     Dim chart
  11.     Dim dict
  12.     Dim elem
  13.     Dim m_Keys
  14.     Dim list
  15.     Dim query
  16.     Dim sqlQuery, sqlQueryAux
  17.     Dim tableName
  18.    
  19.     Set chart = Screen.Item("E3Chart")
  20.     Set query = chart.Queries.Item("Query")
  21.    
  22.     Set dict = CreateObject("Scripting.Dictionary")
  23.     Set list = CreateObject("System.Collections.ArrayList")
  24.    
  25.     ' TODO:
  26.     startDate = FormatDate( XControlGrafico.Item("TextoDataInicial").Value )
  27.     endDate = FormatDate( XControlGrafico.Item("TextoDataFinal").Value )
  28.    
  29.     sqlQuery = "SELECT "
  30.     For Each pen In chart.Pens
  31.         dict.Add pen.Name, GetTableName(pen.Name)
  32.         sqlQuery = sqlQuery & "SUM(" & pen.Name & ") AS " & pen.Name & ","
  33.     Next
  34.    
  35.     sqlQuery = sqlQuery & "E3TimeStamp FROM ("
  36.     m_Keys = dict.Keys
  37.    
  38.     For Each elem In dict
  39.         For i = 0 To dict.Count - 1
  40.             If (GetTableName( m_Keys(i) ) <> dict.Item( elem )) Then
  41.                 sqlQueryAux = sqlQueryAux & "NULL AS " & m_Keys(i)
  42.             Else
  43.                 ' TODO: table name.
  44.                 tableName = "IURD.dbo." & dict.Item( elem )
  45.                 sqlQueryAux = sqlQueryAux & tableName & "." & m_Keys(i) & " AS " & m_Keys(i)
  46.             End If
  47.             sqlQueryAux = sqlQueryAux & "," &_
  48.                     IIf(i <> dict.Count - 1, "", tableName & ".E3TimeStamp FROM "  & tableName)
  49.         Next
  50.         list.Add sqlQueryAux
  51.         sqlQueryAux = ""
  52.     Next
  53.    
  54.     For i = 0 To list.Count - 1
  55.         sqlQuery = sqlQuery & "(SELECT "
  56.         sqlQuery = sqlQuery & list(i) & IIf(i <> list.Count - 1, ") UNION ALL ", ")")
  57.     Next
  58.    
  59.     sqlQuery = sqlQuery & ") RESULTS " &_
  60.             "WHERE  E3TimeStamp >= '" & startDate & "' AND E3TimeStamp <= '" & endDate & "' " &_
  61.             "GROUP BY E3TimeStamp " &_
  62.             "ORDER BY E3TimeStamp DESC"
  63.    
  64.     GetSqlQuery = sqlQuery
  65. End Function
  66. Function FormatDate( strDate )
  67.     FormatDate = CStr( E3Format(CDate(strDate), "yyyy-MM-dd HH:mm:ss") )
  68. End Function
  69. Function GetTableName( pen )
  70.     ' TODO: Insert all tables from database.
  71.     Select Case Split(pen, "_")(1)
  72.     Case "3SA", "3SB"               GetTableName = "Analogicos_3SS"
  73.     Case "2SA", "2SB"               GetTableName = "Analogicos_2SS"
  74.     Case "1SA", "1SB"               GetTableName = "Analogicos_1SS"
  75.     Case "1PA", "1PB"               GetTableName = "Analogicos_1PA"
  76.     Case "2PA", "2PB"               GetTableName = "Analogicos_2PA"
  77.     Case "3PA", "3PB"               GetTableName = "Analogicos_3PA"
  78.     Case "4PA", "4PB"               GetTableName = "Analogicos_4PA"
  79.     Case "5PA", "5PB"               GetTableName = "Analogicos_5PA"
  80.     Case "TA", "TB", "TLE", "TLD"   GetTableName = "Analogicos_TE"
  81.     Case "NVA", "NVB", "NVC"        GetTableName = "Analogicos_NV"
  82.     Case "ATA", "ATB"               GetTableName = "Analogicos_AT"
  83.     Case Else                       GetTableName = ""
  84.     End Select
  85. End Function
  86. Sub ExportCsv( sqlQuery )
  87.     Dim oShell: Set oShell = CreateObject ("WScript.Shell")
  88.     Dim regex: Set regex = CreateObject("VBScript.RegExp")
  89.     Dim filename
  90.    
  91.     regex.Global = True
  92.     regex.IgnoreCase = True
  93.     regex.Pattern = "(\-|\s|\:)"
  94.  
  95.     filename = "c:\Users\%username%\Desktop\MyFile_" & regex.Replace(startDate, "") & "_" & regex.Replace(endDate, "") & ".csv"
  96.     output =  "cmd /C sqlcmd -S .\sqlexpress -U sa -P iurdCwb123 -d IURD -s; -W -Q " & Chr(34) &_
  97.         sqlQuery & Chr(34) & " >> " & filename
  98.        
  99.     oShell.Run output
  100. End Sub
Advertisement
Add Comment
Please, Sign In to add comment