我几天都在网上寻找完成以下方法的方法,我祈祷一些专家可以帮我搞清楚!我有一个客户端想要根据查询结果通过拉入各种文本语句来动态构建运送“批准”电子邮件。发货详细信息将在一个表中,并且语句将在另一个表中。每批货物可能会返回多个报表(例如,几个培训报表,几个一般报表)。需要将这些语句中的每一个添加到备忘单元(创建用于保存每种类型的语句)中,然后将其提取到该货件的电子邮件模板中。表结构如下。
Shipment_Table
*ID
*Shipment Type - Query Criteria
*Material Category - Query Criteria
*Permit Required - Query Criteria
*General Statement (memo field to hold all general statements that match criteria)
*Training Statement (memo field to hold all training statements that match criteria)
*Approval Statement (memo field to hold all approval statements that match criteria)
Statement_Table
*Statement Type (e.g. General, Training, Approval)
*Shipment Type - Query Criteria
*Material Category - Query Criteria
*Permit Required - Query Criteria
我成功地有一个查询(标题为StatementSearch),它连接两个并引入正确的语句。我无法弄清楚如何获取多个查询结果并将它们附加到发货的备忘单元格中。
接近的代码如下。它似乎正确地运行我的查询并返回结果,但是没有将结果放入我的测试记录的备注字段中(ID = 1只是为了测试代码,它最终将运行一个表单并且语句将生成点击一个按钮)。
我希望这不会太混乱!
Option Explicit
Function StatementUpdate()
Dim dbs As DAO.Database
Dim rstStatements As DAO.Recordset
Dim rstCBG As DAO.Recordset
Set dbs = CurrentDb()
Set rstStatements = dbs.OpenRecordset("StatementSearch")
Set rstCBG = dbs.OpenRecordset("select [St_General]from
[Cross_Border_Grid_Table] where [ID]= 1")
rstCBG.MoveFirst
'loop through each record in the CBG that matches select query
Do Until rstCBG.EOF
rstStatements.MoveFirst
Do Until rstStatements.EOF
rstCBG.Edit
rstCBG![St_General] = rstStatements
rstCBG.Update
rstStatements.MoveNext
Loop
rstCBG.MoveNext
Loop
rstCBG.Close
rstStatements.Close
Set rstStatements = Nothing
Set rstCBG = Nothing
Set dbs = Nothing
Debug.Print "Done"
End Function
答案 0 :(得分:0)
试试这个循环
Dim concStatement as String
rstCBG.MoveFirst
Do Until rstCBG.EOF
concStatement = ""
rstStatements.MoveFirst
Do Until rstStatements.EOF
concStatement = concStatement & vbCrLF & rstStatements(0)
rstStatements.MoveNext
Loop
rstCBG.Edit
rstCBG![St_General] = concStatement
rstCBG.Update
rstCBG.MoveNext
Loop
我认为,你的" StatementSearch"是一个根据ID = 1查找所有语句的查询。如果有多个记录集" rstCBG",则必须在每个循环步骤中重新查询rstStatements。
修改强>
将rstStatement更改为rstStatement(0)。
同样rstStatements(0)
可能是错误的:将index = 0更改为查询中字段的索引。如上所述,查询在您的问题中不可见,因此我不知道正确的索引号。