Access和Word 2010合并一条记录,具体取决于单击的子窗体按钮

时间:2013-12-06 12:40:09

标签: vba ms-access ms-word access-vba ms-access-2010

我正在开发一个小程序,当单击Access子窗体中的一个按钮时,需要在Word中创建一个字母。 表单代表一个客户端,在子表单中有该客户端完成的命令列表。接下来每个命令行(包含日期和描述),有一个按钮,触发maccro并创建字母。到目前为止,我在单击一个按钮时成功创建了单词字母,但子表单中的每个命令都在word文档中创建了一个页面。

是否可以仅保留单击按钮旁边的命令而不是所有命令? 我一直在寻找那种命令:

"SELECT * FROM [Fusion]WHERE [id_client] = " & Forms!subform!id_client

但是当我为子表单执行此操作时,我有一个错误,表示该表单不存在...

感谢您的帮助。

- 的修改 -

以下是代码,[Fusion]是我的SQL请求,它获取所有客户端以及与之相关的订单。

Function Publipostage()

Dim mDoc As String
Dim strSQL As String
' Path of the letter
mDoc = "C:\...\LT000006.docx"
strSQL = "SELECT * FROM [Fusion]WHERE [id_client] = " & Forms!FormPatient!id_client

Dim oApp As New Word.Application
Dim oMainDoc As Word.Document
Dim sData As String

   oApp.Visible = True
      sData = "C:\...\Database1.accdb"

   Set oMainDoc = oApp.Documents.Open(mDoc)

      With oMainDoc.MailMerge
          .MainDocumentType = wdFormLetters
          .OpenDataSource Name:=sData, SQLStatement:=strSQL
      End With

   With oMainDoc
       .MailMerge.Destination = wdSendToNewDocument
       .MailMerge.Execute
   End With

   oApp.Activate
   oApp.Documents.Parent.Visible = True
   oApp.Application.WindowState = 1
   oApp.ActiveWindow.WindowState = 1

Set oApp = Nothing
Set oMainDoc = Nothing

Exit Function

Err_Handle:
   Set oApp = Nothing
   Set oMainDoc = Nothing
      MsgBox "An error occurred..." & vbCrLf & vbCrLf & Err.Description
End Function

1 个答案:

答案 0 :(得分:0)

您的问题有点不清楚,但如果按钮位于子窗体上,则可以使用

Me.id_client

如果它在主窗体上,请尝试

Forms("MAIN FORM NAME").Controls("SUB FORM NAME").Form.Controls("id_client")

修改

Me.Parent.Controls("id_client")

引用子表单时,必须首先引用父表单。

如果您只想从列表中打印1个命令,那么您的SQL似乎需要更改为引用该命令。即。

"SELECT * FROM [Fusion] WHERE [id_command] = " & Me.id_command

这只是一个例子,因为我不知道你的表结构。