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

table過濾資料出現不合法的日期?

尚未結案
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-20 12:35:43 IP:218.171.xxx.xxx 未訂閱
大家好 小弟在過濾table資料的時候 讓dm0.Table1.Filter:='ifwork=1'; 過濾客戶是否上架,決定要不要顯示 這可以run 但是當我要限定某天日期的時候 day='2005-02-11'; dm0.Table1.Filter:='ifwork=1 and workday='+day; 當我run的時候,他會說day字串是不合法的日期 請問這是哪出了問題?    
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-20 15:54:41 IP:203.70.xxx.xxx 未訂閱
"-"不是標準的日期符號, 請試試以斜線標示日期 "2004/10/20"
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-20 18:48:21 IP:218.171.xxx.xxx 未訂閱
引言: "-"不是標準的日期符號, 請試試以斜線標示日期 "2004/10/20"
改成2005/02/02之後 出現另一個錯誤訊息
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-21 10:21:03 IP:220.130.xxx.xxx 未訂閱
是不是要加入引號: dm0.Table1.Filter:=Format('workday=''%s''',['2005/02/02']); 或者'ifwork=1 and workday=''' day '''';
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-21 14:49:19 IP:218.171.xxx.xxx 未訂閱
引言: 是不是要加入引號: dm0.Table1.Filter:=Format('workday=''%s''',['2005/02/02']); ~~這個也是會出現那樣的錯誤訊息 或者'ifwork=1 and workday=''' day ''''; ~~~ 現在就是這樣寫的 會出現上面那個錯誤訊息
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-21 15:03:05 IP:218.15.xxx.xxx 未訂閱
插个花 您好: 看您定义day='2005-02-11' > dm0.Table1.Filter:='ifwork=1 and workday=' QuotedStr(day);//加上'' ~~~静心养德~~~
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-21 15:41:55 IP:218.171.xxx.xxx 未訂閱
引言: 插个花 您好: 看您定义day='2005-02-11' > dm0.Table1.Filter:='ifwork=1 and workday=' QuotedStr(day);//加上'' workday 設定date型態 但是我還是測試了看看 出現一樣的錯誤訊息 ~~~静心养德~~~
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-21 16:40:36 IP:218.15.xxx.xxx 未訂閱
不好意思,小弟猜错了 如果是TDate类型的话,是类似于2005-02-11这种格式吗,应该是您所定义的day变量与您的表里的workday格式不一样,用formatdate对day进行转换格式,转成和workday格式一样的格式再进行过滤。    试试看 <>~~~静心养德~~~
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-21 23:01:00 IP:218.171.xxx.xxx 未訂閱
引言: 不好意思,小弟猜错了 如果是TDate类型的话,是类似于2005-02-11这种格式吗,应该是您所定义的day变量与您的表里的workday格式不一样,用formatdate对day进行转换格式,转成和workday格式一样的格式再进行过滤。 试试看 <>~~~静心养德~~~ < face="Verdana, Arial, Helvetica"> 我看了DB是存成2005-02-02
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-22 08:09:21 IP:218.15.xxx.xxx 未訂閱
eko您好: 小弟试了可以耶 参考如下,如还不行,可否将代码及表传上来看看  
 
procedure TForm1.Button1Click(Sender: TObject);
var
  day:string;
begin
  table1.Open;
  day:='2003-12-1';
  table1.Filtered:=false;
  table1.Filter:='ReadNum=100 and Dat1=' day;
  table1.Filtered:=true;
end;
其中:ReadNum为Alpha类型,Dat1为TDate类型
在D6 BDE执行通过
~~~静心养德~~~ 發表人 - deity 於 2005/02/22 08:12:43
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-02-24 10:38:37 IP:218.171.xxx.xxx 未訂閱
引言: eko您好: 小弟试了可以耶 参考如下,如还不行,可否将代码及表传上来看看
 
procedure TForm1.Button1Click(Sender: TObject);
var
  day:string;
begin
  table1.Open;
  day:='2003-12-1';
  table1.Filtered:=false;
  table1.Filter:='ReadNum=100 and Dat1=' day;
  table1.Filtered:=true;
end;
其中:ReadNum为Alpha类型,Dat1为TDate类型
在D6 BDE执行通过
~~~静心养德~~~ 發表人 - deity 於 2005/02/22 08:12:43
感謝 可是我測試一樣不行 day:=datetostr(datetimepicker1.date); day1:=copy(day,1,4) '/' copy(day,6,2) '/' copy(day,9,2); dm0.Table1.Close; dm0.Table1.Open; day:='(workday=''' day1 ''') and (ifwork=1)'; dm0.Table1.Filtered:=false; dm0.Table1.Filter:=day; dm0.Table1.Filtered:=true; 當過濾器打開的時候,就會出現錯誤訊息 這跟我再成是一開始 設定Shortdateformat:='yyyy-mm-dd';有關嗎? 用query一定可以,可是這樣就不能設定二個表格互相關聯了
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-02-24 20:36:13 IP:219.129.xxx.xxx 未訂閱
您好:   
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shortdateformat:='yyyy-mm-dd';
  Table1.TableName:='f:\delphi\table\test.db';
  Table1.Open;
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  day,day1:string;
begin
  day:=datetostr(datetimepicker1.date);

  day1:=copy(day,1,4) '/' copy(day,6,2) '/' copy(day,9,2);
  
  day1:=copy(day,1,4) '-' copy(day,6,2) '-' copy(day,9,2);//改成如下试试,不过这样写没多大意义
  Table1.Close;
  Table1.Open;
  day:='(dat1=' day1 ') and (ReadNum=100)';
  Table1.Filtered:=false;
  Table1.Filter:=day;
  Table1.Filtered:=true;    end;    //您所贴的代码,不是参照我给您的啊< >,修改了下,您试试,或参考下面
>
如果还不行,小弟真是没办法了< >或把档案放上会员求助区看看    <>~~~静心养德~~~ 

        
eko
一般會員


發表:21
回覆:36
積分:11
註冊:2004-09-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-02-25 12:05:34 IP:218.171.xxx.xxx 未訂閱
引言: 您好:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shortdateformat:='yyyy-mm-dd';
  Table1.TableName:='f:\delphi\table\test.db';
  Table1.Open;
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  day,day1:string;
begin
  day:=datetostr(datetimepicker1.date);

  day1:=copy(day,1,4) '/' copy(day,6,2) '/' copy(day,9,2);
  
  day1:=copy(day,1,4) '-' copy(day,6,2) '-' copy(day,9,2);//改成如下试试,不过这样写没多大意义
  Table1.Close;
  Table1.Open;
  day:='(dat1=' day1 ') and (ReadNum=100)';
  Table1.Filtered:=false;
  Table1.Filter:=day;
  Table1.Filtered:=true;    end;    //您所贴的代码,不是参照我给您的啊< >,修改了下,您试试,或参考下面
>
如果还不行,小弟真是没办法了< >或把档案放上会员求助区看看    <>~~~静心养德~~~     
我的確這樣測試過了 不過還是出現一樣的訊息
系統時間:2024-09-30 19:22:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!