数据库主 - 详细信息关系 - 如何防止为主表输入不存在的值?

时间:2015-07-30 07:34:16

标签: database delphi

在主要细节关系中

procedure TDataModule.TABLE1AfterScroll(DataSet: TDataSet);
begin
    if TABLE1.FieldByName('UNIT_ID').AsString <> '' then
    begin
        QUERY1.Close;
        QUERY1.SQL.Clear;

        QUERY1.SQL.Text:= 'select * from TABLE2 where UNIT_ID = ' +
        TABLE1.FieldByName('UNIT_ID').AsString;

        QUERY1.Open;
    end;

如何确保在编辑(然后保存)QUERY1结果时,有人不会输入不存在的UNIT_ID

我希望UNIT_ID能够更改,但我想确保有人不会输入不存在的UNIT_ID

1 个答案:

答案 0 :(得分:0)

AfterScroll不是正确的事件使用beforepost而是这样:

procedure TDataModule.TABLE1BeforePost(DataSet: TDataSet);
begin
    if TABLE1.FieldByName('UNIT_ID').AsString <> '' then
    begin
        QUERY1.Close;
        QUERY1.SQL.Text:= 'select UNIT_ID from TABLE2 where UNIT_ID = ' +
            TABLE1.FieldByName('UNIT_ID').AsString;
        QUERY1.Open;
        if QUERY1.REcordcount=0 then ABORT; //so if there not a such
                                            // unit_id just don't save it
    end;
end;