如何解决Access VBA中使用SQL的For循环问题
我正在处理一个员工数据库,其中有一个培训表格。我有 2000 多名员工不时需要培训。我需要以这种形式创建一批预定数量(即 50)的员工。此外,我需要为每次新培训创建它们。因此,培训与 TrainingID 相关联。我创建了一个 for 循环语句,如下所示:
Dim StartC As Integer
Dim EndC As Integer
Set StartC = Nz(DMax("BatchNo","T25TrnBatch","T25TrnBatch.TrnID= " & Forms!F13NewTraining!TrnId),0) + 1
Set EndC = Me.TBatchtxt
Strsql = "INSERT INTO T25TrnBatch(TrnID,BatchNo) VALUES((Forms!F13NewTraining!TrnId),StartC);"
For BCounter = StartC To EndC
DoCmd.SetWarnings False
DoCmd.Runsql Strsql
DoCmd.SetWarnings True
Next BCounter
(注:TBatchtxt 是需要创建的总批次数)
但是当我运行它时会弹出一个说 StartC。
我还希望结果如下:
BatchNo TrnID
1 101
2 101
3 101
请帮助。 谢谢。
解决方法
您正在执行的 SQL 语句不“知道”您要插入的值 - 您必须将这些值连接到 SQL 字符串中。作为调试的提示,您可以在将值连接起来后在行上放置一个 Debug.Print StrSQL
以查看它的实际情况。
另外,SQL 语句不在循环内,所以值永远不会改变。相反,无需在循环内更改 SetWarnings
- 您只需在循环外更改即可。
Dim StartC As Integer
Dim EndC As Integer
Set StartC = Nz(DMax("BatchNo","T25TrnBatch","T25TrnBatch.TrnID= " & Forms!F13NewTraining!TrnId),0) + 1
Set EndC = Me.TBatchtxt
DoCmd.SetWarnings False
For BCounter = StartC To EndC
StrSQL = "INSERT INTO T25TrnBatch(TrnID,BatchNo) " _
& " VALUES(" & Forms!F13NewTraining!TrnId & "," & BCounter & ");"
DoCmd.RunSQL StrSQL
Next BCounter
DoCmd.SetWarnings True
问候,
,好的,我已经想通了。我在 SQL 中再次插入了 DMax 函数。如下:
Dim BCounter As Integer '''I forgot to mention this line in my question
Dim StartC As Integer
Dim EndC As Integer
StartC = Nz(DMax("BatchNo",0) + 1
EndC = Me.TBatchtxt
DoCmd.SetWarnings False
For BCounter = StartC To EndC
StrSQL = "INSERT INTO Table1Test(TID,BID) " _
& " VALUES(" & Forms!TestForm1!TIDtxt & "," & Nz(DMax("BatchNo",0) + 1 & ");"
DoCmd.RunSQL StrSQL
Next BCounter
DoCmd.SetWarnings True
感谢@Applecore 为我指明了正确的方向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。