Delphi7如何調用水晶報表並把條件傳過去(200分求解!!!)(200分)

  • 主题发起人 主题发起人 sock
  • 开始时间 开始时间
S

sock

Unregistered / Unconfirmed
GUEST, unregistred user!
很多時候我們並不須要數據庫中的所有數據,並且也不是固定的要哪些數據。所以必須在Delphi調用水晶報表時傳遞一些須要的參數,使得報表能按這些條件進行刷選出記錄。請問各位高手如何在Delphi中傳遞參數給報表,或報表應該作哪些相應的設置?
我使用的是TCrpe控件,D7 + MSSQLSERVER + Crystal 10
在網上找到:
Crpe.FormulaByName(Name).Formula.Add(QuotedStr(Text));
這段代碼,但調用時出錯。
FormulaByName(Name)中的‘Name’已經給我改為我定義的名字,而‘Text’也給我改為我要的值。
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4650
Delphi 中如何使用水晶报表
 
我用的是控件,難道就沒人遇到過這個問題嗎?這裡有沒有高手啊!!!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2480321
 
JamesBond_L你好!
你有QQ嗎?我只要傳送參數給報表,讓它能按我傳送過去的作為Where條件,把記錄刷選出來打印就OK了,知道的馬上給分,200,不夠再加
 
选别的工具吧,delphi里面的水晶报表好像不能动态生成的。我曾经搞了很久最后还是放弃了。
 
控件有个sql属性,是调用数据库的语句,可以把条件写在sql语句里面,再动态的赋值给控件的sql属性。
 
crpe1.ParamFields[0].CurrentValue:=qryCusNo.fieldbyName('Cus_No').AsString;
即可,你的 报表中要有参数;
 
能有具體的代碼嗎?我剛試了你說的做法,還是出現錯誤了。如果可以的話,請給我個例子,只要可以通過,我馬上給分。如果不夠我還有71分,再不夠我以後收集的還可以給,我只想解決這個問題,希望高手指教。
 
ludelphi,你好!
Delphi代碼如下:
Crpe1.ReportName:='C:/Report2.rpt';
Crpe1.ParamFields[0].CurrentValue:='33';
Crpe1.Show;
報表已經添加參數(數據表的主鍵,自動ID),但調用時出錯,如下信息:
Project Project1.exe raised exception class ECrpeError With message 'Error:536 Error in File C:/Report2.rpt:
Unable to connect: incorrect log on parameters.
Execute<PEStartPrintJob>'.Process stopped. Use Step or Run to continue.
只有使用的參數是設計時默認值才不會出現錯誤。
例如我在設計報表時用 5 去預覽,那麼程序代碼中也必須:
Crpe1.ReportName:='C:/Report2.rpt';
Crpe1.ParamFields[0].CurrentValue:='5';
Crpe1.Show;
才不會出現錯誤。
 
Crpe1.Connect.Clear;
Crpe1.connect.ServerName:= 'server';
Crpe1.connect.DatabaseName:= 'CCC';
crpe1.Connect.UserID:= 'sa';
crpe1.connect.Password:= '';
crpe1.ReportName:='XXX.rpt';
Crpe1.Connect.Propagate := True;
crpe1.DiscardSavedData;
crpe1.ParamFields[0].ShowDialog := False;
crpe1.ParamFields[0].CurrentValue := strTemp;
crpe1.execute;
 
不知是否控件的問題,還是出現如下錯誤:
Project Project1.exe raised exception class ECrpeError With message 'Error:536 Error in File C:/Report2.rpt:
Unable to connect: incorrect log on parameters.
Execute<PEStartPrintJob>'.Process stopped. Use Step or Run to continue.
我在www.2ccc.com和www.playicq.com這兩個網站我都下載了<dcl7cr9.dpk>,但都是一樣有這個錯誤。制作報表方面我就添加一個參數字段(Number類型的),然後用選擇專家使用了這個參數。如果控件沒問題,那就是報表的問題了,但報表這樣做應該不會錯才對啊
 
我用TCrpe控件按照我的方法没有问题,不过我的是Delphi6+Crystal8,但是我认为我的方法应该适合你的。
请问Crpe.FormulaByName(Name).Formula.Add(QuotedStr(Text));
出现什么问题啊?
 
我使用的是 D7 + Crystal9VCL
我忘了什麼錯誤了,你看上面我寫的錯誤,好像都是說轉換參數的錯誤。D6和D7應該沒多大關係,我覺得還是Crystal8和Crystal9的問題。不如你去www.2ccc.com下載這個控件,不然我發郵件給你。
 
你的报表内容你按照apart的来抽数据?他那个方式我没有用过,我用另外一个方式很好,没有任何问题。
至于你说控件或者Crystal版本问题,我觉得也不太可能。
另外,我用Crpe.FormulaByName(Name).Formula.Add(QuotedStr(Text));只是设置报表标题这些文字性的,不知道他是否可以设置计算公式之类的,没有用过。
 
非常感謝JamesBond_L的幫助
 
后退
顶部