用以上四個控件操作編輯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;
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;
独特的双数据源连接,全功能的表格组件!http://www.anylib.com
query1.FieldByName('newitemcode').Asstring:='';
query1.FieldByName('itemcode').Asstring:='';
你这边能编译过去吗?
把一切在左边的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:='';其余同理再看看。