技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 21536
|
本帖最后由 todaynew 于 2013-7-19 17:20 編輯
版友kelly同志問:如何選擇字段打印報(bào)表?這個(gè)問題直接在Access動(dòng)態(tài)創(chuàng)建報(bào)表應(yīng)該可以實(shí)現(xiàn),或許用PrintOut也可實(shí)現(xiàn)(不敢肯定PrintOut對(duì)隱藏列可以不輸出),是否存在其他直接輸出報(bào)表的方法不得而知。不過我是編好將這類問題導(dǎo)入到Excel中處理,原因在于其靈活性大很多。
導(dǎo)出一個(gè)表或者查詢中的部分?jǐn)?shù)據(jù)到EXCEL表中,其方法也有很多。無論如何處理,首先必須要構(gòu)造出一個(gè)SQL查詢語句。根據(jù)窗體的RecordSource屬性,我們可以得到From子句的部分。而根據(jù)窗體的Filter屬性,我們可以得到Where子句的部分。如果是輸出所有字段有這兩部分就足夠了。但是要輸出部分字段,就需要想辦法得到Select子句的部分了。
Private Function GetSql(ByVal OpA As String, listctrl As ListBox) As String
'功能:返回SQL字符串
'參數(shù):OpA -- Me.OpenArgs (寫為:me.name & "子窗體控件名稱")
' listctrl--存放所選字段的ListBox控件
Dim frm As Form
Dim A
Dim ssql As String, tb As String, wh As String
Dim i As Long
If listctrl.ListCount > 0 Then
A = Split(OpA, ";")
Set frm = Forms(A(0)).Controls(A(1)).Form
tb = Replace(frm.RecordSource, ";", "") 'From子句部分
wh = "True "
If Nz(frm.Filter, "") <> "" Then
wh = wh & " and " & frm.Filter 'Where子句部分
End If
ssql = "select "
For i = 0 To listctrl.ListCount - 1
ssql = ssql & listctrl.Column(0, i) & "," '拼接Select子句部分
Next
ssql = Left(ssql, Len(ssql) - 1) 'select子句部分
ssql = ssql & " from (" & tb & ") where " & wh
Else
ssql = ""
End If
GetSql = ssql
End Function
本例描述了處理這個(gè)問題的一種方法,其中【輸出窗體】是相對(duì)獨(dú)立的,可以拷貝到任何系統(tǒng)中使用。
示例文件:
視圖:
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)
x
|