将日期插入MSAccess vba查询

我试图在 MS Acess 中使用 VBA 将当前日期插入表中。日期被插入为 12 / 30 / 1899 无论我尝试什么。任何建议来解决这个问题?这是我的代码

我试图在 MS Acess 中使用 VBA 将当前日期插入表中。日期入为 12 / 30 / 1899 无论我尝试什么。任何建议来解决这个问题?这是我的代码

Dim StrSQL As String
Dim db As Database
Dim InID As Integer
Dim Inputcasedate As String
Dim InputCaseType_Id As Integer
InID = Me.PgmPart_ID
Inputcasedate = Date
InputCaseType_Id = 1
StrSQL = "INSERT INTO CaseNotes (PgmPart_ID,CaseType_ID,CaseDate) " & _
     "VALUES (" & InID & "," & InputCaseType_Id & "," & Inputcasedate & ")"
2

在 MS Access 中,文本日期值必须由磅 / 数字 / hashtag 符号分隔:#

StrSQL = "INSERT INTO CaseNotes (PgmPart_ID,CaseType_ID,CaseDate) " & _
         "VALUES (" & InID & ", " & InputCaseType_Id & ", #" & Inputcasedate & "#)"

但是,与 VBA 一样,Access SQL 维护Date()函数。因此,请在SQL 语句中使用此表达式,并避免使用串联的 VBA 变量。

StrSQL = "INSERT INTO CaseNotes (PgmPart_ID,CaseType_ID,CaseDate) " & _
         "VALUES (" & InID & ", " & InputCaseType_Id & ", Date())"

但是,请考虑 MS Access 的 DAO 通过QueryDefs.Parameters支持的parameterized SQL的行业最佳实践。这样做不需要值分隔符,如字符串的引号或日期的数字,并在应用程序层 (VBA) 和数据库之间对齐数据类型。

Dim StrSQL As String
Dim db As Database
Dim qdef As QueryDef
' PREPARED STATEMENT (NO VBA VARIABLES)
StrSQL = "PARAMETERS ParamInID Long, ParamInputCaseType_Id Long; " & _
         "INSERT INTO CaseNotes (PgmPart_ID, CaseType_ID, CaseDate) " & _
         "VALUES (ParamInID, ParamInputCaseType_Id, Date());"
' INITIALIZE DAO OBJECTS
Set db = CurrentDb
qdef = db.CreateQueryDef("", StrSQL)
' BIND PARAMETERS
qdef!ParamInID = Me.PgmPart_ID
qdef!ParamInputCaseType_Id = 1
' EXECUTE ACTION
qdef.Execute
Set qdef = Nothing: Set db = Nothing

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(496)
替换.nfo文件中的文本
上一篇
Oracle数据库性能调优
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(26条)