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

有關於SQL中的Not Null

尚未結案
ship88
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-23 10:38:26 IP:61.219.xxx.xxx 未訂閱
如果有資料庫設定為 default 0 not null , 原來的意思不是該欄位可以不填, 自動給0值, 可是在tquery 時, 新增時, 一定要再給值, 否則會出現 欄位不可以為Null的訊息.. 因為使用Update_query 的元件.. 有沒有解決方式..(所有的欄位都用很久,故不能改將Not null拿掉
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-23 12:40:00 IP:203.95.xxx.xxx 未訂閱
Hi, 若是使用 TUpdateSQL 元件的話, 很容易做到這點, 在該元件的 InsertSQL 中有關該欄位的值拿掉即可, 如原來內容為, default 0 的欄位為 fsig 時, InsertSQL 內容如,    Insert into mytable (fid, ftype, fsig) values (:fid, :ftype, :fsig)     改為     Insert into mytable (fid, ftype) values (:fid, :ftype)    如此一來便會以 table 的 default 來進行新增的動作, 當然, 若是不是用 TUpdateSQL 元件進行 batch 寫入時, 或是使用者在新增時可以在該欄位寫值時, 也可以在 BeforePost 事件中來判斷該欄位是否為 null , 若是為 null 的話, 給定預設值即可, 但要注意的是, 該預設值便會在程式裡, 而非由 table 的 default value 來控制囉, 如,    
procedure TForm1.Query1BeforePost(DataSet: TDataSet);
begin
  if DataSet.FieldByName('fsig').IsNull then
  begin
    DataSet.FieldByName('fsig').AsInteger := 0;
  end;
end;
系統時間:2024-11-23 13:24:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!