数据库为:SQL 数据控件:两个ADOQUERY、DATESOURCE、DBGRIDEH。
ADOQUERY1链接a1表: 序号、书名、作者、单价、购买数、金额;
ADOQUERY2链接b1表: 书名、作者、单价
如果在添加a1表时,当不知道“单价”的情况下。
在b1表中调用单价 条件为:a1.书名=b1.书名 and a1.作者=b1.作者。
然后a1表的金额:=b.单价*a.购买数.
procedure Tfdiandan.ADOQuery1CalcFields(DataSet: TDataSet);//判断a1表中是否知道单价。如果不知道则不输入为空。
begin
if 单价=''then
begin
金额:=b1.单价*购买数;
end
else
begin
金额:=单价*购买数;
end;
end;
八十分赠之!如有不明之处请讲!

解决方案 »

  1.   

    begin
    if 单价=''then
    begin
      strSql:='select a.price*b.qty total from b1 as a '
             +'left join a1 as b on a.book_name=b.book_name and a.author=b.author'
      ADOQUERY.SQL.Add(strSql);
      ADOQUERY.open;
    end
    else
    begin
      strSql:='select price*qty total from a1';
      ADOQUERY.SQL.Add(strSql);
      ADOQUERY.open;
    end;
    end;
      

  2.   

    procedure Tfdiandan.ADOQuery1CalcFields(DataSet: TDataSet);//判断a1表中是否知道单价。如果不知道则不输入为空。
    begin
    if 单价=''then
    begin
    金额:=b1.单价*购买数;
    end
    else
    begin
    金额:=单价*购买数;
    end;
    是错误的。当刚添加时单价一定是空的,所以金额:=单价*购买数;永远也不会运行。而且系统还会提示其它的错误!