在SQL當中的一個表當中建立兩個字段 ia1,ia2 其中ia1為主鍵。
在Delphi當中用Insert 語句的時候如果插入值有和ia1當中有重復的他就指示主鍵重復
我想問一下有什麼方法能在這個信息指示之前攔結他,改為用戶自已的showmessage
呢。如果有原代碼最好了。
如果插入語句寫在存儲過程當中的話提示信息如何返回客戶端。。
謝謝各位大俠請指教
在Delphi當中用Insert 語句的時候如果插入值有和ia1當中有重復的他就指示主鍵重復
我想問一下有什麼方法能在這個信息指示之前攔結他,改為用戶自已的showmessage
呢。如果有原代碼最好了。
如果插入語句寫在存儲過程當中的話提示信息如何返回客戶端。。
謝謝各位大俠請指教
query.execsql;
except
on e:tdberror do
showmessage(e.message);
end;
I: Integer;
begin
for I:=0 to MainData.adcConn.Errors.Count-1 do
begin
case MainData.ADOConnection.Errors.Item[I].NativeError of
-105121349:
begin
Application.MessageBox('XXX Must Be Only!',PChar(Application.Title),MB_OK+MB_ICONWARNING);
Action:=daAbort;
end;
end;
end;至于-105121349等数字不同数据库有不同的错误代码,-105121349是Access的唯一值错误代码,SQL Server2000的好像是2601,你用这个过程测一下即可!var
I: Integer;
begin
for I:=0 to MainData.adcConn.Errors.Count-1 do
begin
ShowMessage(IntToStr(MainData.ADOConnection.Errors.Item[I].NativeError));
// Action:=daAbort;
end;
end;
end;
我試了一下他會有三個錯誤代碼葉。
我原來就是這麼做的。
可是如果一個表當中有幾十萬條記錄的話,我感覺這樣好慢好慢。
你获取三个是因为后面的是提示你终止程序,一般情况下只是第一个代码!
象你的情况在SQL Server下是2601,即在在ADOQuery的OnPostError事件中写代码:var
I: Integer;
begin
for I:=0 to MainData.adcConn.Errors.Count-1 do
begin
case MainData.ADOConnection.Errors.Item[I].NativeError of
2601:
begin
Application.MessageBox('ia1 Must Be Only!',PChar(Application.Title),MB_OK+MB_ICONWARNING); //提示信息随便写了
Action:=daAbort;
end;
end;
end;
多看看SQL Server的帮助,或者到sysmessage中查找相关序号