kno*_*t22 5 sql-server ms-access vba
下面是这种情况:有一个带有Microsoft Access前端的SQL Server数据库.SQL Server数据库中有一个表,其中一个名为PackID的列定义为VARCHAR(6)NOT NULL(它必须为NOT NULL,因为它是此表的复合主键的一部分).空字符串在PackID列中是合法的.事实上,它们经常发生.当用户在此表的UI中输入数据,并通过PackID字段选项卡时,会显示一条错误消息:"无法将值NULL插入列'PackID';列不允许空值.INSERT失败."
已经尝试过的东西不起作用:
用户在UI中离开行时调用以下VBA代码(Lost Focus事件)
If IsNull(PackID.Value) Then
PackID.Value = ""
End If
Run Code Online (Sandbox Code Playgroud)有没有人知道如何在Access中强制一个空字符串,所以它被解释为SQL Server的空字符串而不是NULL?
在 Access 中的 PackID 属性文本框中设置默认值
=" "
Run Code Online (Sandbox Code Playgroud)
工作了。双引号之间的空格非常重要。留出空格会导致插入失败。在 SQL Server 中,LEN(PackID) 返回 0。例如:
SELECT LEN(''), LEN(' ');
Run Code Online (Sandbox Code Playgroud)
两者都返回 0。看起来 SQL Server 将这两者都视为空字符串。