关于qreport的问题,急,我出300分。(100分)

  • 主题发起人 xyt3dnow
  • 开始时间
X

xyt3dnow

Unregistered / Unconfirmed
GUEST, unregistred user!
在qreport中,打印的日期为2002-01-01,但我单位的单据日期已经设置为
年 月 日, 如何分别把2002 01 01分别对应到年月日当中?
急,我出300分。不够还可以加。拜托各位了。
 
如果用的是qrlabel
很简单在onneeddate事件里用decode函数对日期进行分解,动态给qrlable.caption赋值
如果用的是qrdbtext
数据集用sql语句
SELECT SaleDate,
EXTRACT(YEAR FROM saledate) AS YY,
EXTRACT(MONTH FROM saledate) AS MM,
EXTRACT(DAY FROM saledate) AS DD,
AAA,BBB,CCC
FROM Orders
用qrdbtextyear连YY字段,qrdbtextmoth连MM字段 ,qrdbtextday连DD字段,
 
不行啊,大侠,语句加上去了,但不知如何用qrdbtextyear连YY字段,
qrdbtextmoth连MM字段 ,qrdbtextday连DD字段,,可以再详细一点吗?
 
procedure TForm1.QRLabel1Print(sender: TObject;
var Value: String);
var
YY,MM,DD : word;
aDate : TDateTime;
begin
aDate := your DataSet.FieldByName(your date field).asDateTime;
DecodeDate(aDate,YY,MM,DD);
Value := formatfloat('0000',YY)+'年'
+formatfloat('00',MM)+'月'
+formatfloat('00',DD)+'日';
end;

 
假设是adoquery
QRDBText的dataset属性为adoquery
datefield属性为yy (硬往里写,不要管错误提示。)
(或者你把adoquery属性设为true,这样就没有错误提示了,但是要静态写sql属性)
 
mlzhou 大侠:
你的语句好像有问题。我加入sql里,把query的active设为true就出错了。
我的时间字段是qsrq,表是kknd。
 
你用的什么数据库?
放到sql explor中试一下
 
我用的是access,
 
我对access下的sql语句一向头痛,不知道他支持的函数有那些。而且时间一长总弄混。
也许EXTRACT函数它不支持。
把你的sql语句写出来。

1,换成Year,Month,day取年、月、日。
2,select datepart(yy,saledate) as yy, datepart(mm,saledate) as mm, datepart(dd,saledate) as dd
取年、月、日
 
我在sql运行了,还是不行,提示LINE 1: INCORRECT SYNTAX NEAR 'YEAR'
SELECT qsrq
EXTRACT(YEAR FROM qsrq) AS YY,
EXTRACT(MONTH FROM qsrq) AS MM,
EXTRACT(DAY FROM qsrq) AS DD
FROM kknd
GOUJUN大侠误会我意思了,我的意思是把一个日期类型分解成年月日三部分,
把数值对应打印到我的已经设置好格式的表中。
 
SELECT qsrq, //这里要加‘,’号
我其它的方法你试了没有
 
如果用QRSysData直接在OnPrint事件中写入
Value:=FormatDateTime('dddddd',StrToDate(Value))
Or
Value:=FormatDateTime('dddddd',DataSet.FieldByName(DateField).AsDateTime)
 
多人接受答案了。
 
mlzhou大侠,谢谢你了,其他的大侠我也会记住的,如果还不行的话,我还是转回用
pandax的表格算了。不过考虑到以后的数据转换,还是想用access和ado多一点。
 
顶部