以下是引用cpayinyuan在2009-3-30 10:25:00的发言:
这个对打印有什么作用呢?一般情况下, DataList中要打印的行是临时选取的,没有什么规定,所以 DataList中并不需要筛选.
我看了一下,前面几位老兄提的方案应该是可以的.
'选定你所要选定的区域,筛选代码你可以参照老六的窗口列子的筛选代码
Dim Filter As String
With e.Form.Controls("textbox1")
If .Value IsNot Nothing Then
Filter = "列名 = '" & .Value & "'"
End If
End With
If Filter > "" Then
Tables("表名").Filter = Filter
END IF
'这个是表筛选后,在datalist中显示和表一样内容的代码
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")
dst .RowFilter = Tables("表名").Filter
'筛选后全部选定区域
With Tables("表名")
.Select(0,0, .Rows.Count - 1, .Cols.Count - 1)
End With
'打印代码
Dim Book As New XLS.Book(ProjectPath & "Attachments\报表名字.xls") '打开模板
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build() '生成细节区
Book.Save("D:\release\reports\报表名字.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "D:\release\reports\报表名字.xls"
Proc.Verb = "Print" '加上这个可以直接打印,去掉只能预览
Proc.Start()