您好 我搜索了这个问题的答案,但在这里找不到任何答案。 我正在使用Access 2010。 基本上,我有一个包含报告的表格,报告有一个修订号。 我找到了一个关于如何复制字段并仅更新其中一个字段的答案,但它看起来有点像这样:
INSERT INTO reports (fieldA, fieldB, fieldC, revision, fieldD, fieldE)
SELECT fieldA, fieldB, fieldC, 2, fieldD, fieldE
FROM reports
WHERE <somecondition to select which report to copy>
事情是我有很多字段,所以我想要一些看起来更像这样的东西:
INSERT INTO reports
SELECT *, revision=2
FROM reports
WHERE <somecondition to select which report to copy>
我知道代码不正确;它只是描述我想要的东西。就像在,没有一个巨大的SQL行列出所有字段的方法,但只有我想要更改的字段。 (我想在同一张表中保留以前版本的副本)
提前感谢任何可以提供帮助的人:)
答案 0 :(得分:0)
我在这个问题中找到了一个有趣的替代方案,使用临时表 SQL clone record with a unique index
DROP TABLE #tmp_MyTable
SELECT * INTO #tmp_MyTable
FROM MyTable
WHERE MyIndentID = 165
ALTER TABLE #tmp_MyTable
DROP Column MyIndentID
INSERT INTO MyTable
SELECT *
FROM #tmp_MyTable
我可以这样做,删除主键并更新修订版,然后将其复制回我的表。
不是我正在寻找的解决方案,而是另一种方式。
编辑:
尝试此解决方案但没有成功: VBA告诉我“SELECT INTO指令不允许有多个值的字段(运行时错误3838)”的内容。
我有一个OLE字段和一个附件字段,我怀疑这是错误的原因。但我需要保留它们......:/
答案 1 :(得分:0)
我很确定你不能在MS Access或任何其他SQL版本中执行此操作。您可能已经知道,您可以使用存储过程(在Access中称为存储查询),它将您的修订号和报告的ID作为参数复制(或其他一些WHERE条件)。这样,您仍然必须指定所有字段,但是只在数据库中而不是在代码中执行一次。这里有一个例子:
http://www.stardeveloper.com/articles/display.html?article=2001050101&page=1
HTH!