2013-03-26 21 views
0

我有一個表[的Emp]有以下的列:我想從表中選擇300行,並再次將它們插入到同一表

的EmpID,
EmpName,
EmpLastName,
EmpSalary,
月,
年,
創建ModDate

我要使用約300記錄從上月創造300個新的記錄到同一個表與sa除了我想在插入語句中修改的月份屬性之外的值。

我想爲此使用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

對「300」價值有重要意義嗎?還是僅僅是(近似)員工數量?換句話說,你是否想要複製*全部*員工的記錄,即使其中有300個以上的記錄? – 2013-03-26 09:09:19

+0

是的,你的對,它只是大約員工人數。 – Claude 2013-03-26 09:18:53

+0

我想要實現的是從預覽月複製所有員工,當前假設從1月複製所有員工,將月份修改爲Febrary並將它們全部插入到同一個表中 – Claude 2013-03-26 09:21:04

回答

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)) 

[編輯]

上面的查詢假設[月]是Numeri c欄。如果[月]是一個文本列,則相應的查詢將然而

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()等取代了硬編碼值(並遞增一年December- > 1月)。一旦你構建了SQL字符串,你可以使用你建立的數據庫連接來執行它(最有可能使用像.Execute這樣的方法)。

+0

謝謝你的幫助。我會測試你的建議。至於年份和月份,我將使用vb文本框或組合框輸入這些值。 – Claude 2013-03-26 09:48:53

+0

當我嘗試執行查詢時,收到錯誤「標準表達式中的數據類型不匹配」 – Claude 2013-03-26 10:49:45

+0

編輯您的問題以顯示您正在執行的查詢 – 2013-03-26 10:54:46

相關問題