關於select日期的問題 |
答題得分者是:folkchen
|
jay26tw
一般會員 發表:8 回覆:8 積分:3 註冊:2004-02-23 發送簡訊給我 |
try
{
if((Edit1->Text)=="" || (Edit2->Text)=="")
{
ShowMessage("日期輸入不完整");
Edit1->SetFocus();
}
else
{
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM 交易記錄檔 where TxDateTime >= " StrToDate(Edit1->Text) "And TxDateTime <= " StrToDate(Edit2->Text));
ADOQuery1->Active = true;
}
}
catch(...)
{
ShowMessage("輸入日期格式有誤");
} /////////////////////////////////////////////////////
搜尋不到
直接顯示"輸入日期格式有誤"
格式為DateTime
想輸入 2004/03/01 2004/03/06 做條件
不然就顯示Abnormal problem直接關閉程式
不知哪裡錯了
請高手指點 謝謝 我是新手,但不是永遠的新手
只要努力不懈,相信成功就在眼前 發表人 - taishyang 於 2004/03/05 13:35:27
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
try { if((Edit1->Text)=="" || (Edit2->Text)=="") { ShowMessage("日期輸入不完整"); Edit1->SetFocus(); } else { ADOQuery1->Active = false; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM 交易記錄檔 where TxDateTime >= '" StrToDate(Edit1->Text) "' And TxDateTime <= '" StrToDate(Edit2->Text "'")); ADOQuery1->Active = true; } } catch(...) { ShowMessage("輸入日期格式有誤"); }時間要採用字串的方式 , 試試看吧 |
jay26tw
一般會員 發表:8 回覆:8 積分:3 註冊:2004-02-23 發送簡訊給我 |
|
folkchen
高階會員 發表:9 回覆:232 積分:173 註冊:2003-10-09 發送簡訊給我 |
>>ADOQuery1->SQL->Add("SELECT * FROM 交易記錄檔 where TxDateTime >= '" StrToDate(Edit1->Text) "' And TxDateTime <= '" StrToDate(Edit2->Text "'")); 這個寫法不能過的原因是,在串SQL字串前把Edit1->Text做了StrToDate,所以Date不能再和字串相串連。 要先確定你的TxDateTime欄位是什麼Type,若它的Type是 varchar 你直接把Edit1->Text串進SQL字串
若它的Type是 Date 你要用SQL語法把Edit1->Text的字串做 toDate 才可以用 因為不知你的DataBase是什麼,所以我用我熟的Oracle來改寫
ADOQuery1->SQL->Add("SELECT * FROM 交易記錄檔 where TxDateTime >= to_date('" Edit1->Text "','YYYYMMDD') And TxDateTime <= to_date('" Edit2->Text "'','YYYYMMDD')"); 其中的to_date('XXX','YYYYMMDD') 是Oracle的 SQL Function 不是BCB的Function唷,若你用的是其他的DataBase此Function是不一樣的唷
|
jay26tw
一般會員 發表:8 回覆:8 積分:3 註冊:2004-02-23 發送簡訊給我 |
|
folkchen
高階會員 發表:9 回覆:232 積分:173 註冊:2003-10-09 發送簡訊給我 |
|
jay26tw
一般會員 發表:8 回覆:8 積分:3 註冊:2004-02-23 發送簡訊給我 |
我雖然還沒解決問題還在
但是已經有個方向
我會想辦法解決的
我先把我現在的程式貼出來
還是有問題的版本
---------------------------------------
DataBase
TxDateTime => 2004/3/5 下午 03:30:52<----不知是不是跟時間有關
[日期/時間]
---------------------------------------
程式會直接跳到最後的catch(...)
===========================================================
void __fastcall TmIssueLog::Button1Click(TObject *Sender)
{
try
{
if((Edit1->Text)=="" || (Edit2->Text)=="")
{
ShowMessage("日期輸入不完整");
Edit1->SetFocus();
}
else
{
ADOQuery1->Active = false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM 交易記錄檔 where TxDateTime >= cdate(''" Edit1->Text "'') And TxDateTime <= cdate(''" Edit2->Text "'')"); ADOQuery1->Active = true;
}
}
catch(...)
{
ShowMessage("輸入日期格式有誤");
}
} 我是新手,但不是永遠的新手
只要努力不懈,相信成功就在眼前
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |