目前我有这个:
Dim rstWs As Worksheet
Dim strSQL As String
Sub test()
Dim vDB As Variant, vR()
'vDB is static variant, vR() is Dynamic Variant
Dim Ws As Worksheet, toWs As Worksheet
Dim i As Long, j As Integer, n As Long
Dim r As Long, c As Integer
Dim wsName As String
Set Ws = ActiveSheet ' Sheets("Special Name")
vDB = Ws.Range("a1").CurrentRegion
r = UBound(vDB, 1)
c = UBound(vDB, 2)
For i = 2 To r
For j = 3 To c
If vDB(i, j) <> 0 Then
n = n + 1
ReDim Preserve vR(1 To 3, 1 To n) 'get data with Tranpose type
vR(1, n) = vDB(i, 1)
vR(2, n) = vDB(i, j)
vR(3, n) = vDB(1, j)
End If
Next j
Next i
Set toWs = Sheets.Add 'Sheets("Results")
With toWs
.UsedRange.Clear
.Range("a1").Resize(1, 3) = Array("Item No", "Qty", "Month")
.Range("a2").Resize(n, 3) = WorksheetFunction.Transpose(vR)
End With
Set rstWs = Sheets.Add
wsName = toWs.Name
strSQL = "Select [Item No], sum(Qty) as Qty "
strSQL = strSQL & "FROM [" & wsName & "$] "
strSQL = strSQL & "GROUP BY [Item No] "
DoSQL
End Sub
Sub DoSQL()
Dim Rs As Object
Dim strConn As String
Dim i As Integer
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=Excel 12.0;"
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open strSQL, strConn
If Not Rs.EOF Then
With rstWs
.Range("a1").CurrentRegion.ClearContents
For i = 0 To Rs.Fields.Count - 1
.Cells(1, i + 1).Value = Rs.Fields(i).Name
Next
.Range("a" & 2).CopyFromRecordset Rs
End With
End If
Rs.Close
Set Rs = Nothing
End Sub
Serializar:
byte buf[7];
int cant = Serializar<Joystick>(JOYSTICK, genuino_joystick, buf);
如何在Serializar函数中包含buf的大小定义?我只想在主通话中添加一个指针。 Serializar函数已经知道大小了。