繁体   English   中英

如何在 MS Access 中使用 VBA 将值插入到数据库表中

[英]How to insert values into the database table using VBA in MS access

我最近开始使用访问权限。 我想在数据库中插入几行; 但是,我被卡住了,因为它抛出了一个错误:

参数太少。

我有一个表测试,其中只有一列名为 start_date 我想插入两个日期之间的所有日期,例如,如果我考虑 1/7/2014 到 3/7/2014 我需要日期为 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 行中引发错误,因为参数太少。 希望有人可以帮助我解决这个问题。 提前致谢

由于您提到您是新手,因此我不得不邀请您首先删除代码中的错误(不完整的 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

您不能像现在这样将两个 SQL 语句合二为一。

您不能“执行”选择查询。

db 是一个对象,您尚未将其设置为任何内容:(例如 set db = currentdb)

在 VBA 中整数类型最多可以容纳 32767 - 我很想使用 Long。

您可能想要更具体地了解要插入的日期:

INSERT INTO Test (Start_Date) VALUES ('#" & format(InDate, "mm/dd/yyyy") & "#' );"
  1. 删除这行代码: For i = 1 To DatDiff For 循环必须有 NEXT 这个词

  2. 此外,删除这行代码: StrSQL = StrSQL & "SELECT 'Test'"因为它让 Access 查看您的最终 SQL 语句,如下所示:

     INSERT INTO Test (Start_Date) VALUES ('" & InDate & "' );SELECT 'Test'

注意 SQL 语句中间的分号(应该总是在最后。顺便说一下,它不是必需的。你也可以省略它)。 此外,分号和关键字 SELECT 之间没有空格

总结:删除上面的这两行代码,您的插入语句将正常工作。 您可以稍后修改代码以满足您的特定需求。 顺便说一句,有时,您必须将日期括在磅符号中,例如 #

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM