各位xdjm快帮帮忙啊,我做的是用delphi开发activex控件。需要实现的功能是:
对选中记录的PBDT_PAY_METHOD字段进行集体赋值。(CHOOSE_FLAG字段已经在TDBGridEh中显示为CheckBox,其中‘0’代表选中,‘1’代表不选中;PBDT_PAY_METHOD字段已做成下拉框);程序代码:
procedure TATest.cdsCheckPBDT_PAY_METHODChange(Sender: TField);
var tem : string ;
begin
cdsCheck.DisableControls ;
tem := cdsCheckPBDT_PAY_METHOD.AsString ;
cdsCheck.First ;
while not cdsCheck.Eof do
begin
if cdsCheckCHOOSE_FLAG.AsString = '0' then
begin
cdsCheck.Edit ;
cdsCheckPBDT_PAY_METHOD.AsString := tem ;
end;
cdsCheck.Next ;
end;
cdsCheck.EnableControls ;
end;报错:project D:\Program Files\Internet Explorer\IEXPLORE.exe faulted with message:'access voilation at .... write of .....
对选中记录的PBDT_PAY_METHOD字段进行集体赋值。(CHOOSE_FLAG字段已经在TDBGridEh中显示为CheckBox,其中‘0’代表选中,‘1’代表不选中;PBDT_PAY_METHOD字段已做成下拉框);程序代码:
procedure TATest.cdsCheckPBDT_PAY_METHODChange(Sender: TField);
var tem : string ;
begin
cdsCheck.DisableControls ;
tem := cdsCheckPBDT_PAY_METHOD.AsString ;
cdsCheck.First ;
while not cdsCheck.Eof do
begin
if cdsCheckCHOOSE_FLAG.AsString = '0' then
begin
cdsCheck.Edit ;
cdsCheckPBDT_PAY_METHOD.AsString := tem ;
end;
cdsCheck.Next ;
end;
cdsCheck.EnableControls ;
end;报错:project D:\Program Files\Internet Explorer\IEXPLORE.exe faulted with message:'access voilation at .... write of .....
procedure TATest.cdsCheckPBDT_PAY_METHODChange(Sender: TField);
var tem : string ;
begin
//添加代码,TATest.Tag的初始值需为0
if cdsCheck.ControlsDisabled then exit; cdsCheck.DisableControls ;
tem := cdsCheckPBDT_PAY_METHOD.AsString ;
cdsCheck.First ;
while not cdsCheck.Eof do
begin
if cdsCheckCHOOSE_FLAG.AsString = '0' then
begin
cdsCheck.Edit ;
cdsCheckPBDT_PAY_METHOD.AsString := tem ;
end;
cdsCheck.Next ;
end;
cdsCheck.EnableControls ;
end;
while (not cdsCheck.Eof) and cdsCheck.Locate('CHOOSE_FLAG','0',[loCaseInsensitive]) do
为什么有的时候能执行,有的时候就在第一条记录处出现死循环啦
不应该放在if里面,if cdsCheckCHOOSE_FLAG.AsString <> '0' 就成了死循环了,因为没法next了