访问,更新不使用空白单元格覆盖数据的查询

时间:2015-06-19 14:41:30

标签: sql database ms-access

使用此更新查询,如何防止它覆盖具有空白单元格的现有行中的数据?

UPDATE tbl1
INNER JOIN tbl2 
ON tbl1.thing0 = tbl2.thing0 
SET tbl2.[thing1] = tbl1.[thing1], tbl2.[thing2] = tbl1.[thing2], tbl2.[thing3] = tbl1.[thing3];

我让用户实时现场更新表格,并担心远程用户在连接后更新表格会用一堆空白单元格覆盖现场用户数据。

如果我将它添加到最后,这样的东西会起作用吗?

WHERE Not Null;

Hansup的Edit1

在这种情况下为空意味着在tbl1的row1上,其中,Onsite用户在第2列到第7列中输入了数据(在上面的代码中编辑了事情)。非现场用户今天在此行中没有输入任何内容。非现场用户使用上面的查询来更新tbl1。由于第2列到第7列在他的桌子上是空的,我不希望他的工作用空白单元格覆盖Onsite用户的编辑。

Edit2对于HanSup和luk2302

每一行都是一个项目。项目由一个用户创建,然后多个用户在其生命周期内更新项目。因此,Picture Row 1,thing1,作为已输入的客户名称。现在,现场用户进行了一些更新。非现场用户对此行不进行任何操作,但随后会运行更新查询。

非现场用户的更新应该只向现有行添加信息,但不能删除任何数据。如果它用数据覆盖数据,那我很好。我们只记录联系信息,并在达到某些里程碑时。只要数据到达那里。我并不担心谁输入它。

1 个答案:

答案 0 :(得分:1)

原谅格式化,我正在通过手机接听...

您可以替换SET的元素,例如:

SET tbl2。[thing1] = Iif(tbl1。[thing1]为null,tbl2。[thing1],tbl1。[thing2])

这样,如果你的新值为null,那么将使用另一个值。

请注意null和空字符串的可能不同行为,具体取决于您的用例......但您也可以更改条件以检查空字符串。