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

Firebird + SQLClientDataSet 新增資料時出現 Field value required

答題得分者是:GrandRURU
imdatou
一般會員


發表:1
回覆:2
積分:0
註冊:2008-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-11-15 11:51:59 IP:220.134.xxx.xxx 訂閱
我依照 Firebird FAQ 建立一個自動編號的資料表,在 isql 裡新增資料沒問題;接下來我使用 SQLClientDataSet 連結 Firebird 資料庫,設定 CUST_NO Fields 的 Required 為 false,新增資料時卻顯示 「Field value required」,請問各位前輩哪裡有問題?

這是我建立的客戶資料表
[code sql]
SQL> SHOW TABLE customers;
CUST_NO INTEGER Not Null
FULL_NAME VARCHAR(50) Nullable
PHONE_MOBILE VARCHAR(15) Nullable
PHONE_CONTACT VARCHAR(15) Nullable
CONSTRAINT PK_CUSTOMERS:
Primary key (CUST_NO)

Triggers on Table CUSTOMERS:
CREATE_CUST_NO, Sequence: 0, Type: BEFORE INSERT, Active
[/code]

開發環境:
BCB 6
Windows XP SP3
Firebird 2.1
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-11-16 10:00:31 IP:203.75.xxx.xxx 未訂閱
我有試著將FAQ所提的範例資料表給建了出來,如果是使用SQL指令中的「Insert」語法,是可以通過的,序號也會增加。

但如果使用TSQLClientDataSet ,一樣會和你有相同的問題發生。

查了之前相關的解決方法,如:如何取消ClientDataSet 的Required 檢查

仍無法解決此問題。

目前可能解決的辦法應該是將「 CUST_NO」的Not NULL的限制取消,這樣就可以順利解決這個問題。

不過,這樣就不能使用Primary Key了,請小心。

===================引 用 imdatou 文 章===================
我依照 Firebird FAQ 建立一個自動編號的資料表,在 isql 裡新增資料沒問題;接下來我使用 SQLClientDataSet 連結 Firebird 資料庫,設定 CUST_NO Fields 的 Required 為 false,新增資料時卻顯示 「Field value required」,請問各位前輩哪裡有問題?

這是我建立的客戶資料表
[code sql]
SQL> SHOW TABLE customers;
CUST_NO INTEGER Not Null
FULL_NAME VARCHAR(50) Nullable
PHONE_MOBILE VARCHAR(15) Nullable
PHONE_CONTACT VARCHAR(15) Nullable
CONSTRAINT PK_CUSTOMERS:
Primary key (CUST_NO)

Triggers on Table CUSTOMERS:
CREATE_CUST_NO, Sequence: 0, Type: BEFORE INSERT, Active
[/code]

開發環境:
BCB 6
Windows XP SP3
Firebird 2.1
imdatou
一般會員


發表:1
回覆:2
積分:0
註冊:2008-09-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-11-16 14:29:15 IP:220.134.xxx.xxx 訂閱
謝謝 GrandRURU 前輩先,我有想過把 cust_no 的 NOT NULL 拿掉,但是別的資料表有參考到該主鍵,故取消此想法。

希望有更好的解決方案,再次感謝 GrandRURU 前輩熱心回答!
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-11-16 15:23:54 IP:203.75.xxx.xxx 未訂閱
你試一下,
1.將SQLClientDataSet->CommandType = ctQuery
2.CommandText 設定 "SELECT FULL_NAME,PHONE_MOBILE,PHONE_CONTACT FROM customers"(不要把自動序號的欄位加入)
3.利用DBNavagetor DBGrid DataSource來試試看能否新增刪除

我剛剛試過,可以正常新增刪除,流水號也有正確增加,再請你試試看囉。
imdatou
一般會員


發表:1
回覆:2
積分:0
註冊:2008-09-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-11-16 22:06:25 IP:220.134.xxx.xxx 訂閱
Wow!GrandRURU 前輩太厲害了,此方法可行。

大感謝 <(_ _)>
系統時間:2024-11-21 16:58:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!