以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码的循环执行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=180895)

--  作者:15666282205
--  发布时间:2022/10/19 10:03:00
--  代码的循环执行
老师,需要打印工艺卡,打印多份,需要循环执行打印代码,我不会设计循环,麻烦您看看。谢谢指导!
if 如果“零件目录表”的“”选择“列有选中的 then
\'-----------------------------循环开始------------------------------------
Tables("零件目录表").Filter = "选择 = True"
\'-----------------------------打印按钮------------------------------------
Dim cmb1 As winform.combobox = e.Form.controls("cmbprinters")
Dim doc1 As PrintDoc = e.Form.GernatePrintDoc()
If cmb1.value <> "默认打印机" Then
    Doc1.printername = cmb1.value
End If
doc1.Print()
\'-----------------------------反选-------------------------------------
Tables("零件目录表").current("选择") = False
Tables("零件目录表").current("打印") = True
if 如果“零件目录表”的“”选择“列没有有选中的 then
Forms("打印工艺卡").Close()
[此贴子已经被作者于2022/10/19 10:04:23编辑过]

--  作者:有点蓝
--  发布时间:2022/10/19 10:17:00
--  
参考:http://www.foxtable.com/webhelp/topics/0225.htm
比如循环5次
Dim cmb1 As winform.combobox = e.Form.controls("cmbprinters")
Dim i As Integer
For 
i = 1 to 5
Dim doc1 As PrintDoc = e.Form.GernatePrintDoc()
If cmb1.value <> "默认打印机" Then
    Doc1.printername = cmb1.value
End If
doc1.Print()
Next

Tables("零件目录表").current("选择") = False
Tables("零件目录表").current("打印") = True
Forms("打印工艺卡").Close()


--  作者:15666282205
--  发布时间:2022/10/19 10:48:00
--  
老师,这个方法不完美。打印的行数是随机的,不是固定的。要先判断“选择”列是否有选中的,如果有就打印,再判断有没有,这样循环,没有就退出。如何判断逻辑列是否有选中行呢?
--  作者:chnfo
--  发布时间:2022/10/19 10:53:00
--  
for i as integer = 0 to tables("A").rows.count 

next

--  作者:chnfo
--  发布时间:2022/10/19 10:55:00
--  
或者
for i as integer = 0 to tables("A").rows.count - 1
dim r as row = tables("A").rows(i)
if r("选择") = true then 
\'\'打印代码
end if 
next

--  作者:15666282205
--  发布时间:2022/10/19 10:58:00
--  
老师,这样也不可以。因为需要打印的行是随机在“选择”列选中的,没选中的就不打印,最好先判断是否选中才行。我看看第二次的代码,谢谢
[此贴子已经被作者于2022/10/19 10:58:41编辑过]

--  作者:有点蓝
--  发布时间:2022/10/19 10:58:00
--  
Dim cmb1 As winform.combobox = e.Form.controls("cmbprinters")
Tables("零件目录表").filter = "选择=true"
For each r as row in Tables("零件目录表").rows
Tables("零件目录表").position = r.index
Dim doc1 As PrintDoc = e.Form.GernatePrintDoc()
If cmb1.value <> "默认打印机" Then
    Doc1.printername = cmb1.value
End If
doc1.Print()
r("选择") = False
r("打印") = True
Next

Forms("打印工艺卡").Close()


--  作者:15666282205
--  发布时间:2022/10/19 11:08:00
--  
蓝老师的代码完美解决,谢谢!也谢谢fo老师!