線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1472
推到 Plurk!
推到 Facebook!

請教『無法識別的錯誤』

尚未結案
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-05 10:29:30 IP:211.76.xxx.xxx 未訂閱
請教各位先進 小弟在處理下面程式碼時,發生無法識別的錯誤 資料庫是MSSQL,資料表為MASTER-DETAIL
procedure TSale.tempExit(Sender: TObject);
begin
  DM.Tmp.Close;
  DM.Tmp.SQL.Clear;
  DM.Tmp.SQL.Add('select * from sale110 where sale_no=''' DBEdit1.Text '''');
  DM.Tmp.Open;
  if length(temp.Text) = 11 then
  begin
    if DM.Tmp.Locate('product_no',temp.Text,[]) then
    begin
      showmessage('產品編號重複');
      temp.Text:='';
    end
    else
    begin
      DM.Sale110.Append;
      DM.Sale110.FieldByName('product_no').Value:= temp.Text;
      DM.Sale110.FieldByName('product_num').Value:= 1;
      temp.Text:='';
      temp.SetFocus;
    end;
  end
  else if length(temp.Text) = 6 then
  begin
    DM.Sale100.Edit;
    DBEdit3.Text:= temp.Text;
    temp.Text:='';
    temp.SetFocus;
  end;
end;
其錯誤是在紅色部分產生的 之前出現這ㄍ錯誤是因為DETAIL資料表的KEY沒設好 但這次真的不知道為何產生此問題?? 所以請教各位前輩
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-05 13:27:00 IP:63.84.xxx.xxx 未訂閱
您好!    在您的程式碼似乎沒有看到temp.Text有指定值, 之前的SQL查詢只是利用DBEDit1.Text來作為查詢的條件, 但之后的指定FieldByName('product_no')的值為temp.Text, 此時的temp并不存在.    參考看看!    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-05 13:36:20 IP:211.76.xxx.xxx 未訂閱
感謝您的回應 但若temp.Text沒值 根本不會錯在那ㄍ地方阿 因為if length(temp.Text) = 11 then
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-05 17:58:07 IP:202.39.xxx.xxx 未訂閱
.Value 用 .AsString 試試, 猜的 --- 歡迎光臨 >
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-05 19:09:21 IP:211.76.xxx.xxx 未訂閱
感謝回應 那方法我是過了是不行的 我曾經將ADO元件重拉、重設定 試著新增一筆可以 但第二筆就又出現該錯誤 之後就不能再新增了
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-05 19:34:01 IP:211.76.xxx.xxx 未訂閱
再補充說明一下 是在INSERT觸發時產生的錯誤 錯誤為『無法識別的錯誤』 應該跟資料庫的KEY有關sale100 --> sale_no Sale110 -->Sale_no product_no 資料庫的設法應該無誤 猜想問題是出在資料庫連結元件上, 但卻又找不出原因,請教各位前輩Master-Detail 在設定時有哪些需要注意的地方
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-05 21:02:37 IP:218.165.xxx.xxx 未訂閱
procedure TSale.tempExit(Sender: TObject); begin DM.Tmp.Close; .//這裡照你原來的寫法 temp.SetFocus; end; DM.Sale100.Post; end; 加入紅色的那一行試看看..TRY TRY SEE...
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-05 22:50:55 IP:211.76.xxx.xxx 未訂閱
感謝chih回應 但我的錯誤在       DM.Sale110.Append;       DM.Sale110.FieldByName('product_no').Value:= temp.Text;[red] 紅色部分就產生了 根本無法到您說的[red]DM.Sale100.Post;
cashxin2002
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-06 00:40:05 IP:63.84.xxx.xxx 未訂閱
您好!    先問一下, temp的Text值是從哪里取得的?     如果确定資料表的Key設定沒有問題, 請仔細檢查一下資料表中對應欄位('product_no')有無寫錯(与程式碼中的欄位名稱有誤差), 其欄位形態是否為字串形態(String). 還有一個需要注意的地方, 如同hagar版主的回复, 雖然和您目前的問題無關, 但是盡量使用AsString的方法來指定形態會比較好, 其還有一個特性可將Null值自動轉為空字串, 因為在資料異動作業時, 使用Value時, 若值為Null, 資料表可能會出錯. 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-06 08:17:06 IP:61.221.xxx.xxx 未訂閱
您好 我TEMP TEXT 的值是由條碼機取得 條碼機讀取時會將資料讀入並做enter的動作 故將事件寫在temp.exit
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-06 09:36:15 IP:218.164.xxx.xxx 未訂閱
if length(temp.Text) = 11 then 這樣做判斷如果temp.Text 如果是11各空白也會觸發,造成'product_no'為空值, 建議改為if trim(temp.Text) = 11 then 來做看看.. 另外DM.Sale110.FieldByName('product_no').Value:= temp.Text; 改為 DM.Sale110.FieldByName('product_no').AsString:= Trim(temp.Text); 底下之 if length(temp.Text) = 6 then 如同... TRY TRY SEE...
引言: 您好 我TEMP TEXT 的值是由條碼機取得 條碼機讀取時會將資料讀入並做enter的動作 故將事件寫在temp.exit
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-07 22:04:27 IP:211.76.xxx.xxx 未訂閱
試了好久 發現好像不是程式的問題 同樣的資料庫附加到公司的SEVER上便可以順利執行 而家裡的SQL好像壞了 但重新安裝也一樣 無論如何感謝大家的回應
系統時間:2024-05-19 4:44:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!