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

如何判斷欄位是否存在

答題得分者是:eaglewolf
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-04 10:33:58 IP:220.141.xxx.xxx 訂閱
請教各位前輩:
在資料庫中,如果我有一個資料表,裡面有許多欄位名稱,
我要如何判斷某一欄位名稱是否存在於此資料表中,
找不到相對應的語法
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-04 10:38:48 IP:60.248.xxx.xxx 未訂閱
以下是sql server 2000試過可以的

--某table的column存在,傳回1;column不存在,傳回0
select count(name) from syscolumns
where id=(select id from sysobjects where name='order')
and name='ordno'

參考來源http://www.blueshop.com.tw/board/show.asp?subcde=BRD20051129125402KNO&fumcde=FUM20041006152735ZFS
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-04 10:46:14 IP:220.141.xxx.xxx 訂閱
謝謝pedro756901的回應
但我不是要先判斷是否有此欄位,
而是在寫入資料的同時,
再去做判斷,
如下
己先將欄位中的文字陣列存入StringList中
如,slField(0)='Name'
;
;中間省略
;
slField(10)='Birthday'

For i:= 0 to 10 do begin
IF FieldByName(slField(i)).欄位是否存在 then begin
//有此欄位才寫入資料庫,否則會出現找不到此欄位之錯誤
end;
end;


===================引 用 pedro756901 文 章===================
以下是sql server 2000試過可以的

--某table的column存在,傳回1;column不存在,傳回0??
select count(name) from syscolumns??
where id=(select id from sysobjects where name='order')??
and name='ordno'??

參考來源http://www.blueshop.com.tw/board/show.asp?subcde=BRD20051129125402KNO&fumcde=FUM20041006152735ZFS
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-04 10:47:33 IP:211.75.xxx.xxx 訂閱
<textarea class="delphi" rows="10" cols="60" name="code">if FindField(slField(i)) <> nil then begin end else begin ShowMessage('Field Name ' slField(i) ' doesn''t exist!'); end </textarea>
------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
編輯記錄
eaglewolf 重新編輯於 2007-07-04 10:57:42, 註解 無‧
eaglewolf 重新編輯於 2007-07-04 10:58:22, 註解 無‧
eaglewolf 重新編輯於 2007-07-04 10:59:08, 註解 無‧
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-04 10:53:17 IP:60.248.xxx.xxx 未訂閱
意思一樣
其實你可以用另一個Query元件,Select出所有該Table欄位名稱,
在你的判斷式處理

另一個做法可以用try包
try
if FieldByName('xxxx').AsString='' then
except
ShowMessage('無此欄位')
end
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-04 11:52:24 IP:220.141.xxx.xxx 訂閱
謝謝eaglewolf大大,這是最正確的方式,己明確解決問題,
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-07-04 11:55:23 IP:220.141.xxx.xxx 訂閱

沒錯,這個方法我有使用,只是需要正確一點的判斷方式,
不要用另外處理,還是謝您囉!!

===================引 用 pedro756901 文 章===================
意思一樣
其實你可以用另一個Query元件,Select出所有該Table欄位名稱,
在你的判斷式處理

另一個做法可以用try包
try
? if FieldByName('xxxx').AsString='' then
except
? ShowMessage('無此欄位')
end
系統時間:2024-06-27 15:40:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!