在access2000和通过ado连接测试成功的情况下实现想实现动态查询功能(50分)

  • 主题发起人 csshilei
  • 开始时间
C

csshilei

Unregistered / Unconfirmed
GUEST, unregistred user!
在access2000和通过ado连接测试成功的情况下实现想实现动态查询功能,SQL语句在access2000中可以
正常显示查询数据,可在程序中可以通过编译后,输入合约代码和时间后,显示如下:
会员简称 持买单量

就是没有数据显示,救救我吧!!


procedure TForm1.Button1Click(Sender: TObject);
var
Str,str1:String;
begin
ADOQuery1.close;
ADOQuery1.SQL.Clear;
label3.Caption:='';
if hyEdit1.Text=''then label3.Caption:='请输入查询合约'
else
begin
str:=hyEdit1.Text;
end;

if JYDateTimePicker1.Date<=date() then
begin
ADOQuery1.active := false;
str1:='SELECT 多方持仓表.会员简称, 多方持仓表.持买单量'+
' FROM 日成交统计表 INNER JOIN 多方持仓表 ON (日成交统计表.交易日期 = 多方持仓表.交易日期) '+
' WHERE (((日成交统计表.合约代码)=:hyParams) AND ((日成交统计表.交易日期)=:theParams ))'+
' ORDER BY 多方持仓表.持买单量 DESC';
ADOQuery1.sql.text := str1;
ADOQuery1.Parameters.ParamByName('theParams').Value:=JYDateTimePicker1.Date;
ADOQuery1.Parameters.ParamByName('hyParams').Value:='"'+str+'"';
ADOQuery1.Active:=true;
ADOQuery1.Open;
end;

end;


 
access中日期分隔符是#
把你上面的
ADOQuery1.Parameters.ParamByName('theParams').Value:=JYDateTimePicker1.Date;
改成
ADOQuery1.Parameters.ParamByName('theParams').Value:='#'+datetostr(JYDateTimePicker1.Date)+'#';
 
"access中日期分隔符是#"编译通不过。
 
str1:='SELECT 多方持仓表.会员简称, 多方持仓表.持买单量'+
' FROM 日成交统计表 INNER JOIN 多方持仓表 ON (日成交统计表.交易日期 = 多方持仓表.交易日期) '+
' WHERE (((日成交统计表.合约代码)=:hyParams) AND ((日成交统计表.交易日期)=' +
' '#' + theParams + '#'+
' ))'+
' ORDER BY 多方持仓表.持买单量 DESC';
 
thebest 和 yasi 到试了编译通不过!
 
ADOQuery1.active := false;
str1:='SELECT 多方持仓表.会员简称, 多方持仓表.持买单量'+
' FROM 日成交统计表 INNER JOIN 多方持仓表 ON (日成交统计表.交易日期 = 多方持仓表.交易日期) '+
' WHERE 日成交统计表.合约代码=''%s'' AND 日成交统计表.交易日期=#%s#'+
' ORDER BY 多方持仓表.持买单量 DESC';
ADOQuery1.sql.text := format(str1,[str,datetostr(JYDateTimePicker1.Date)]);
//还有,下面两句只要一句
//ADOQuery1.Active:=true;
ADOQuery1.Open;
 
顶部