希望能填写这里
except
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
delphi 要在这里捕捉主键冲突的错误?????????????????????????????
result:=false;
//插入部门记录
function InsertDepartMent(Const DepartM : TDepartMent) : Boolean;
var
//ADODep : TADOQuery;
sql : String;
begin
result := False;
DM.adoCn.Connected := True;
//ADODep := TADOQuery.Create(nil);
DM.qrySql1.Connection := DM.adoCn;
sql := 'Insert into Department(DEPT_ID,DEPT_NAME,DIR_LD1,DIR_LD1_PHONE,'+
'DIR_LD2,DIR_LD2_PHONE,DEP_LD1,DEP_LD1_PHONE,DEP_LD2,DEP_LD2_PHONE,'+
'DEP_LD3,DEP_LD3_PHONE) values('+DepartM.Dept_ID+','''+
DepartM.Dept_Name+''','''+DepartM.DirLeader1 +''','''+
DepartM.DirLeader1_Mobile +''','''+DepartM.DirLeader2+''','''+
DepartM.DirLeader2_Mobile+''','''+DepartM.DeptLeader1 +''','''+
DepartM.DeptLeader1_Mobile +''','''+DepartM.DeptLeader2+''','''+
DepartM.DeptLeader2_Mobile+''','''+DepartM.DeptLeader3+''','''+
DepartM.DeptLeader3_Mobile+''')';
//application.messagebox(sql,'DAMN IT');
//exit;
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
delphi 要在这里捕捉主键冲突的错误?????????????????????????????
result:=false;
end;
DM.qrySql1.close;
DM.adoCn.Connected := False;
end;
7 个解决方案
#1
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
On E:Exception do
begin
ShowMessage(E.message);
result:=false;
end;
end;
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
On E:Exception do
begin
ShowMessage(E.message);
result:=false;
end;
end;
#2
delphi 要在这里捕捉主键冲突的错误 应该不象楼上那样写的吧
本来我在dal层的错误处理中就什么也没做,只是忽略错误,然后由bll层返回错误"主键重复"
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
end;
感觉这样处理比楼上方法更好,现在只是想明确捕捉 由oracle返回的"主键冲突"异常.
本来我在dal层的错误处理中就什么也没做,只是忽略错误,然后由bll层返回错误"主键重复"
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
end;
感觉这样处理比楼上方法更好,现在只是想明确捕捉 由oracle返回的"主键冲突"异常.
#3
才学delphi一个礼拜就难倒那么多人了?
还是delphi人气太不行了???
还是delphi人气太不行了???
#4
ShowMessage(E.message);
这些东西,使用者肯定看不明白的了
这些东西,使用者肯定看不明白的了
#5
不是有错误代码吗,在OnPostErr里写吧,根据返回的错误代码。
#6
在except内写
ShowMessage('主键冲突');
ShowMessage('主键冲突');
#7
晕
怎么看问题的?
这样来解决:
try
…
…
except
on e : EOraError do
begin
if e.ErrorCode = 2292 then
ErrorInfo := '存在此部门的关连记录,禁止删除!'
else
ErrorInfo := '数据库操作错误';
Result := False;
end;
end;
ErrorCode := 1代表主键重复,针对插入记录的函数使用(同上)
不过我的是对oracle的,还有,不是使用ADO,因为ADO麻烦,要安装oracle客户端
怎么看问题的?
这样来解决:
try
…
…
except
on e : EOraError do
begin
if e.ErrorCode = 2292 then
ErrorInfo := '存在此部门的关连记录,禁止删除!'
else
ErrorInfo := '数据库操作错误';
Result := False;
end;
end;
ErrorCode := 1代表主键重复,针对插入记录的函数使用(同上)
不过我的是对oracle的,还有,不是使用ADO,因为ADO麻烦,要安装oracle客户端
#1
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
On E:Exception do
begin
ShowMessage(E.message);
result:=false;
end;
end;
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
On E:Exception do
begin
ShowMessage(E.message);
result:=false;
end;
end;
#2
delphi 要在这里捕捉主键冲突的错误 应该不象楼上那样写的吧
本来我在dal层的错误处理中就什么也没做,只是忽略错误,然后由bll层返回错误"主键重复"
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
end;
感觉这样处理比楼上方法更好,现在只是想明确捕捉 由oracle返回的"主键冲突"异常.
本来我在dal层的错误处理中就什么也没做,只是忽略错误,然后由bll层返回错误"主键重复"
try
DM.qrySql1.Close;
DM.qrySql1.SQL.clear;
DM.qrySql1.SQL.Add(sql);
DM.qrySql1.ExecSQL;
result:=true;
except
end;
感觉这样处理比楼上方法更好,现在只是想明确捕捉 由oracle返回的"主键冲突"异常.
#3
才学delphi一个礼拜就难倒那么多人了?
还是delphi人气太不行了???
还是delphi人气太不行了???
#4
ShowMessage(E.message);
这些东西,使用者肯定看不明白的了
这些东西,使用者肯定看不明白的了
#5
不是有错误代码吗,在OnPostErr里写吧,根据返回的错误代码。
#6
在except内写
ShowMessage('主键冲突');
ShowMessage('主键冲突');
#7
晕
怎么看问题的?
这样来解决:
try
…
…
except
on e : EOraError do
begin
if e.ErrorCode = 2292 then
ErrorInfo := '存在此部门的关连记录,禁止删除!'
else
ErrorInfo := '数据库操作错误';
Result := False;
end;
end;
ErrorCode := 1代表主键重复,针对插入记录的函数使用(同上)
不过我的是对oracle的,还有,不是使用ADO,因为ADO麻烦,要安装oracle客户端
怎么看问题的?
这样来解决:
try
…
…
except
on e : EOraError do
begin
if e.ErrorCode = 2292 then
ErrorInfo := '存在此部门的关连记录,禁止删除!'
else
ErrorInfo := '数据库操作错误';
Result := False;
end;
end;
ErrorCode := 1代表主键重复,针对插入记录的函数使用(同上)
不过我的是对oracle的,还有,不是使用ADO,因为ADO麻烦,要安装oracle客户端