Access SQL - 插入带有空字段的记录?

Posted

技术标签:

【中文标题】Access SQL - 插入带有空字段的记录?【英文标题】:Access SQL - Insert records with null fields? 【发布时间】:2016-05-24 07:32:07 【问题描述】:

我有将记录从一个表插入到另一个表的 Insert 语句。 SQL 有效,但 WHERE 子句中的 If 字段为 Null 无效。没有错误,只是没有插入任何内容。我怎样才能解决这个问题 ?这就是我所拥有的(两个表中的字段名称相同 - 我。[Serial_No] 代表绑定字段 - 文本框:

dim SQL as String

 SQL = "INSERT INTO Table1 (Serial_No,Name,Description)" & _
       "SELECT Table2.Serial_No, Table2.Name, Table2.Description" & _
       " FROM Table2" & _
       " WHERE Table2.Serial_No='" & Me.[Serial_No] & "'"

DoCmd.RunSQL SQL

【问题讨论】:

Serial_No 是字符串还是数字? 如果您的serial_no 字段为空、或为空,那么您没有选择要插入到table1 的任何记录 @trincot,Serial_No 是文本字段。 @LiamH,所以您建议选择记录 ID,而不是字段?...但我的问题是 Table2 没有自动编号字段... 当输入值为 Null 时,您希望插入什么? 【参考方案1】:

我不确定这是否是您需要的答案,看起来不太合乎逻辑。

如果namedescription 绝不是空值,则确保它们是表中的唯一复合键。您可以在表格设计视图的索引按钮中创建这些唯一键。然后您可以使用其他字段值查找serial_no。对我来说似乎有点啰嗦,但应该给你你需要的记录。

dim SQL as String
dim varSerialNo as string

varSerialNo = dlookup("Serial_No", "table2", "Name='" & me.Name & "' AND Description='" & me.description & "'")

 SQL = "INSERT INTO Table1 (Serial_No,Name,Description)" & _
       "SELECT Table2.Serial_No, Table2.Name, Table2.Description" & _
       " FROM Table2" & _
       " WHERE Table2.Serial_No='" & varSerialNo & "'"

DoCmd.RunSQL SQL

【讨论】:

太好了,它可以工作!!...我还想出了更简单的方法。我可以在 Table2 中添加自动编号字段 (ID_Field),然后将 WHERE 子句更改为:" WHERE Table2.ID_Field=" & Me.[ID_Field]....这种方式也有效,如果你不这样做也没关系'表单上没有 ID_Field,当您使用记录选择器选择记录时,Access 会正确选择记录,因为它永远不会为空。感谢您的帮助!! 是的,这可能会更简单,除了您提到的那些字段之外,我不确定您还有哪些字段

以上是关于Access SQL - 插入带有空字段的记录?的主要内容,如果未能解决你的问题,请参考以下文章

返回带有零而不是空值的 Access 记录集

Sql Server 2005中当两个整型字段中一个为空时如何比较大小?

将 null 插入 MS Access 中的日期/时间字段-

从 SQL Server 插入 Access

ACCESS/VBA:插入自动编号字段返回恼人的警告

使用带有 Azure 链接表的 Access 插入 SQL 失败