Access 2013,希望确保我的SQL正在按照我的想法行事

时间:2015-06-19 12:21:30

标签: sql database ms-access ms-access-2013

我的理解是以下SQL是:

(1)从tbl1获取数据并更新tbl2

(2)两者都添加新记录并更新旧记录。

(3)覆盖tbl2中的现有数据

(4)不用空白单元格覆盖tbl2中的数据

我是否在这个问题上脱颖而出,如果是这样的话?

var input= "4250.00";
var output = (original / 100).toFixed(2); // => "42.50" 

EDIT1

因此,要满足条件2和4并让用户轻松保持:

(2)使用APPEND查询添加新的数据行,UPDATE只会更改现有的行。

(4)使用更新查询,如何阻止它覆盖包含空白单元格的现有行中的数据?

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

这样的事情会满足条件4吗?

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

(5)然后将宏附加到命令按钮,以便用户可以同时运行两个查询。

1 个答案:

答案 0 :(得分:2)

  1. no - UPDATE不添加记录;您的查询更新tbl2中的所有记录,其中可以找到tbl1中的相应记录
  2. 否 - 如果tbl1中的相应行/记录有空/空白字段,那么这些将被写入tbl2
  3. OP编辑后,Re#4:

    你可以在SET行上使用Iif(),就像下一个(也许你应该添加Trim()或检查NULL值或类似):

    SET tbl2.[thing1] = Iif(tbl1.[thing1] = '', tbl2.[thing1], tbl1.[thing1])
    

    Iif()是MS Access功能;在适当的SQL中,你必须使用Case语句。