none
VB2008中如何使用水晶报表啊 RRS feed

  • 问题

  • FORM中有一个按钮是用来打印FORM中的内容,想用水晶报表来实现,上网搜了一些水晶报表的教程,但大多是使用专家模板连接本地数据库的做法。我的数据库是在远程服务器上,这样一来的话就不能在设计时就绑定数据源的,必须在程序运行时动态的连接数据库。

    谁能告诉我该如何做吗?最好能提供一个简单的例程。

     

    谢谢啦

    2010年11月15日 8:28

答案

  • 你好

    我上面的Source Code 忘了

    LOAD Report 可能是因為這樣所以出現"无效的报表文件路径"

    你有輸入REPORT 的PATH 嗎?

    E.G.

    _CReportDoc.Load(filepath)
    
    please correct me if my concept is wrong


    Chi
    2010年11月17日 6:33
    版主

全部回复

  • 你好

    或者你可以參考以下URL

    http://msdn.microsoft.com/en-us/library/bb126227(v=VS.90).aspx

    你是不是已經有一個.RPT  檔案的

    如果你想已變DATABASE CONNECTION 的話

    可以嘗試使用以下的CODE

    Private _CReportDoc As ReportDocument

     _CReportDoc.SetDatabaseLogon(username, pw, ServerName, DB)

    我公司有用Crystal Report 來Generate PDF 的

    做法是用Crystal Report Application 來寫一佪Report 之後用數據庫 取資料到Report上

    如的情況果和你差不多的話..我可以嘗試 Summaries 我所用的功能

    一起交流一下

    或者你可以參考以下URL, 有一個Crystal Report Helper Lib, 可能可以解決這個問題

    http://blog.sharechiwai.com/2010/11/crystal-report-helper-lib/

    http://crystalreporthelper.codeplex.com/

    Please correct me if I mis-understood your questions.


    Chi
    2010年11月15日 8:59
    版主
  • 谢谢ChiYau版主您的帮助.

     

    我的要求很简单,在FORM中输入一条记录,这条记录包含的字段比较多,大约有二十个.FORM中有一个确定button和一个打印button.确定button是将输入的数据保存到数据库中,打印button是要将刚输入的数据打印出来.我用VB2008中的CR做了一个空白的报表,在这个空白报表中我将要打印的内容都对应到每一个参数,我想将FORM中这些textbox,combox等控件的内容传送到报表中的相应参数进行打印.

     

    2010年11月16日 0:31
  • 没有怎么用过水晶报表,但是我想你可以按照2楼版主所言,远程连接并且动态设置查询语句应该是可以的。
    2010年11月16日 3:27
    版主
  • 在VB2008中添加了一个空白的报表.

    因为是在输入完成并保存后才打印,所以我想如果不用查询而是将FORM中TEXTBOX,COMBOBOX,DATETIMEPICKER等控件中输入或选择的值赋给相应的变量,再将这些变量的值传递到水晶报表中的参数.这样做是不是可行,如果可行的话应该如何传递变量的值到CR中相应的参数呢?

    2010年11月16日 5:49
  • 你好

    應該是可以的, 如果你已經知道大概有多小的變數要處理的話...可以用以下方法, 打變數交到Crystal report 中, 

    dim _CReportDoc As new ReportDocument 
    _CReportDoc.SetParameterValue(ParamName, ParamValue)

    Please correct me if my concept is wrong


    Chi
    2010年11月16日 6:38
    版主
  • ChiYau,

    您好!

    您上面代码中的paramname和paramvalue是参数名和参数值吧,是不是将变量的值赋给paramvalue呢?

    例如我在报表中加入了5个参数(实际上有20个分别对应表中的一个字段,也就是FORM上要输入或选择的内容): kehuId, KehuName,KehuAddress,orderDate,sales. 这5个参数分别对应FORM中的三个TEXTBOX控件和一个Datetimepicker控件和一个combobox控件:

    KehuId  -----txtkehuid

    KehuName-----txtkehuName

    KehuAddress----txtKehuaddress

    OrderDate-----DTorderdate  是一个datetimepicker控件

    Sales----Cbsales   是一个combobox控件

    变量名如下:

    dim pkehuid as string=txtkehuid.text

    dim pkehuname as string=txtkehuname.text

    dim pkehuaddress as string =txtkehuaddress.text

    dim porderdate as date = dtorderdate.value.date

    dim psales as string = cbsales.text

    要是按您上面说的方法,应该如何写代码呢?是一个参数接一个参数处理吗?

    麻烦您帮写一下简单的代码.

    谢谢!

     

     

    2010年11月16日 8:09
  • 你好

    如果以下是你Crystal Report 的變數

    你可以嘗試 以下的Code 把Parameter填上

    E.G.

    dim _CReportDoc As new ReportDocument 
    _CReportDoc.SetParameterValue("KehuId", pkehuid)
    _CReportDoc.SetParameterValue("KehuName", pkehuname )
    _CReportDoc.SetParameterValue("KehuAddress", pkehuaddress )
    _CReportDoc.SetParameterValue("OrderDate", porderdate )
    _CReportDoc.SetParameterValue("Sales", psales )

    應該可以解決這個問題的

    我有些報告都是有Pass parameter 的, 我用的是Crystal Report XI R2

    Please correct me if my concept is wrong


    Chi
    2010年11月16日 8:28
    版主
  • ChiYau,

    您好!

    谢谢. 晚上我试试.

    再请教一下,如果要是将这个报表打印出来,应该用什么命令呢?

    2010年11月16日 9:03
  • 你好

    我其實懂一部份的Crystal Report function 的
    有機會一起交流使用Crystal Report 的心得 =)

    或者你可以嘗試使用CrystalReportHelperLib 
    我感覺上用這個Library 比較直接做用Crystal Report Class 更方便... 因為要Summaries 常用的功能

    以下是Print Report 的Code
    CReportDoc.PrintToPrinter(1, True, PageFrom, PageTo)

    如果你是使用這 CrystalReportHelperLib 的話
    會是
    CReportDoc.PrintAllDoc()

    CrystalReportHelperLib 中文 Code Sample

    CrystalReportHelperLib  Code Sample

    Please correct me if my concept is wrong


    Chi
    2010年11月16日 10:01
    版主
  • ChiYau,

     

    morning!

    昨晚有试一下您所说的代码,但是在调试时出现"无效的报表文件路径"错误,请问如何解决.调试时显示错误的地方是第一个:

    _CReportDoc.SetParameterValue("KehuId", pkehuid)

    另您所做的crystalreporthelperlib已经下载,但是codeplex网站在升级.看不到code sample.在您的BLOG中有看到.等一下会试试.

    2010年11月17日 0:29
  • crystalreporthelperlib是昨天下载的,今天CODEPLEX网站在升级,访问不了的.
    2010年11月17日 0:32
  • 你好

    我上面的Source Code 忘了

    LOAD Report 可能是因為這樣所以出現"无效的报表文件路径"

    你有輸入REPORT 的PATH 嗎?

    E.G.

    _CReportDoc.Load(filepath)
    
    please correct me if my concept is wrong


    Chi
    2010年11月17日 6:33
    版主
  • 谢谢!

     

    没有输入report的地址.

    我晚上再试试.

    2010年11月17日 9:44