2010-09-14 2 views
0

У меня есть две таблицы: Department (Dept_ID, Dept_Name). и Table Employee (Empl_ID, Empl_Name, Salary, Dept_ID). Идентификаторы являются автоматическими номерами. Dept_ID в таблице Employee - это внешний ключ, ссылающийся на Dept_ID в разделе Table. Теперь я хочу вставить запись в таблицу Employee с помощью Excel VBA, которая подключена к базе данных Access 2003, где находятся мои таблицы. Как я могу получить правильное значение Dept_ID и вставить его в таблицу Employee, учитывая, что пользователь будет отправлять только имя Dept_Name, которое принадлежит представленному сотруднику? Я использую простую вставку Append запрос:Вставка внешнего ключа. 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, учитывая, что я знаю Dept_Name для этого идентификатора. Является ли проблема понятной? Пожалуйста, помогите,

ответ

0

Я бы предположил, что лучшим вариантом было бы сначала найти идентификатор dept, это должно позволить вам проверить, что оно существует, и запросить пользователя, если это не так, и что-то в строках :

Set rs=CreateObject("ADODB.Recordset") 

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

rs.Open sSQL, <connection> 

DeptID=rs!DeptID 
+0

Thanks Remou. Сначала я подумал об этом, но подумал, что это может занять много времени. Я могу упростить это с помощью SQL-сервера, создав хранимые процедуры. потому что на SQL-сервере он позволяет вам писать несколько операторов select в одном запросе (хранимой процедуре), где я могу иметь первый оператор select для поиска и второй оператор для вставки. Но я пытался применить это в MS Access без успеха. Вы знаете, как я могу использовать несколько операторов в Access Query? Например, существует ли способ сделать следующее в одном запросе в Access: – guest1

+0

выберите Parameter_Dept_ID = Dept_ID из отдела, где Dept_Name = «Финансы», затем в новой строке (в том же запросе) пишу: insert into table Employee values ​​(" Mike ", 2000, Parameter_Dept_ID) – guest1

+1

Нет. Но вы должны иметь возможность создать запрос на вставку:« INSERT INTO Employee (Empl_Name, Salary, Dept_ID) SELECT »и« Empl_Name & »« AS Empl_Name, «& Salary &» As Salary, Dept_ID FROM DeptsTable WHERE DeptName = '"& Dept_Name &"' " – Fionnuala

Смежные вопросы