2010-09-14 36 views
0

我有兩個表:部門(Dept_ID,Dept_Name)。和表Employee(Empl_ID,Empl_Name,Salary,Dept_ID)。這些ID是自動編號。 表Employee中的Dept_ID是引用表部門中的Dept_ID的外鍵。現在,我想使用連接到Access 2003數據庫的Excel VBA插入一條記錄到員工表。如何獲得Dept_ID的正確值並將其插入到表Employee中,因爲用戶只會提交屬於提交的員工的Dept_Name?我用一個簡單的插入追加查詢:插入一個外鍵。 Excel VBA和MS Access 2003

insert into table Employee (Empl_Name,Salary,Dept_ID) 
values (Parameter_Empl_Name, Parameter_Salary, Parameter_Dept_ID) 

我除了Parameter_Dept_ID的這referes外鍵DEPT_ID值所有的值。我不知道如何生成正確的Dept_ID並將其插入表Employee,因爲我知道該ID的Dept_Name。 問題是否清楚? 請幫忙,

回答

0

我猜想最好的辦法是先查找部門ID,這應該讓你檢查它是否存在並提示用戶,如果沒有,那麼, :

Set rs=CreateObject("ADODB.Recordset") 

sSQL="SELECT DeptID FROM Depts WHERE DeptName='" & <Cell with Dept Name> & "'" 

rs.Open sSQL, <connection> 

DeptID=rs!DeptID 
+0

感謝Remou。我首先想到了這一點,但我認爲這可能很耗時。我可以很容易地通過創建存儲過程來使用SQL服務器來執行此操作。因爲在SQL服務器中,它允許您在一個查詢(存儲過程)中編寫多個select語句,在那裏我可以使用第一個select語句執行查找操作並插入第二個語句。但是我試圖在MS Access中應用這個並沒有成功。你知道我可以在Access Query中使用多個語句的方法嗎?例如,有沒有辦法在Access中的一個查詢中執行以下操作: – guest1 2010-09-14 16:31:55

+0

select Department_Dept_ID = Dept_ID Dept_Name =「Finance」然後在新行中(在同一個查詢中)我寫入:insert into table Employee values(「 Mike',2000,Parameter_Dept_ID) – guest1 2010-09-14 16:33:29

+1

不,但你應該能夠創建一個插入查詢,關閉我的頭頂部:「INSERT INTO Employee(Empl_Name,Salary,Dept_ID)SELECT'」&Empl_Name&「'AS Empl_Name, 「&Salary&」As Salary,Dept_ID DeptsTable WHERE DeptName ='「&Dept_Name&」'「 – Fionnuala 2010-09-14 16:37:47