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

有關BCB查詢條件的語法要怎麼寫

尚未結案
junichikimi
一般會員


發表:3
回覆:3
積分:1
註冊:2004-06-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-14 03:19:35 IP:218.162.xxx.xxx 未訂閱
我有一個用ACCESS建的進貨資料表,欄位有進貨日期(主鍵)、和一些其他的欄位,我是使用ADO的連線方使,我要查詢進貨日期,要怎麼寫sql呢?謝謝
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-14 08:17:27 IP:211.20.xxx.xxx 未訂閱
你沒有列出欄位名稱,我只好用中文名表示 請自行改為你的欄位名 Select * from Table_name Where 進貨日期='2004/10/14' 這是最基本的SQL型式,是沒有JOIN的類型 若這都看不懂的話,建議你先買書來看 SQL本身就是一個程式語言 用在BCB中,就是程式中的程式(讓程式去產生程式) 而且不用資料庫之間也有語法的少許差異
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-15 15:20:11 IP:211.75.xxx.xxx 未訂閱
日期欄位?...... ㄏㄏㄏ 建議你改成Double
junichikimi
一般會員


發表:3
回覆:3
積分:1
註冊:2004-06-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-19 16:41:46 IP:218.162.xxx.xxx 未訂閱
為什麼要改成Double呢?那如果我是要查詢今天以前日期的資料呢?我的sql要怎麼寫呢?謝謝你們的回答!
bigdogchina
版主


發表:238
回覆:523
積分:312
註冊:2003-04-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-19 22:44:28 IP:211.162.xxx.xxx 未訂閱
不好意思,插個花,小弟的一點淺見,僅供參考:    莊子'養生篇'中的庖丁解牛有雲:彼節間有間,而刀刃者無厚;以無厚入有間,恢恢乎其於遊刃必有餘地矣。可見當掌握了基本原理對理解問題是很有用的,同樣,在如何下SQL語句前,先來瞭解一下BCB中的Date和Time,或許問題會有點眉目哦 >>資料類型,這是一個浮點類型,因爲這個類型必須足夠寬,使變數能容納年,月,日,時,分和秒,甚至毫秒。日期值按天計數,從<>>開始,放在>>(該文件就在$(>>派生下來的,而我們來看看 class="code"> class RTL_DELPHIRETURN TDateTimeBase { public: doubleVal; }; 哈哈,TDateTimeBase有一個公開的double類型的變數Val。同樣的,在Delphi中,也可以找到相同的code:type TDateTime = type Double。一般情況下,我們使用的最多的是Win32標簽欄下的DateTimePicker,而該元件經常用的屬性就是DateTime屬性,而這都是TDateTime類型,當我們使用這些屬性寫入資料庫時,就可以考慮使用double來實做資料庫相關欄位元的類型了,現在也就不難理解jcjroc大大的提示了 因爲BCB使用的基礎是VCL,所以我們追根求源,到VCL中找找TdateTime還有些什麽相關的方法可以供我們使用呢:(下面函數具體的實現細節在$(DELPHI)\source\rtl\Sys\SysUtils.pas中) 當然還不止這些,比如還有IsLeapYear(),GetTime()等函數.我們需要注意的是:當日期和時間轉化成字串時,其轉換格式取決於Windows的系統時間設置,從VCL的code可以看出,是從系統中讀出這些值,並把它們拷貝到SysUtils單元聲明的幾個Global變數中哦! 有了上面的一些知識後,再來參考下面這幾篇(小弟也曾經疑惑過,且看大大們是如何提攜我的): http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47414 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47443 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47475 回過來看您的問題,folkchen大大已經給出了很好的範例,你將SQL語句改爲Select * form Table_name where 進貨日期<'2004/10/19'再試試 ================================= <>人生在勤,不索何獲 <>業精於勤荒於嬉,行成於思毀於隨 <>臨淵羡魚不如退而結網
------
人生在勤,不索何获?
junichikimi
一般會員


發表:3
回覆:3
積分:1
註冊:2004-06-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-19 23:17:46 IP:218.162.xxx.xxx 未訂閱
嗯嗯!謝謝各位的回答!我會試試看!
yuyu~
一般會員


發表:0
回覆:4
積分:5
註冊:2005-01-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-10-05 23:57:29 IP:219.84.xxx.xxx 訂閱
建議你擅用sql語法,變數值接宣告成string,在sql語法用cast就可以了

例如樓上大大的例子,改成這樣就不用管日期的型態:
Select * from Table_name Where 進貨日期=cast﹙'2004/10/14' AS DATE)
Select * from Table_name Where 進貨日期=cast﹙'2004-10-14' AS DATE)
Select * from Table_name Where 進貨日期=cast﹙'20041014' AS DATE)

上面三種sql語法查出來的都一樣
這樣可以讓USER輸入時比較友善一點

===================引 用 junichikimi 文 章===================
我有一個用ACCESS建的進貨資料表,欄位有進貨日期(主鍵)、和一些其他的欄位,我是使用ADO的連線方使,我要查詢進貨日期,要怎麼寫sql呢?謝謝
系統時間:2024-04-20 3:03:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!