如何在Access的OpenForm中传递SINDEX参数并实现表单打印
解决Access表单传递新增SINDEX参数的问题
1. 修改GW表单按钮的VBA代码
找到GW表单中触发打印的按钮,修改其点击事件代码,新增传递GWINDEX字段值作为SINDEX参数。假设原有代码传递GWKEY和GWKZ两个参数,用分号作为参数分隔符,调整后代码如下:
Private Sub 打印按钮_Click() ' 获取当前记录的GWINDEX值 Dim sIndex As Variant sIndex = Me.GWINDEX.Value ' 拼接所有需要传递的参数(原有参数+新增SINDEX) Dim openArgs As String openArgs = Me.GWKEY.Value & ";" & Me.GWKZ.Value & ";" & sIndex ' 打开Drucken表单并传递参数 DoCmd.OpenForm "Drucken", OpenArgs:=openArgs End Sub
注:如果原有参数使用其他分隔符(如逗号),保持分隔符一致即可,确保后续能正确拆分参数。
2. 修改Drucken表单的VBA代码处理参数
在Drucken表单的Form_Load或Form_Open事件中,接收传递的参数,拆分出SINDEX并过滤对应记录,实现指定记录打印:
Private Sub Form_Load() If Not IsNull(Me.OpenArgs) Then ' 拆分传递的参数数组 Dim argsArray() As String argsArray = Split(Me.OpenArgs, ";") ' 验证参数数量是否符合预期(原有2个+新增1个=3个) If UBound(argsArray) = 2 Then Dim sGWKey As String, sGWKZ As String, sSIndex As Variant sGWKey = argsArray(0) sGWKZ = argsArray(1) sSIndex = argsArray(2) ' 提取新增的SINDEX参数 ' 根据参数过滤表单记录源(注意字段类型匹配:字符串加单引号,数字类型去掉单引号) ' 示例:如果GWINDEX是数字类型,将GWINDEX后的单引号去掉 Me.Filter = "GWKEY = '" & sGWKey & "' AND GWKZ = '" & sGWKZ & "' AND GWINDEX = '" & sSIndex & "'" Me.FilterOn = True ' 执行打印操作(如需预览可替换为DoCmd.OpenReport或DoCmd.PrintPreview) DoCmd.PrintOut End If End If End Sub
注:如果
GWINDEX是数字类型,修改Filter语句时去掉SINDEX值两侧的单引号,避免SQL语法错误。
内容的提问来源于stack exchange,提问作者Danielblb
相关产品推荐
相关产品推荐

