两个表:xxinfor(date、typeid、jiliang、pay)、xxtype(dalei、typeid、danwei、spname、pay),Query:ADOQuery_xxinfor(date、typeid、jiliang、pay、danwei(从xxtype表中查找danwei关键字typeid)、spname(从xxtype中查找spname)、pay1(从xxtype中查找pay字段)、income(fkCalculated字段)、money(fkCalculated字段)。date、income、money是要打印的字段procedure TMyData.ADOQuery_xxinforCalcFields(DataSet: TDataSet);
begin
  ADOQuery_typ.Close;
  ADOQuery_typ.SQL.Clear;
  ADOQuery_typ.SQL.Add('select * from xxtype where typeid='+ADOQuery_xxinfortypeid.AsString);
  ADOQuery_typ.Open;  if ADOQuery_typ.FieldByName('dalei').AsInteger=3 then
  begin
    ADOQuery_xxinformoney.Value:=ADOQuery_xxinforpay.Value;
    ADOQuery_xxinforincome.Value:=ADOQuery_xxinforspname.Value;
  end
  else if (ADOQuery_typ.FieldByName('dalei').AsInteger=1) or (ADOQuery_typ.FieldByName('dalei').AsInteger=2)then
  begin
    ADOQuery_xxinforincome.Value:=ADOQuery_xxinforspname.Value+'   '+intToStr(ADOQuery_xxinforjiliang.Value)+'×'+ ADOQuery_xxinfordanwei.Value;
    ADOQuery_xxinformoney.Value:=ADOQuery_xxinforpay1.Value*ADOQuery_xxinforjiliang.Value;
  end
  else
  begin
    ADOQuery_xxinforincome.Value:=ADOQuery_xxinforspname.Value;
    ADOQuery_xxinformoney.Value:=ADOQuery_xxinforpay1.Value;
  end;
end;  MyData.ADOQuery_xxinfor.Close;
  MyData.ADOQuery_xxinfor.SQL.Clear;
  MyData.ADOQuery_xxinfor.SQL.Add('select * from xxinfor where id='+MyData.ADOQuery_patient.FieldByName('id').AsString+' order by date DESC');
  MyData.ADOQuery_xxinfor.Open;
  Form17.QuickRep1.Preview;
end;
预览时出现错误:Access violation at address 004AB1C7 in module 'project1.exe',read of address 00000000,请问是什么问题?
我用同一个DataSource给DBGrid浏览没有出现问题,只在打印的时候出现问题!