请帮忙看看这个SQL语句? |
尚未結案
|
yumena555
一般會員 發表:6 回覆:7 積分:2 註冊:2005-10-20 發送簡訊給我 |
我写了1个SQL语句如下:
str:='select * from 工单 where 产品 ="' edit2.Text '" AND 日期 between "' str1 '" and "' str2 '"';
其中str1和str2分别是YEAR-DATE-01、YEAR-DATE-31的格式,本意是想从工单表中查出指定年月里某产品的记录,可实际运行后发现了错误。假如表中有这样一条记录:AAA 2005-11-27,那么当我输入AAA,2005,11运行的结果正确,而输入AAA,2005,1 时也能显示出这条记录,这时候本来应该是找到0条记录的,请问错误出在哪?
|
kgt
高階會員 發表:17 回覆:308 積分:165 註冊:2002-03-13 發送簡訊給我 |
str1和str2分?是YEAR-DATE-01、YEAR-DATE-31的格式?-->是否描述有誤
?我?入AAA,2005,11?行的?果正确-->所代表的變數為?格式為?
?入AAA,2005,1 ?也能?示出????,??候本???是找到0???的-->請先確定database中,是否真的存在此筆記錄?
您的語句str:='select * from 工? where ?品 ="' edit2.Text '" AND 日期 between "' str1 '" and "' str2 '"';-->請將這些變數值show出來,應是between語法造成的結果。
|
yumena555
一般會員 發表:6 回覆:7 積分:2 註冊:2005-10-20 發送簡訊給我 |
对不起,写错了。是YEAR-MONTH-01和YEAR-MONTH-31,本意是想从工单表中查出指定年月里某产品的记录。用了2个edit和1个ComboBox,edit1用来输入年份,edit2用来输入产品名称,ComboBox用来输入月份,默认是1月。代码如下:
str1:='';
str2:='';
str1:=str1 edit1.Text '-';
str1:=str1 ComboBox1.Text '-';
str2:=str1 '31';
str1:=str1 '01';
str:='';
str:=str 'select * from 工单 where 产品="' edit2.Text '" and 日期 between "' str1 '" and "' str2 '"';
//showmessage(str);
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(str);
query1.RequestLive:=true;
query1.Open;
其中“日期”在资料库中是文本类型,格式是YEAR-MONTH-DATE。资料库中有2条记录 AAA 2005-11-27和 AAA 2005-6-27,当输入AAA,2005,11时,运行只找到前面这条记录,结果正确,同样输入6月只找到后面那条记录,运行也正确;而输入AAA,2005,1时,正确结果应该是找到0条记录的,但却把资料库中名称是AAA的记录全输出来了。
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
請試一下處理月份, 1到9月改成 01 到 09 因為字串相比, 您的程式會變成
select * from 工单 where 产品 ="' edit2.Text '" AND 日期 between '2005-1-01' and '2005-1-31' 若改成 between '2005-01-01 and '2005-01-31'
就不會包含 2005-11-27 了
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |