Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共18 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:窗口打印时的选定行问题

1楼
yangming 发表于:2009/6/5 10:36:00
    在窗口打印只能是一行一行的打印,为了一次性打印N行,我做了一段代码,放在打印按钮中,先筛选,然后再打印,可是我发现,凡是做好绑定的控件,可以随着行的移动而改变,而用代码取值的几列不会改变,比如大写金额我是按此代码,放在定时器中的
Dim lbl As WinForm.Label
lbl = e.Form.Controls("Label5")
lbl.Text = CUMoney(dr("金额"))

请看以下筛选打印代码

CurrentTable.Filter = ""
Dim Filter1 As String
With e.Form.Controls("TextBox1")
    If .Value IsNot Nothing Then
        Filter1 = "'*" & .Value & "*'"
    End If
End With
If Filter1 > "" Then
    Tables("支piao").Filter = "付款人账号 Like " & Filter1 & " Or 用途 Like " & Filter1 & " Or 收款人 Like " & Filter1 & " Or 日期 Like " & Filter1 

End If

forms("支piao").Show()
CurrentTable.Position = 0
With Tables("支piao")
       For i AS integer = 0 To  .Rows.Count-1
         Dim doc As PrintDoc
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()
   CurrentTable.Position = CurrentTable.Position + 1
    Next
End With
forms("支piao").Close()
CurrentTable.Filter = ""

2楼
mr725 发表于:2009/6/5 12:03:00
按照don老师的:“选定行→打印→选定行→打印.....: 一样可以一次列印多行。”步骤,我也还没有试,
我想:是否用select来选定行,这样焦点会在该行上,用表事件currentchanged或positionchanged来返回改行的数据到窗口控件中;再用狐爸的:
Dim doc As PrintDoc
Forms("支piao").Open()
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()

一种思路,有空我也试一试。。。。。
3楼
狐哥 发表于:2009/6/5 12:11:00
支piao打印我不敢一次打印多张,还是传统一点好,新增一行,填入内容,预览一张打一张.
我是做了二张表,一表是支piao内容,一表是帐号.
帐号也要可视化选择,因有可能一家公司有多帐户,美元有二个,RMB也有二个,还有HKD的帐号,选错了麻烦就大了.
呵呵,就是再大的公司也不敢一次性打印多张.主要是怕出错.
4楼
mr725 发表于:2009/6/5 12:17:00
我用下面代码可以预览显示三次:(当然每次显示后都要手动关闭预览后自动显示下一行的预览)
Dim doc As PrintDoc
CurrentTable.select(0, 0,0, CurrentTable.cols.Count - 1)
Forms("支piao").Open()
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()

CurrentTable.select(1, 0,1, CurrentTable.cols.Count - 1)
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()

CurrentTable.select(2, 0,2, CurrentTable.cols.Count - 1)
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()
5楼
mr725 发表于:2009/6/5 12:20:00
以下是引用yangming在2009-6-5 10:36:00的发言:

.................

forms("支piao").Show()
CurrentTable.Position = 0
With Tables("支piao")
       For i AS integer = 0 To  .Rows.Count-1
         Dim doc As PrintDoc
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()
   CurrentTable.Position = CurrentTable.Position + 1
    Next
End With
........................................................
用表事件currentchanged或positionchanged来返回该行的数据到窗口控件中后
估计1楼的代码,将CurrentTable.Position = 0 放到 For i AS integer = 0 To  .Rows.Count-1 下一行 改为:
CurrentTable.Position = i 可能可以~!
[此贴子已经被作者于2009-6-5 12:24:10编辑过]
6楼
mr725 发表于:2009/6/5 12:27:00
以下是引用狐哥在2009-6-5 12:11:00的发言:
支piao打印我不敢一次打印多张,还是传统一点好,新增一行,填入内容,预览一张打一张.
.............

这个没有问题的啊~   只要不是象会计凭证那样要连续进纸的就行。支piao等都是手工进纸的!◎◎◎◎

7楼
yangming 发表于:2009/6/5 12:33:00
这个问题我不光是想到做支piao打印的,主要是考虑到其它的窗口设计时的打印,比如套打证书?就有可能是连续打印N张,呵呵,当然,对这样的特殊的打印,还是选一行打一行最为保险,呵呵
8楼
yangming 发表于:2009/6/5 12:37:00

按照第一行或是下一行的代码,是没有问题,我的问题是,如果控件绑定的是某一列,没问题,如果是用代码对某列进行计算时就会出问题,呵呵

9楼
mr725 发表于:2009/6/5 13:16:00
以下是引用yangming在2009-6-5 12:37:00的发言:

.............如果是用代码对某列进行计算时就会出问题,呵呵

我试了,在positionchanged 中将金额大小写用代码计算后,返回到窗口textbox,是可以的,没有出现什么问题。

10楼
yangming 发表于:2009/6/5 15:38:00
我试试,先谢谢mr725老师
共18 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.