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

TADOQuery的一个问题

尚未結案
sunyard
一般會員


發表:9
回覆:10
積分:3
註冊:2004-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-16 17:22:31 IP:202.110.xxx.xxx 未訂閱
請問各位先進 var T1,T2: TDatetime; ......................... T1:= Datetimepicker1.date; // Datetimepicker1)控件中录入的为'08-01-2004' T2:= Datetimepicker2.date; // Datetimepicker1)控件中录入的为'08-10-2004' with ADOQuery2 do begin close; sql.Clear; sql.text:='select jgamt.jgdm,jgbh.jgmc,jgamt.rj,jgamt.amt from jgamt,jgbh where jgamt.jgdm=:para1 and ( jgamt.rj between :para2 and :para3 ) and jgbh.jgdm=jgamt.jgdm order by jgamt.jgdm,jgamt.rj';//此外不会换行,请教? Parameters.ParamByName('para1').Value:= ss; Parameters.ParamByName('para2').Value:= T1; Parameters.ParamByName('para3').Value:= T2; active:= TRUE; open; end; with DBGrid1.Columns do begin Items[0].Title.Caption:= '机构代码'; Items[1].Title.Caption:= '机构名称'; Items[2].Title.Caption:= '日期'; Items[3].Title.Caption:= '余额'; Items[0].FieldName:= 'jgdm'; Items[1].FieldName:= 'jgmc'; Items[2].FieldName:= 'rj'; Items[3].FieldName:= 'amt'; end; 可是在实际执行结果中,DBGrid1显示的ADOQuery1的查询结果,其日期范围却是从“08-02-2004”到“08-11-2004”,而不是 在Datetimepicker控件中的范围,总是多加了一天,为什么? 謝謝
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-16 19:15:33 IP:220.135.xxx.xxx 未訂閱
Hi sunyard 你好:    這跟時間有關, 請改成以下試試

T1:= Trunc(Datetimepicker1.date);
T2:= Trunc(Datetimepicker2.date); 
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
sunyard
一般會員


發表:9
回覆:10
積分:3
註冊:2004-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 10:32:33 IP:202.110.xxx.xxx 未訂閱
感谢Miles的回覆: T1:= Trunc(Datetimepicker1.date); T2:= Trunc(Datetimepicker2.date); 我作了如上的修改,仍然无法成功,?? 请再给予解释,谢谢!
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-17 12:19:36 IP:203.198.xxx.xxx 未訂閱
var
//T1,T2: TDatetime;
T1,T2: String;    .........................    //T1:= Datetimepicker1.date; // Datetimepicker1)控件中录入的为'08-01-2004'
T1:=FormatDateTime('yyyy/mm/dd',Datetimepicker1.Date);
//T2:= Datetimepicker2.date; // Datetimepicker1)控件中录入的为'08-10-2004'
T2:=FormatDateTime('yyyy/mm/dd',Datetimepicker1.Date);        with ADOQuery2 do
begin
  close;
  sql.Clear;
  sql.text:='select jgamt.jgdm,jgbh.jgmc,jgamt.rj,jgamt.amt from   jgamt,jgbh where jgamt.jgdm=:para1 and ( jgamt.rj between :para2  and :para3 ) and jgbh.jgdm=jgamt.jgdm order by jgamt.jgdm,jgamt.rj';//此外不会换行,请教?
  Parameters.ParamByName('para1').Value:= ss;
  Parameters.ParamByName('para2').Value:= T1;
  Parameters.ParamByName('para3').Value:= T2;
  active:= TRUE;
  open;
end;
with DBGrid1.Columns do
begin
  Items[0].Title.Caption:= '机构代码';
  Items[1].Title.Caption:= '机构名称';
  Items[2].Title.Caption:= '日期';
  Items[3].Title.Caption:= '余额';
  Items[0].FieldName:= 'jgdm';
  Items[1].FieldName:= 'jgmc';
  Items[2].FieldName:= 'rj';
  Items[3].FieldName:= 'amt';
end;    
《觸不到的問題人》 來無影,去無踪, 問題總是一羅羅。 世上無難事,惟有『夾硬黎』
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-17 14:15:41 IP:220.135.xxx.xxx 未訂閱
Hi sunyard 你好:    先確定一下欄位jgamt.rj裡的資料有時間嗎?    回答錯誤, 修正~~~ 我不是高手, 高手是正在銀幕前微笑的人. 發表人 -
------


我不是高手, 高手是正在銀幕前微笑的人.
deity
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-17 16:27:47 IP:218.15.xxx.xxx 未訂閱
引言:
請問各位先進     var
  T1,T2: TDatetime;    .........................      T1:= Datetimepicker1.date;  // Datetimepicker1)控件中录入的为'08-01-2004'
  T2:= Datetimepicker2.date;  // Datetimepicker1)控件中录入的为'08-10-2004'
 
 with ADOQuery2 do
  begin
    close;
    sql.Clear;
    sql.text:='select jgamt.jgdm,jgbh.jgmc,jgamt.rj,jgamt.amt'
              'from jgamt,jgbh'
              'where jgamt.jgdm=:para1' 
              'and (jgamt.rj between :para2 and :para3 )'
              'and jgbh.jgdm=jgamt.jgdm'
              'order by jgamt.jgdm,jgamt.rj';//分行
    Parameters.ParamByName('para1').DataType :=ftstring;参数类型
    Parameters.ParamByName('para1').Value:= ss;
    Parameters.ParamByName('para2').DataType :=ftdate;  
    Parameters.ParamByName('para2').Value:= T1;
     Parameters.ParamByName('para3').DataType :=ftdate; 
    Parameters.ParamByName('para3').Value:= T2;
    active:= TRUE;
    open;
  end;
  with DBGrid1.Columns do
  begin
    Items[0].Title.Caption:= '机构代码';
    Items[1].Title.Caption:= '机构名称';
    Items[2].Title.Caption:= '日期';
    Items[3].Title.Caption:= '余额';
    Items[0].FieldName:= 'jgdm';
    Items[1].FieldName:= 'jgmc';
    Items[2].FieldName:= 'rj';
    Items[3].FieldName:= 'amt';
  end;    可是在实际执行结果中,DBGrid1显示的ADOQuery1的查询结果,其日期范围却是从“08-02-2004”到“08-11-2004”,而不是
在Datetimepicker控件中的范围,总是多加了一天,为什么?     謝謝
sunyard您好:试试看

< face="Verdana, Arial, Helvetica">    ——行径窄处,留一步与人行——
——Never give up, never surrender——
        
sunyard
一般會員


發表:9
回覆:10
積分:3
註冊:2004-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-18 14:55:25 IP:202.110.xxx.xxx 未訂閱
感谢deity,问题基本解决,原来是需要先确定一下sql语句中的参数类型。 但还请教,如你所示将sql.text “分行”后,程序运行时提示: Parameters 'para1' not found! 还要请教。。。????? 此外还要感谢Miles及Problmman! 另外,要告诉Miles: jgamt.rj 的数据类型为date型
deity
尊榮會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-18 16:40:58 IP:218.15.xxx.xxx 未訂閱
sunyard您好: 试试加多一个括号,检查书写有无错误,按理说,如果没分行能通过的话,分行后也应该没问题的,试试看 with ADOQuery2 do   begin     close;     sql.Clear;     sql.text:='select jgamt.jgdm,jgbh.jgmc,jgamt.rj,jgamt.amt' 'from jgamt,jgbh' 'where (jgamt.jgdm=:para1)' 'and (jgamt.rj between :para2 and :para3 )' 'and (jgbh.jgdm=jgamt.jgdm)' 'order by jgamt.jgdm,jgamt.rj';//分行 ——行径窄处,留一步与人行—— ——Never give up, never surrender——
sunyard
一般會員


發表:9
回覆:10
積分:3
註冊:2004-08-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-19 08:44:00 IP:202.110.xxx.xxx 未訂閱
Hi,deity: 加上括号后,提示语法错误,我实在不明白? 无奈改为: sql.add('select jgamt.jgdm,jgbh.jgmc,jgamt.rj,jgamt.amt'); sql.add('from jgamt,jgbh'); sql.add('where jgamt.jgdm=:para1'); sql.add('and jgamt.rj between :para2 and :para3'); sql.add('and jgamt.jgdm=jgbh.jgdm'); 后成功!
系統時間:2024-09-12 7:13:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!