QuickRpeort问题 白送50分(50分)

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

combol

Unregistered / Unconfirmed
GUEST, unregistred user!
在使用QuickRpeort时,其数据源来源于动态SQL查询的结果
在报表中QRDBText1的Dataset可以指向form1.Query1,但其Datafield却
不能指向Query1中的数据项.
Help>>>>>>>>>>>>>
另:如果所有的分数都用完了,会有什么结果.
//-----------------------
 
1.你可以动态给QR赋值.
2.回答别人的问题或再注册一帐号.
 
具体地说呢,我试的半天,总是Error
 
比如QRDBTEXT吧
...
QRDBText1.DataSet:=Query1;
QRDBText1.DataField:=Query1.fieldbyname('dsss').FieldName;
...
 
ISQL语句如下:
query1.Close;
query1.SQL.clear;
query1.SQL.add('select zhigong.xingmin,zhigong.xinbie,');
query1.SQL.add('from "zhigong.db" zhigong');
query1.sql.add('where xingmin like :var45');
query1.Parambyname('var45').asstring:='%郑%';
query1.Prepare;
query1.open;
另:
QRDBText1.DataSet:=form1.Query1;
QRDBText1.DataField:=form1.Query1.fieldbyname('zhigong.xingmin').asstring;
message: "query1" field "zhigong.xinmin" no found

 
combol老兄:
既然dataset已经界定为QUERY1了,datafield如何还能加上前缀呢?而且你加的还是字段中的值,当然不对喽!应改为:
QRDBText1.DataSet:=form1.Query1;
QRDBText1.DataField:=form1.Query1.fieldbyname('xingmin').fieldname;
或干脆:
QRDBText1.DataField:='xingmin';
再试试!
 
再次求教:
在BOTTON CLICK中添加如下语句:
form1.query1.Active :=true;
form4.QRDBText1.DataSet:=form1.Query1;
form4.QRDBText1.DataField:='xingmin';
Form4.QuickRep1.Preview;
//No Error Found, BUT
前述SQL查询的结果为11个,在Preview里只显示11排空格,没有记录
我试了静态SQL查询,设
Query1.active:=true;
form4.QRDBText1.DataSet:=form1.Query1;
form4.QRDBText1.DataField:='xingmin';
可以显示.
Why???
 
我想应该是你的SQL语句有问题,动态与静态SQL应该是没有什么区别的.自己再查一下.
 
佩服佩服,menxin 果然是SQL语句的问题,在程序中我的写法如下:

procedure TForm1.Button1Click(Sender: TObject);
var
now:Tdatetime;
a,year,m,d:word;
b:Variant ;
begin
now:=date();
decodedate(now,year,m,d);
query1.Close;
query1.SQL.clear;
query1.SQL.add('select * from zhigong.db');
query1.SQL.add('select zhigong.xingmin as 姓名 ,zhigong.xinbie
as 性别,');
query1.SQL.add(''+IntToStr(year)+'-EXTRACT(YEAR FROM zhigong.csrq)');
query1.SQL.add('from "zhigong.db" zhigong');
query1.sql.add('where xingmin like :var45');
query1.Parambyname('var45').asstring:='%郑%';
query1.Prepare;
query1.open;
end;

问题的关键就在于我在其中加入了两个 as 所以
Query1.active:=true;
form4.QRDBText1.DataSet:=form1.Query1;
form4.QRDBText1.DataField:='xingmin';
<--这里就要写成这样-|
|
form4.QRDBText1.DataField:='姓名';
<------- |
这样一来问题就解决了.
再次感谢!! 50分是你的了.


 
接受答案了.
 

Similar threads

回复
0
查看
863
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部