|
本帖最后由 todaynew 于 2013-7-19 17:20 编辑
版友kelly同志问:如何选择字段打印报表?这个问题直接在Access动态创建报表应该可以实现,或许用PrintOut也可实现(不敢肯定PrintOut对隐藏列可以不输出),是否存在其他直接输出报表的方法不得而知。不过我是编好将这类问题导入到Excel中处理,原因在于其灵活性大很多。
导出一个表或者查询中的部分数据到EXCEL表中,其方法也有很多。无论如何处理,首先必须要构造出一个SQL查询语句。根据窗体的RecordSource属性,我们可以得到From子句的部分。而根据窗体的Filter属性,我们可以得到Where子句的部分。如果是输出所有字段有这两部分就足够了。但是要输出部分字段,就需要想办法得到Select子句的部分了。
Private Function GetSql(ByVal OpA As String, listctrl As ListBox) As String
'功能:返回SQL字符串
'参数: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
本例描述了处理这个问题的一种方法,其中【输出窗体】是相对独立的,可以拷贝到任何系统中使用。
示例文件:
视图:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|