請教Access的問題 |
答題得分者是:william
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
我資料庫是用Acces,程式中sql語法如下
with ADODataSet2 do
begin
Close;
CommandText:='select count(wdate) as amount from cust
where convert(char(6),wdate,112)= ' '''' edit12.Text '''';
Open;
if RecordCount = 0 then
ShowMessage('查無資料');
end;
可是再執行時會出現[Microsoft][ODBC Microsoft Access Driver] 運算式中
未定義的convert函數
請問各位前輩我要如何解決呢
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
ACCESS 裡沒有convert 指令
用Format 吧
例:
where format(wdate,''yyyy/mm/dd'')='2003/01/30' 你可以查sql server 裡的112 看看是何格式,套進fromat 即可
format 完整的日期時間格式如下: yyyy/MM/dd HH:nn:ss ===============================================================================
提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔 發表人 -
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
若使用format(wdate,''yyyy/mm/dd'')
則等號的另一邊須轉換日期/時間格式,可用下列函式
FormatDateTime ('yyyy/mm/dd',wdate);
或許程序上多了些處理步驟,但是對於日期的處理
若你能有一個標準的做法(輸入的日期格式標準化),會對你寫程式上降低許多bug產生的機會 參考看看 ===============================================================================
提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
引言: 若使用format(wdate,''yyyy/mm/dd'') 則等號的另一邊須轉換日期/時間格式,可用下列函式 FormatDateTime ('yyyy/mm/dd',wdate); 或許程序上多了些處理步驟,但是對於日期的處理 若你能有一個標準的做法(輸入的日期格式標準化),會對你寫程式上降低許多bug產生的機會 參考看看 =============================================================================== 提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔 >>< face="Verdana, Arial, Helvetica"> 我想要做的是只須輸入200301就可以將2003年一月所有人數做統計 故我用convert(char(6),wdate,112)來轉換日期格式(轉換出的格式如200301) |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
引言: Try using DatePart and CStr in Access < class="code">cstr(100*datepart('yyyy',wdate_date) datepart('m',wdate_date) 發表人 - william 於 2003/01/31 11:09:57william兄我用你的方法,可是他出現錯誤訊息 [Microsoft][ODBC Microsoft Access Driver]您企圖執行一個查詢不包含 作為總和函數的一部份的指定運算式'wdate' 發表人 - boss 於 2003/01/31 19:23:47 |
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言: 我想要做的是只須輸入200301就可以將2003年一月所有人數做統計 故我用convert(char(6),wdate,112)來轉換日期格式(轉換出的格式如200301) 引言: 若使用format(wdate,''yyyy/mm/dd'') 則等號的另一邊須轉換日期/時間格式,可用下列函式 FormatDateTime ('yyyy/mm/dd',wdate);把/拿掉,並只顯示年月即可 改成 format(wdate,''yyyymm'') FormatDateTime ('yyyymm',wdate); 二邊相等即可 =============================================================================== 提醒您,貼錯文章可立即傳訊通知該版版主/站長/副站長協助處理,不要放著不管喔 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Perhaps the fieldname? I tested it on Access XP
select wdate, cstr(100*datepart('yyyy',wdate) datepart('m',wdate)) from cust; 引言:william兄我用你的方法,可是他出現錯誤訊息 [Microsoft][ODBC Microsoft Access Driver]您企圖執行一個查詢不包含 作為總和函數的一部份的指定運算式'wdate' 發表人 - boss 於 2003/01/31 19:23:47 |
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
william兄
我資料庫是Access 2000
sql語法如下
CommandText:='select count(wdate) as amount from cust
where cstr(100*datepart(''yyyy'',wdate) datepart(''m'',wdate)=' '''' edit1.text ''''
我也用了ddy兄的方法,sql語法如下
CommandText:='select wdate,count(wdate) as amount from cust where format(wdate,''''yyyymm'''')=formatdatetime(''yyyymm'',' '''' edit1.text '''' ')'; 不過也是會出現錯誤訊息
[Microsoft][ODBC Microsoft Access Driver]查詢運算式
format(wdate,''yyyymm'')=formatdate('yyyymm','200301')中的語法錯誤少了運算元
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |