![]() |
Enron Mail |
Public Sub ReloadData()
Dim ODBCstring As String Dim ws As Workspace, db As Database Dim rs As Recordset Dim curProd, oldProd As String Dim sql, strWhere, strOrderBy, strWhereTmp, tmp As String Dim RowOffset As Integer Dim totalrow, tmpCount, i As Integer Dim today As String 'Dim next_date As String Dim userid As String Dim password As String Sheet1.Range("EOLReloading").Value = "RELOADING EOL" Application.Calculation = xlCalculationManual userid = "gasplasma" password = "gasplasma" ' ODBC connection string and database connection ODBCstring = "ODBC;DSN=EOLPROD;UID=" & userid & ";PWD=" & password Set ws = DBEngine.CreateWorkspace("EOL", "", "", dbUseODBC) Set db = ws.OpenDatabase("", , , ODBCstring) db.QueryTimeout = 600 If Err.Number << 0 Then Sheet1.Range("EOLReloading").ClearContents Application.Calculation = xlCalculationAutomatic MsgBox "Fail to login to the database" Exit Sub End If ' get the total row that is used totalrow = Sheets("EOL").UsedRange.Rows.Count 'clear the old contents 'ClearData "EOL", "Product", totalrow 'ClearData "EOL", "Net_Qty", totalrow Sheets("EOL").Range("A5:E500").ClearContents Sheets("EOL").Range("gdt").ClearContents sql = "select REF_PERIOD_ENGLISH_SHORT_DESC,BUY_SELL_CD,reference_period_end_dtm,sum(transaction_qty) " & _ " from eol.TRADING_TRANSACTIONS " & _ " WHERE TO_CHAR(transaction_dtm,'DD-MON-YYYY') = TO_CHAR(SYSDATE,'DD-MON-YYYY') and ref_period_english_short_desc like 'US Gas Swap%Nymex%' " & _ " GROUP BY REF_PERIOD_ENGLISH_SHORT_DESC,BUY_SELL_CD,reference_period_end_dtm " & _ " order by reference_period_end_dtm,BUY_SELL_CD " Set rs = db.OpenRecordset(sql, dbOpenSnapshot) RowOffset = 1 Worksheets("EOL").Range("gdt").Value = "Generated on: " + Format(Date, "mm/dd/yy") + " " + Format(Time, "hh:mm:ss AMPM") While Not rs.EOF tmp = rs("ref_period_english_short_desc").Value With Worksheets("EOL") .Range("Product").Offset(RowOffset, 0).Value = rs("ref_period_english_short_desc").Value .Range("BS").Offset(RowOffset, 0).Value = rs("buy_sell_cd").Value 'If rs("buy_sell_cd").Value = "B" Then ' .Range("Buy_Sell").Offset(RowOffset, 0).Value = "Buy" 'Else ' .Range("Buy_Sell").Offset(RowOffset, 0).Value = "Sell" 'End If If .Range("BS").Offset(RowOffset, 0).Value = "B" Then .Range("Net_Qty").Offset(RowOffset, 0).Value = rs(3).Value Else .Range("Net_Qty").Offset(RowOffset, 0).Value = (-1) * rs(3).Value End If End With RowOffset = RowOffset + 1 rs.MoveNext Wend rs.Close db.Close ws.Close oldProd = "" tmpCount = 0 With Worksheets("EOL") For i = 1 To RowOffset - 1 curProd = .Range("Product").Offset(i, 0).Value If oldProd << curProd Then oldProd = curProd tmpCount = tmpCount + 1 .Range("rProduct").Offset(tmpCount, 0).Value = curProd .Range("rNet_Qty").Offset(tmpCount, 0).Value = .Range("Net_Qty").Offset(i, 0).Value Else .Range("rNet_Qty").Offset(tmpCount, 0).Value = .Range("rNet_Qty").Offset(tmpCount, 0).Value + .Range("Net_Qty").Offset(i, 0).Value End If Next i End With Application.Calculation = xlCalculationAutomatic Sheet1.Range("EOLReloading").ClearContents Application.StatusBar = False End Sub
|