用以上四個控件操作編輯DBGRIDEH﹐對DBGRIDEH操作完后保存時出錯﹐提示﹕stack overflow,屏蔽掉以下代碼后沒問題﹐我想問是否因為這段代碼寫錯地方﹖
 procedure TPMMtInfo.query1BeforePost(DataSet: TDataSet);
begin
   if not(query1.FieldByName('newitemcode').AsString='') and not (query1.FieldByName('itemcode').AsString='') then
   begin
      query3.Active:=False;
      query3.ParamByName('newitemcode').AsString:=query1.fieldByName('newitemcode').AsString;
      query3.ParamByName('itemcode').AsString:=query1.fieldByName('itemcode').AsString;
      query3.Active:=True;
      if (query3.FieldByName('newitemcode').Asstring<>'') and (query1.FieldByName('itemcode').AsString<>'') then
        begin
          showmessage('編號不能重復,請查證!');
          query1.FieldByName('newitemcode').Asstring:='';
          query1.FieldByName('itemcode').Asstring:='';
          query1.Cancel;
        end
        else
        begin
        query1.Post;
        end;
     end
     else begin
        showmessage('編號不能為空,請輸入!');
        query1.Cancel;
end;
end;

解决方案 »

  1.   

    创意、自由、灵活,超强的报表功能,
    独特的双数据源连接,全功能的表格组件!http://www.anylib.com
      

  2.   

    showmessage('編號不能重復,請查證!');
              query1.FieldByName('newitemcode').Asstring:='';
              query1.FieldByName('itemcode').Asstring:='';
    你这边能编译过去吗?
      

  3.   

    query的参数能付给空值么〉?〉??
      

  4.   

    query3.ParamByName('newitemcode').value
    把一切在左边的asstring之类的换成.value试试:
       query3.ParamByName('itemcode').AsStrring=
    换成   query3.ParamByName('itemcode').value=          query1.FieldByName('newitemcode').Asstring:='';
              query1.FieldByName('itemcode').Asstring:='';换成
              query1.FieldByName('newitemcode').value:='';
              query1.FieldByName('itemcode').value:='';其余同理再看看。