【发布时间】:2017-01-22 16:20:40
【问题描述】:
我有一个需要使用表单更新表的数据库表。 但是,表格中的所有字段都不必强制填写。 我正在编写用于插入的以下 VB 代码但是我收到一条错误消息,指出语句中存在语法错误。据我所知,这是因为变量中的空值。我知道我需要对所有空值使用 DBNull.Value。 这里的事情是有太多的字段来检查值是否为空。 有没有人建议是否有办法对输入的值进行批量检查?
VB代码:
Dim StrSQL As String
Dim StrSQL1 As String
Dim tktID As Variant
Dim Assi As Variant
Dim reopened As Variant
Dim valid As Variant
Dim Reopenreason As Variant
Dim ReassignmentAG As Variant
Dim RBSCollab As Variant
Dim SMEconf As Variant
Dim Cloabag As Variant
Dim smeName As Variant
Dim Updat As Variant
Dim Closed As Variant
Dim iss As Variant
Dim ana As Variant
Dim res As Variant
Dim rVariant As Variant
' Assigining values
tktID = Ticket_number.Value
reopened = Ticket_Reopened.Value
valid = Valid_Reopen.Value
Assi = Assiginee.Value
Reopenreason = Reopen_reason.Value
ReassignmentAG = Reassignment_AG.Value
RBSCollab = RBS_Collab.Value
SMEconf = CkBxSMEConfirmation.Value
Cloabag = Collabarated_AG.Value
smeName = SME_Name.Value
Updat = Update.Value
Closed = Issue_Closed.Value
iss = Issue.Value
ana = Analysis.Value
res = Resolution.Value
rdate = Resolve_date.Value
'Insert values into the tables
StrSQL = "INSERT INTO Updates (TicketID,Assiginee,ReassignmentAG,RBSCollab,CollabAG,SMEconfirmation,SMEName,Update,IssueClosed,Issue,Analysis,Resolution,ResolveDate,TicketReopened,ValidReopen,ReopenReason) VALUES ('" & tktID & "','" & Assi & "','" & ReassignmentAG & "','" & RBSCollab & "','" & Cloabag & "','" & SMEconf & "','" & smeName & "','" & Updat & "','" & Closed & "','" & iss & "','" & ana & "','" & res & "','" & rdate & "','" & reopened & "','" & valid & "','" & Reopenreason & "' ) "
DoCmd.RunSQL StrSQL
提前感谢您的帮助
【问题讨论】:
-
最好学会使用参数来避免sql注入和格式化问题。
-
我有很多字段,你可以。我不认为使用参数会有所帮助
-
你误解了为什么要使用参数。考虑一下
Reopenreason或foo'); DROP TABLE Updates; --会发生什么。 -
会有帮助的。它将改进您的代码。它将防止发生意外。它会让你成为一个更好的程序员。
-
或者您可以简单地使用绑定形式 shrug。它根本不需要任何代码,并且知道如何处理 NULL 值——对于必填字段(抛出错误)和非必填字段(将它们留空)。
标签: sql ms-access vba ms-access-2013