我有一个表[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))
答案 0 :(得分: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))
[edit]
上述查询假设[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'))
但请注意,存储月份数字 非常首选以存储月份名称。将该列保留为文本可能会导致不必要的复杂情况。
<强> [/编辑] 强>
您的VB6代码可以构造这样的字符串,将硬编码值替换为VB函数的结果,如Year()
,Month()
等(并将年份增加到12月 - > 1月)。构建SQL字符串后,可以使用已建立的数据库连接执行它(很可能使用.Execute
之类的方法)。