1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| Public CurrentConnection As ADODB.Connection
Public RevisionDates() As String
Public Sub OpenConnection()
DSN = "xxxxxxx"
User = "xxxxxxx"
Password = "xxxxxxx"
Set CurrentConnection = New ADODB.Connection
With CurrentConnection
.ConnectionString = "DSN=" & DSN & ";UID=" & User & ";PWD=" & Password & ";"
.CursorLocation = adUseClient
.Open
End With
End Sub
Public Sub CloseConnection()
CurrentConnection.Close
Set CurrentConnection = Nothing
End Sub
Sub ActionButton()
ActiveWorkbook.Sheets("Notes").Activate
Call OpenConnection
Call StoreData
Range("A5:H65536").Select
Selection.ClearContents
Call GetListing
Call RestoreData
Call CloseConnection
Set QueryResults = Nothing
End Sub
Sub StoreData()
current_row = 5
table_size = 0
While ActiveSheet.Cells(current_row, "A") <> vbNullString
If ActiveSheet.Cells(current_row, "G") <> vbNullString Or ActiveSheet.Cells(current_row, "H") <> vbNullString Then
table_size = table_size + 1
End If
current_row = current_row + 1
Wend
ReDim RevisionDates(1 To 3, 1 To table_size)
current_row = 5
r = 1
While ActiveSheet.Cells(current_row, "A") <> vbNullString
If ActiveSheet.Cells(current_row, "G") <> vbNullString Or ActiveSheet.Cells(current_row, "H") <> vbNullString Then
RevisionDates(1, r) = ActiveSheet.Cells(current_row, "A")
RevisionDates(2, r) = ActiveSheet.Cells(current_row, "G")
RevisionDates(3, r) = ActiveSheet.Cells(current_row, "H")
r = r + 1
End If
current_row = current_row + 1
Wend
End Sub
Sub RestoreData()
For i = 1 To UBound(RevisionDates, 2)
current_row = 5
While ActiveSheet.Cells(current_row, "A") <> vbNullString
If RevisionDates(1, i) = ActiveSheet.Cells(current_row, "A") Then
ActiveSheet.Cells(current_row, "G").Value = RevisionDates(2, i)
ActiveSheet.Cells(current_row, "H").Value = RevisionDates(3, i)
current_row = 0
End If
current_row = current_row + 1
Wend
Next i
End Sub
Sub GetListing()
SqlString = "Select id, name, document, block, page, receiptdate from table order by name, document, block, receiptdate"
Dim QueryResults As ADODB.Recordset
Set QueryResults = New ADODB.Recordset
QueryResults.Open SqlString, CurrentConnection, adOpenDynamic, adLockReadOnly
current_row = 5
With QueryResults
Do While Not QueryResults.EOF
ActiveSheet.Cells(current_row, "A").Value = QueryResults.fields(0)
ActiveSheet.Cells(current_row, "B").Value = QueryResults.fields(1)
ActiveSheet.Cells(current_row, "C").Value = QueryResults.fields(2)
ActiveSheet.Cells(current_row, "D").Value = QueryResults.fields(3)
ActiveSheet.Cells(current_row, "E").Value = QueryResults.fields(4)
ActiveSheet.Cells(current_row, "F").Value = QueryResults.fields(5)
QueryResults.MoveNext
current_row = current_row + 1
Loop
End With
QueryResults.Close
End Sub |
Partager