我正在尝试使用这个小小的vba代码来填写我正在整理的报告中的一些文本框,而没有任何运气在谷歌上找到任何东西。
Function GetTotals()
Dim db As DAO.Database
Dim qdef As DAO.QueryDef
Dim rst As DAO.Recordset
10 Set db = DBEngine(0)(0)
20 Set qdef = db.QueryDefs("FoodLogDetails")
30 Set rst = qdef.OpenRecordset(dbOpenDynaset)
40 If rst.RecordCount = 0 Then GoTo Cleanup
50 rst.MoveFirst
60 Do Until rst.EOF
70 Select Case qdef![WhichMeal]
71 Case "Breafast" 'if matched add to the textbox and so on for the others
80 txtBrkCalTot = txtBrkCalTot + TotalCalories 'total calories +
90 Case "AM Snack"
100 Case "Lunch"
110 Case "PM Snack"
120 Case "Dinner"
130 Case "Evening Snack"
140 End Select
150 rst.MoveNext
160 Loop
170 Debug.Print WhichMeal
Cleanup:
180 db.Close
190 qdef.Close
200 rst.Close
210 Set qdef = Nothing
220 Exit Function
End Function
我尝试了不同的东西并且不断出现不同的错误。我使用当前剪辑得到的是第30行,运行时错误#3061 - 参数太少。预期1.我正在使用我的记录集的查询和报告所绑定的相同的查询。我已在我的应用程序的其他部分使用此代码,它工作正常。但它与表格和子表格一起使用而不是报告。我想这可能与它有关但不确定。我甚至尝试过 - 设置rst = db.OpenRecordset(“FoodLogDetails”) - 没有querydef部分,具有相同的错误消息。如果有人可以帮助我肯定会很感激哦!我忘记了。我正在使用2013年访问权限。
史蒂芬
答案 0 :(得分:0)
我建议的解决方案非常简单。我只是使用缩放为我的文本框并粘贴在以下内容中:
=round(Sum(IIf([WhichMeal]="Breakfast",[TotalCalories],null)),0)
哪一餐必须与所选信息相匹配"早餐"如果是这样的话,总卡路里的总和就放在文本框中。我为另外11个文本框执行了此操作以获取不同的值。我将数字四舍五入以防止它们超出我文本框的界限,我不会详细了解它的外观,只是各种令人讨厌的东西。所以没有必要使用vba代码。建议这个的人救了我很多警告,我非常感谢这个人。很抱歉没有把这个添加到我的上一篇文章中,只是我很高兴我得到了修复,并且在最后一分钟,我只是思考并没有思考。
所以Yall远离麻烦
史蒂芬