【发布时间】:2020-03-29 17:12:57
【问题描述】:
主从链接有 2 个表。向明细表添加新值时,不绑定从主表中选择的外键。
M-D 连接本身是在表单上执行的,分别使用两个 Dblookupcombobox 和 DataSource、ADOQuery。 enter image description here
使用 [ + ] 按钮,可以添加组合框中不存在的新值。但是问题从第二个 [ + ] (又名细节)开始,当创建一个新行时,您需要它来绑定上一个 LookUpComboBox(Master)的外键。第二个按钮的按钮代码[+]:
begin
Form4.ADOQuery1.SQL.Clear;
Form4.ADOQuery1.SQL.Add('Select City from City WHERE City='+#39+Form5.DBEdit1.Text+#39); //checking for duplicates
Form4.ADOQuery1.Open;
if Form4.ADOQuery1.IsEmpty then
begin
Form4.Query_city.FieldByName('City').AsString := Form5.DBEdit1.Text; //The PROBLEM is SOMEWHERE HERE! It Adds a new value without binding the foreign key
Form4.Query_city.Open;
Form4.Query_city.Post;
MessageBox(Handle, 'New data entered','Adding a new value',MB_ICONINFORMATION);
end
else
begin
Form4.Query_spec.Cancel;
Form4.ADOQuery1.Cancel;
MessageBox(Handle,PChar(''+Form5.DBEdit1.text+' already on the list!'),'Error',MB_ICONWARNING);
end;
end;
新值被写入 DBEdit1。它与表有相应的绑定。 那么如何使用对应的外键插入字段呢?
【问题讨论】:
-
恐怕您的
if Form4.AdoQuery1...块中的代码完全错误 - 在 Query_city 的 City 字段打开之前,您无法正确设置它,然后您可能需要进行插入。给自己找一个 Master-Detail 教程 - 应该解释正确的步骤和它们的顺序。
标签: sql database delphi delphi-7