多表关联的记录删除与添加问题(50分)

  • 主题发起人 主题发起人 逆风
  • 开始时间 开始时间

逆风

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Access数据库有三个表,要求添加与删除记录,但三个表
是关联的,如姓名字段相关联,当删除表1中姓名为'张三'的
记录时,表2,表3中姓名为'张三'的记录也要删除,添加依然
如何实现?请说详细点。
 
可在資料庫關聯圖中設定這三個表以關鍵字進行關聯
例如:
我有兩個表分別為:PO_H和PO_D,兩個表以PO_NO關聯
彈出的編輯關聯窗口中把強迫參考完整性選中,並且把串聯刪除相同記錄選中
這樣,在刪除主表的記錄時,從表的相關聯的記錄也跟著被刪除了

新增記錄和顯式事件控制
先insert into 主表
再insert into 從表
最後提交事件
這樣就能保證主表與從表之間的數據一致了
 
主从表可以通过某一关键字相关联
表一 id1 主键
表二 id2 主键 id1包含和表一相关联
表三 id3 主键 id1和表一相关联
然后设计试图,通过 id1关联 设计级联删除和更新
根据第三范式,不应有姓名重复
但这样更新可以,插入新的好象不能,只能自己插入新的
 
学习,但组全表都是用来浏览的,一般不用新增数据[:D]
 
假如主表是用table联的话,就在beforedelete时件里写代码,先删子表,然后删主表.
 
在 主表的before delete 和after insert 时间里填写相关代码
 
procedure TForm1.Button11Click(Sender: TObject);
var
count,i,pos:integer;
str:string;
begin
table1.Active:=true;
table3.Active:=true;
str:=table1.FieldValues['学号'];
table1.Delete;
while table3.Locate('学号',str,[loCaseInsensitive]) do//判断从表里是否有和主表'学号'一栏简直相同的内容
begin
pos:=table3.FieldByName('序号').AsInteger;
count:=table3.RecordCount-1;
table3.Delete;
for i:=pos to count do
begin
table3.Edit;
table3.FieldByName('序号').AsString:=IntToStr(i);
table3.Next;
end;//调整从表的序号
table3.Refresh;
table1.Refresh;
end;
Button11.Enabled:=false;
Button13.Enabled:=false;
Button9.Enabled:=true;
end;

上为两表 1 3 ,3为从表,两表以‘学号’为联系,楼主可以参考参考
 
后退
顶部