我最近开始使用访问权限。我试图在数据库中插入几行;但是,我被困了,因为它引发了一个错误:
参数太少。
我有一个表测试,其中只有一列名为start_date我想插入两个日期之间的所有日期,例如,如果我考虑2014年1月7日至2014年3月7日我需要日期为1/7 / 2014,2 / 7 / 2014,3 / 7/2014在我的表中,但我插入的代码有问题如下
Private Sub createRec_Click()
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
Dim db As database
InDate=Me.FromDateTxt
'here I have used a code to find out the difference between two dates that i've not written
For i = 1 To DatDiff
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
StrSQL = StrSQL & "SELECT 'Test'"
db.Execute StrSQL
db.close
i=i+1
next i
End Sub
我的代码在Db.Execuite StrSQL行中抛出一个错误 因为参数太少。 希望有人可以帮我解决这个问题。 在此先感谢
答案 0 :(得分:10)
因为你提到你是一个很新的访问,我不得不邀请你先删除代码中的错误(不完整的for循环和SQL语句)。否则,您肯定需要for循环在某个范围内插入日期。
现在,请使用以下代码将日期值插入表格中。我已经测试了代码并且它有效。你也可以尝试一下。之后,添加for循环以适合您的场景
Dim StrSQL As String
Dim InDate As Date
Dim DatDiff As Integer
InDate = Me.FromDateTxt
StrSQL = "INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSQL
DoCmd.SetWarnings True
答案 1 :(得分:1)
你不能像你一样运行两个SQL语句。
你不能执行"选择查询。
db是一个对象,你没有把它设置为任何东西:(例如set db = currentdb)
在VBA中,整数类型最多可以容纳32767 - 我很想使用Long。
您可能希望对插入日期更具体一些:
INSERT INTO Test (Start_Date) VALUES ('#" & format(InDate, "mm/dd/yyyy") & "#' );"
答案 2 :(得分:0)
总结: 删除上面的那两行代码,你的insert语句将正常工作。您可以稍后修改代码以满足您的特定需求。顺便说一句,有时候,你必须用#(p /)这样的磅标记括起日期