全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1657
推到 Plurk!
推到 Facebook!

如何取得“无法插入空行。 行必须至少有一个列值集”之类的错误信息2

答題得分者是:cashxin2002
daybreak
一般會員


發表:14
回覆:15
積分:5
註冊:2003-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-03 23:13:16 IP:218.58.xxx.xxx 未訂閱
DELPHI访问ACCESS数据库时,其中的一个表定义了关键字,并定义了索引,当向其中插入非法的记录时(如空的记录或重复的编号),系统总是提示“无法插入空行。 行必须至少有一个列值集”,请问如何在出现此类信息之前,得到错误代码与示信息?谢谢。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-04 08:48:39 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試使用try...except攔截錯誤的方法﹐範例如下﹕
begin
  try
    您的程式碼部分...
  Except
    On MyError : Exception do
    //單獨針對Database的錯誤﹐上句也可寫成如下﹕
    //On MyError : EDatabaseError do
      ShowMessage('錯誤的信息是﹕' + MyError.Message);
  end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
daybreak
一般會員


發表:14
回覆:15
積分:5
註冊:2003-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-04 10:01:01 IP:202.110.xxx.xxx 未訂閱
当我在表中插入数据时后,移动光标到下一行时,就出现如题的错误。我不知try....except应该放在哪里呀?在DELPHI的DBError的例子中也是出现这样的错误。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-04 11:58:33 IP:202.62.xxx.xxx 未訂閱
您好﹗    請列出您的程式碼﹐以便判斷錯誤之處﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
daybreak
一般會員


發表:14
回覆:15
積分:5
註冊:2003-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-04 12:56:07 IP:202.110.xxx.xxx 未訂閱
procedure TForm1.FormCreate(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from bmk'); ADOConnection1.Connected:=True; ADOQuery1.Open; ADOQuery1.Active:=True; end; 我在DBGRID中输入两个重复的编号后,系统出现错误。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-04 14:21:00 IP:202.62.xxx.xxx 未訂閱
您好﹗    將您的程式碼修改如下﹕
procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from bmk');
  ADOConnection1.Connected:=True;
  //以上紅色句可省略﹐因為當ADOQuery1在Open的時候﹐會自動將
  //ADOConnection1的Connected屬性值設為True
  ADOQuery1.Open;
  ADOQuery1.Active:=True;
  //以上紅色句刪除﹐因為ADOQuery1的Open方法即是將其
  //Active屬性值設為True﹐再使用True方法就重复開啟了
end;
我想您是利用DBGrid和DBNavigator來做資料的異動工作﹐當資料集元件進入dsInsert或dsEdit狀態時﹐如果將輸入光標移動到另外的位置就會触發Post方法﹐您可試試自行擬寫程式碼來控制Post方法﹐以達到使用try...except方法來攔截錯誤的目的﹒ 隱藏DBNavigator元件中的Post Button﹐在Form中加入一個Button元件﹐取名為并在此Button的OnClick事件中鍵入如下程式碼﹕
begin
  try
    ADOQuery1.Post;
  Except
    On MyError : Exception do
    ShowMessage('錯誤的信息是﹕' + MyError.Message);
  end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
daybreak
一般會員


發表:14
回覆:15
積分:5
註冊:2003-11-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-04 21:15:45 IP:218.56.xxx.xxx 未訂閱
您好! 我如何能控制POST呢?当我将光标下移一行时,ADOQUERY就自动执行了POST。请多多指点。谢谢。
系統時間:2024-05-19 8:50:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!