DM.ADOQu.First;
  while not DM.ADOQu.Eof  do
  begin  DM.ADOSP.Close;
  DM.ADOSP.procedureName:='AgentIn_add';
  DM.ADOSP.Parameters.Refresh;
  DM.ADOSP.Parameters.ParamByName('@Flight').Value:=checklistbox1.Items.Strings[i];
  DM.ADOSP.Parameters.ParamByName('@Class').value:=DM.ADOQu.FieldValues['ClassID'];
  DM.ADOSP.Parameters.ParamByName('@ClassPrice').value:=DM.ADOQu.FieldValues['Price'];
  DM.ADOSP.Parameters.ParamByName('@BaseClass').value:='Y';
  DM.ADOSP.Parameters.ParamByName('@DiscountRate').value:=strtoint(edit1.Text);
  DM.ADOSP.Parameters.ParamByName('@DiscountCash').value:=Strtoint(edit2.Text);
  DM.ADOSP.Parameters.ParamByName('@InureDate').value:=DateToStr(DateTimePicker1.DateTime);
  DM.ADOSP.Prepared:=True;
  DM.ADOSP.ExecProc;
 
  //showmessage(DM.ADOQu.FieldValues['ClassID']);
  //showmessage(DM.ADOQu.FieldValues['Price']);
  
  DM.ADOQu.Next;
  end;DM.ADOSP为一存储过程,当只需要调用一次DM.ADOSP时正常当不止一次时,报错“Acess voilation at adress 753c9da1 in module 'sqloledb.dll'. read of adress 00000018 ”,但是DM.ADOSP其实也执行了一次的。
请高手指点