我是在设计环境下运行的,报错就在改变:FieldByName('XZ').AsBoolean:=true;
执行道判断那句了,问题很奇怪
所有代码:
unit MainForm;
interface
uses
Business.System, Business.Forms, Business.Data, Business.Model;
type
TMainForm = class(TForm)
InfoBroker: TInfoBroker;
DataSetBroker: TDataSetBroker;
DataGrid1: TDataGrid;
DataGrid1id: TDataGridColumn;
DataGrid1shuzi: TDataGridColumn;
DataGrid1tiaojian: TDataGridColumn;
DataGrid1XZ: TDataGridColumn;
procedure BizFormShow(Sender: TObject);
procedure DataSetBrokerDataChange(Sender: TObject; Field: TDataField);
private
ChangeIng:Boolean;
public
{public declarations}
end;
implementation
uses
Business.Forms.Dialogs,Business.System.SysUtils, Business.System.DateUtils,
Business.System.StringUtils;
procedure TMainForm.BizFormShow(Sender: TObject);
begin
DataSetBroker.DataSet.Open;
ChangeIng:=True;
end;
procedure TMainForm.DataSetBrokerDataChange(Sender: TObject; Field: TDataField);
var
I:Integer;
begin
if Field <> nil then
begin
if ChangeIng then
begin
if Field.FieldName='XZ' then
begin
if DataSetBroker.DataSet.FieldByName('XZ').AsBoolean then
begin
ChangeIng:=False;
I:=DataSetBroker.DataSet.FieldByName('tiaojian').AsInteger;
showmessage(IntToStr(I));
with DataSetBroker.DataSet do
begin
First;
While Not Eof do
begin
if FieldByName('tiaojian').AsInteger=I then
begin
if FieldByName('XZ').AsBoolean=false then
begin
Edit;
FieldByName('XZ').AsBoolean:=true;
FieldByName('shuzi').AsInteger:=100;
Post;
end;
end;
Next;
end;
end;
ChangeIng:=True;
end;
end;
end;
end;
end;
end.
我的版本是2827,你可以做了例子实验一下,好奇怪的,呵呵 |