0

我有一个包含以下列的表 [Emp]:

EmpID、
EmpName、
EmpLastName、
EmpSalary、
月、
年、
ModDate

我想使用上个月的大约 300 条记录在同一个表中创建 300 条新记录,除了要在插入语句期间修改的月份属性外,其值相同。

为此,我想使用 MS Access + vb6。

如果您能帮助我解决这个问题,我将不胜感激。

我试图执行的查询如下:

INSERT INTO Emp ( EmpID, EmpName, EmpLastName, EmpSalary, [Month], [Year], ModDate)
SELECT Emp.EmpID, Emp.EmpName, Emp.EmpLastName, Emp.EmpSalary, 4 AS Expr1, Emp.[Year], Now() AS Expr2
FROM Emp
WHERE (((Emp.[Year])=2013) AND ((Emp.[Month])=3))
4

1 回答 1

0

您想要实现的本质是如下查询,它选择 2013 年 3 月的记录并将它们插入到 2013 年 4 月的同一个表中:

INSERT INTO Emp ( EmpID, EmpName, EmpLastName, EmpSalary, [Month], [Year], ModDate )
SELECT Emp.EmpID, Emp.EmpName, Emp.EmpLastName, Emp.EmpSalary, 4 AS Expr1, Emp.[Year], Now() AS Expr2
FROM Emp
WHERE (((Emp.[Year])=2013) AND ((Emp.[Month])=3))

[编辑]

上面的查询假设 [Month] 是一个数值列。如果 [Month] 是 Text 列,则相应的查询将是

INSERT INTO Emp ( EmpID, EmpName, EmpLastName, EmpSalary, [Month], [Year], ModDate )
SELECT Emp.EmpID, Emp.EmpName, Emp.EmpLastName, Emp.EmpSalary, 'April' AS Expr1, Emp.[Year], Now() AS Expr2
FROM Emp
WHERE (((Emp.[Year])=2013) AND ((Emp.[Month])='March'))

但是请注意,存储月份数字比存储月份名称更可取。将该列保留为 Text 可能会导致不必要的复杂化。

[/编辑]

您的 VB6 代码可以构造这样的字符串,将硬编码的值替换为 、 等 VB 函数的结果Year()Month()并在 12 月->1 月递增年份)。构建 SQL 字符串后,您可以使用已建立的数据库连接执行它(很可能使用类似的方法.Execute)。

于 2013-03-26T09:35:56.107 回答