ms-access - Access VBA中的任何函数都可以像if(me.Text01.value为null,'null',me.Text01.value)一样工作

我正在编写下面的代码以将控制值插入表中

currentdb.execute "insert into Table (AAA,AAB,AAC) values('"&me.Text1.value&"','"&me.text2.value&"','"&me.text3.value&")"

有时这些文本框之一没有价值。 我可以用一个函数在一个句子中写语句吗?

currentdb.execute "insert into Table (AAA,AAB,AAC) values('"&if(me.Text1.value is null,null,me.Text1.value)&"','"&if(me.text2.value is null, null,me.Text2.value)&"','"&if(me.text3.value is null, null,me.Texte.value)&")"

因为我不想构造许多if else子句。

if isnull(me.Text1.value) then
...
else
...
end if

听起来您正在要求Nz功能

但是,您可以执行参数查询,而不是将文本框的值写入INSERT语句文本中。 而且,该查询语句文本无需根据任何文本框是否包含Null进行更改。

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strInsert As String
strInsert = "INSERT INTO YourTable (AAA, AAB, AAC) VALUES (p1, p2, p3);"
Set db = CurrentDb
Set qdf = db.CreateQueryDef(vbNullString, strInsert)
qdf.Parameters("p1").Value = Me.Text1.Value
qdf.Parameters("p2").Value = Me.Text2.Value
qdf.Parameters("p3").Value = Me.Text3.Value
qdf.Execute dbFailOnError
Debug.Print "rows added: " & db.RecordsAffected

尽管参数很简洁,但您问题的直接答案是我的函数CSql

试试看-如果TextBoxes没有值,它将在表中插入空字符串:

CurrentDb.Execute "INSERT INTO Table (AAA,AAB,AAC) " & _
"VALUES ('" & Nz(Me.Text1.Value, '') & "','" & _
Nz(Me.Text2.Value, '') & " ','" & Nz(Me.Text3.Value, '') & ")"

转载请注明来自askonline.tech,本文标题:ms-access - Access VBA中的任何函数都可以像if(me.Text01.value为null,'null',me.Text01.value)一样工作


 Top