注册 登录
编程论坛 VFP论坛

求助高手,实现条件预览、打印

qinwh 发布于 2023-07-11 10:33, 917 次点击
笔者做了一个笔录制作软件,要实现单个记录预览、打印,写了以下代码,以被询问人为打印条件,可以实现实现单个记录预览、打印。但同一询问人可能询问多次,这时就出现同一被询问人的所有询问全部预览、打印。
如何实现用数据表中的字段“询问序次”、“被询问人”作为条件,实现预览、打印时只预览、打印“被询问人”第“询问序次”次笔录预览、打印。(笔者尝试用ID自动编码作条件,但系统提示“标准表达式中数据类型不匹配”)
Private Sub Command211_Click()
On Error GoTo Err_Command211_Click
    Dim stDocName As String
    stDocName = "xwbl"
    DoCmd.OpenReport stDocName, acPreview, , "被询问人='" & Me. 被询问人 & "'"
Exit_Command211_Click:
    Exit Sub
Err_Command211_Click:
    MsgBox Err.Description
    Resume Exit_Command211_Click
End Sub
Private Sub Command212_Click()
On Error GoTo Err_Command212_Click
    Dim stDocName As String
    stDocName = "xwbl"
    DoCmd.OpenReport stDocName, acNormal, , "被询问人='" & Me. 被询问人 & "'"
Exit_Command212_Click:
    Exit Sub
Err_Command212_Click:
    MsgBox Err.Description
    Resume Exit_Command212_Click
End Sub
7 回复
#2
qinwh2023-07-11 10:34
软件用ACCESS做的。
#3
吹水佬2023-07-11 11:57
这里用vfp
#4
厨师王德榜2023-07-11 13:53
尝试这样修改:
程序代码:
Private Sub Command211_Click()
On Error GoTo Err_Command211_Click
    Dim stDocName As String, 序次 As String, 查询条件 As String
    stDocName = "xwbl"
    序次 = InputBox("第几次询问(输入整数)?", "输入整数", "1")
    查询条件 = "被询问人='" & Me.被询问人 & "' and 询问序次=" & 序次
    DoCmd.OpenReport stDocName, acPreview, , 查询条件
Exit_Command211_Click:
    Exit Sub
Err_Command211_Click:
    MsgBox Err.Description
    Resume Exit_Command211_Click
End Sub

以上,假定InputBox被正确回答.这是比较简便的解决方法.

如果要更健壮(防止用户乱输入),可以先根据用户输入,生成查询,
当查询条数>0时,再执行打印.
#5
qinwh2023-07-11 15:43
@厨师王德榜 谢谢你的解答。我试了,系统还是提示“标准表达式中数据类型不匹配”
#6
厨师王德榜2023-07-12 12:18
需要知道:
数据表中的字段“询问序次”是什么类型的字段?
#7
qinwh2023-07-24 15:36
字段“询问序次”是文本型字段
#8
qinwh2023-07-24 15:38
改成下面代码,完美解决
Private Sub Command218_Click()
On Error GoTo Err_Command218_Click
Dim strDocName As String
Dim strWhere As String
strDocName = "xcbl"
strWhere = "[ID]=" & Me!ID
DoCmd.OpenReport strDocName, acPreview, , strWhere
Exit_Command218_Click:
    Exit Sub
Err_Command218_Click:
    MsgBox Err.Description
    Resume Exit_Command218_Click
End Sub
1