diff --git a/FL.bas b/FL.bas index 23d51c1..700a280 100644 --- a/FL.bas +++ b/FL.bas @@ -1,5 +1,6 @@ Option Explicit + Public x As New TheBigOne Sub Determine_Active_Range() @@ -78,7 +79,7 @@ Sub ExtractPNC_CSV() Dim bal() As String Dim bali As Long Dim sched_loan As String - Dim p As FileDialog + Dim P As FileDialog Dim i As Long Dim j As Long Dim m As Long @@ -94,10 +95,10 @@ Sub ExtractPNC_CSV() '--------Open file------------- - Set p = Application.FileDialog(msoFileDialogOpen) - p.Show + Set P = Application.FileDialog(msoFileDialogOpen) + P.Show '--------Extract text---------- - f = x.FILEp_GetTXT(p.SelectedItems(1), 2000) + f = x.FILEp_GetTXT(P.SelectedItems(1), 2000) '--------resize arrays--------- ReDim col(11, UBound(f, 2)) @@ -175,11 +176,11 @@ Sub ExtractPNC_CSV() ' sh1.Name = "Collateral" ' sh2.Name = "Balance" - If Not x.FILEp_CreateCSV(Mid(p.SelectedItems(1), 1, Len(p.SelectedItems(1)) - 4) & "col.csv", col) Then + If Not x.FILEp_CreateCSV(Mid(P.SelectedItems(1), 1, Len(P.SelectedItems(1)) - 4) & "col.csv", col) Then MsgBox ("error") End If - If Not x.FILEp_CreateCSV(Mid(p.SelectedItems(1), 1, Len(p.SelectedItems(1)) - 4) & "bal.csv", bal) Then + If Not x.FILEp_CreateCSV(Mid(P.SelectedItems(1), 1, Len(P.SelectedItems(1)) - 4) & "bal.csv", bal) Then MsgBox ("error") End If @@ -577,6 +578,8 @@ Sub markdown_whole_sheet() Call wapi.ClipBoard_SetData(x.markdown_whole_sheet(ActiveSheet)) + + End Sub @@ -587,7 +590,7 @@ Sub sql_from_range() Dim wapi As New Windows_API Dim r() As String - Call wapi.ClipBoard_SetData(x.SQLp_build_sql_values(x.ARRAYp_get_range_string(Selection), True)) + Call wapi.ClipBoard_SetData(x.SQLp_build_sql_values(x.ARRAYp_get_range_string(Selection), True, True, Db2)) End Sub @@ -599,13 +602,74 @@ End Sub Sub pivot_field_format() - ActiveSheet.PivotTables("PivotTable1").PivotFields(ActiveCell.value).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)" + ActiveSheet.PivotTables(1).PivotFields(ActiveCell.value).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)" End Sub Sub Write_selection() + Dim P As FileDialog - Call x.FILEp_CreateTXT("C:\Users\ptrowbridge\Documents\hc_ubm\SQL\DB2\DB2 for i\Mass_Trigger\g_trig.sql", x.SHTp_Get(ActiveSheet.Name, Selection.row, Selection.column, False)) + '--------Open file------------- + Set P = Application.FileDialog(msoFileDialogSaveAs) + P.Show + + Call x.FILEp_CreateTXT(P.SelectedItems(1), x.SHTp_Get(ActiveSheet.Name, Selection.row, Selection.column, False)) + + +End Sub + +Sub dump_markdown() + + Dim path As String + Dim s As Worksheet + Dim x As New TheBigOne + Dim wapi As New Windows_API + + path = ActiveWorkbook.path & "\" & Mid(ActiveWorkbook.Name, 1, InStr(1, ActiveWorkbook.Name, ".xl")) & "md" + + For Each s In ActiveWorkbook.Worksheets + Call wapi.ClipBoard_SetData(x.markdown_whole_sheet(s)) + Next s + + +End Sub + +Sub test() + + Dim c As New WindCrypt + c.Password = "hi" + c.InBuffer = "test" + Call c.Validate + +End Sub + +Sub split_forecast_data() + + Application.EnableCancelKey = xlDisabled + + Dim wb As Workbook + Dim ws As Worksheet + Dim d() As String + Dim u() As String + Dim f() As String + Dim i As Long + + + d = x.SHTp_Get("Data", 1, 1, True) + u = d + + Call x.TBLp_Aggregate(u, False, True, True, Array(1), Array("S"), Array(5, 6, 7, 8)) + + For i = 1 To UBound(u, 2) + Call Sheets("TEMPLATE").Copy(Sheets(i)) + Set ws = Sheets(i) + ws.Name = Left(RTrim(u(0, i)), 20) + f = d + Call x.TBLp_FilterSingle(f, 1, u(0, i), True) + Call x.SHTp_Dump(f, ws.Name, 3, 12, False, True, 16, 17, 18, 19) + Next i + + End Sub diff --git a/TheBigOne.cls b/TheBigOne.cls index 0f6e5b1..885115e 100644 --- a/TheBigOne.cls +++ b/TheBigOne.cls @@ -7,7 +7,7 @@ Public ADOo_errstring As String Public Enum ADOinterface MicrosoftJetOLEDB4 = 0 MicrosoftACEOLEDB12 = 1 - SqlServer = 2 + SQLServer = 2 SQLServerNativeClient = 3 SQLServerNativeClient10 = 4 OracleODBC = 5 @@ -17,6 +17,12 @@ Public Enum ADOinterface PostgreSQLODBC = 9 End Enum +Public Enum SQLsyntax + Db2 = 0 + SQLServer = 1 + PostgreSQL = 2 +End Enum + Public Function TBLp_Aggregate(ByRef tbl() As String, ByRef needsort As Boolean, ByRef headers As Boolean, ByRef del_unused As Boolean, ParamArray groupnum_type_sumnum()) As Boolean @@ -2196,7 +2202,7 @@ Function markdown_whole_sheet(ByRef sh As Worksheet) As String Dim x As New TheBigOne Dim tbl() As Variant - tbl = sh.range("A1:CZ1000") + tbl = sh.range("A1:CZ1000").FormulaR1C1 For ic = 1 To UBound(tbl, 2) For ir = 1 To UBound(tbl, 1) @@ -2207,7 +2213,7 @@ Function markdown_whole_sheet(ByRef sh As Worksheet) As String Next ir Next ic - tbl = sh.range(sh.Cells(1, 1).Address & ":" & sh.Cells(mr, mc).Address) + tbl = sh.range(sh.Cells(1, 1).Address & ":" & sh.Cells(mr, mc).Address).FormulaR1C1 markdown_whole_sheet = Me.markdown_from_table(tbl) @@ -2223,7 +2229,7 @@ Function MISCe_colnum_to_letter(ByRef x As Long) As String End Function -Public Function SQLp_build_sql_values(ByRef tbl() As String, trim As Boolean) As String +Public Function SQLp_build_sql_values(ByRef tbl() As String, trim As Boolean, headers As Boolean, syntax As SQLsyntax) As String Dim i As Long @@ -2231,6 +2237,8 @@ Public Function SQLp_build_sql_values(ByRef tbl() As String, trim As Boolean) As Dim sql As String Dim rec As String Dim type_flag() As String + Dim col_name As String + Dim start_row As Long ReDim type_flag(UBound(tbl, 1)) For j = 0 To UBound(tbl, 1) @@ -2253,10 +2261,19 @@ Public Function SQLp_build_sql_values(ByRef tbl() As String, trim As Boolean) As End If Next j + If headers Then + start_row = 1 + For i = 0 To UBound(tbl, 1) + If i > 0 Then col_name = col_name & "," + col_name = col_name & """" & tbl(i, 0) & """" + Next i + Else + start_row = 0 + End If - For i = 0 To UBound(tbl, 2) + For i = start_row To UBound(tbl, 2) rec = "" - If i <> 0 Then sql = sql & "," & vbCrLf + If i <> start_row Then sql = sql & "," & vbCrLf rec = rec & "(" For j = 0 To UBound(tbl, 1) If j <> 0 Then rec = rec & "," @@ -2298,7 +2315,18 @@ Public Function SQLp_build_sql_values(ByRef tbl() As String, trim As Boolean) As rec = rec & ")" sql = sql & rec Next i + '---------build select-------------------------- + Select Case syntax + Case SQLsyntax.Db2 + sql = "SELECT * FROM TABLE( VALUES" & vbCrLf & sql & vbCrLf & ") x" + Case SQLsyntax.SQLServer + sql = "SELECT * FROM (VALUES" & vbCrLf & sql & vbCrLf & ") x" + Case SQLsyntax.PostgreSQL + sql = "SELECT * FROM (VALUES" & vbCrLf & sql & vbCrLf & ") x" + End Select + If headers Then sql = sql & "(" & col_name & ")" + '---------final assignment---------------------- SQLp_build_sql_values = sql End Function @@ -2330,4 +2358,4 @@ Public Function ARRAYp_get_range_string(ByRef r As range) As String() -End Function \ No newline at end of file +End Function