请帮我改一下这段代码
if DataModule1.ADOTable1.Locate('LIBNO',edit1.text,[lopartialkey]) then
begin
showmessage('这个编号已经存');
Edit1.SetFocus;
Exit;
end;
if DataModule1.ADOTable1.locate('DESC',edit2.text,[lopartialkey]) then
begin
showmessage('这个名称已经存');
Edit2.SetFocus;
Exit;
end;
当一执行到第二个IF 语句时出错,请问应该怎样写
问题点数:20、回复次数:4Top
1 楼wwwwwwww(我我)回复于 2001-08-31 14:43:44 得分 0
if DataModule1.ADOTable1.Locate('LIBNO',edit1.text,[lopartialkey]) then
begin
showmessage('这个编号已经存');
Edit1.SetFocus;
Exit;
end;
else if DataModule1.ADOTable1.locate('DESC',edit2.text,[lopartialkey]) then
begin
showmessage('这个名称已经存');
Edit2.SetFocus;
Exit;
end;
Top
2 楼hansonboy(hansonboy)回复于 2001-08-31 15:28:19 得分 0
还是不行,还是那里出错,出错提示为:
THE application is using arguments that of the wrong type,are out of
acceptable range,or are in conflict with one another.Top
3 楼wangzh(独孤求问)回复于 2001-08-31 15:42:38 得分 20
相信我没错的,建议你这样编程,把不能重复的字段在数据库里约束为“无重复”,然后在
ADOTable1.onPostError下类似这样写:
procedure TForm_DM.ADOTable1.PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
var
adoErrors: Errors;
adoError: Error;
iCount: Integer;
begin
adoErrors := ADOC_Holter.Errors;
for iCount := 0 to adoErrors.Count - 1 do
begin
adoError := adoErrors.Item[iCount];
if (adoError.NativeError = -105121349) then
raise exception.Create('说明:为了便于管理,字段“编号”或“姓名”的值是不允许重复出现的。请输入其他的值。');
end;
end;
如果非要这样写的化那么让DESC改名为DESC1(DESCd在中ado中有用,为降序字)试试:
if DataModule1.ADOTable1.Locate('LIBNO',edit1.text,[lopartialkey]) then
begin
raise exception.Create('这个编号已经存');
end;
if DataModule1.ADOTable1.locate('DESC'//,edit2.text,[lopartialkey]) then
begin
raise exception.Create(('这个名称已经存');
end;
Top
4 楼bubble()回复于 2001-08-31 16:01:40 得分 0
gzTop




