水晶报表的使用:

原创 2005年05月23日 11:03:00

水晶报表的使用:

 

 

在设计好水晶报表后添加到VB的设计环境里,如图是设计好的云南昆石高速公路报表之一

 

 

 

然后再Param2字段上点击右健,选择格式字段,弹出格式化编辑器的对话框,注意Param2字段是整形数,我们要把它格式化成不同的字符串。

点击完毕出现设计公式工作室,如此继续对Param2进行编辑:

 代码如下:

      if {命令.EventTypeId}=53 and {命令.Param2}=0 then

         "关闭"

   else if {命令.EventTypeId}=53 and {命令.Param2}=1 then

         "正转"

   else if {命令.EventTypeId}=53 and {命令.Param2}=2 then

         "反转"

   else if {命令.EventTypeId}=62 and {命令.Param2}=0 then

         ""

   else if {命令.EventTypeId}=62 and {命令.Param2}=1 then

         ""

   else if {命令.EventTypeId}=71 and {命令.Param2}=0 then

         ""

   else if {命令.EventTypeId}=71 and {命令.Param2}=1 then

         ""

   else if {命令.EventTypeId}=71 and {命令.Param2}=2 then

         ""

   else if {命令.EventTypeId}=74 and {命令.Param2}=0 then

         "取消"

   else if {命令.EventTypeId}=74 and {命令.Param2}=1 then

         "确认"

   else if {命令.EventTypeId}=75 then

         CStr({命令.Param2}+1)+"模式"    

   else if {命令.EventTypeId}=76 and {命令.Param2}=0 then

         "自动"

   else if {命令.EventTypeId}=76 and {命令.Param2}=1 then

         "手动"  

不用我多做解释,聪明如你,一看就明白了。注意上面的代码必须将编辑器语法改为Crystal语法,如果读者熟悉Basic语法,就改为Basic语法,熟悉Delphi 的程序员对这个肯定有“似曾相似燕归来”的感觉,如果不明白为什么,可以问问Delphi程序员 :)。不光是语法上的相识,和在Delphi中的ADOQuery ,ADOTable等的GetText,setText函数方式基本相似。

 

 

我们在定义好水晶报表以后怎样动态的显示我想要的报表,这要使用推模式。不多罗嗦,下面提供了几段VB源代码,可以对初学者有所启发。

Public Sub View_Report_LogSys()

Dim Report As New Report_Logsys

Report.Report_Title.SetText Report_ReportTitle

Report.Report_PrintDate.SetText Report_DateStart

Screen.MousePointer = vbHourglass

   txtSQL = "Select * From VIEW_LOGSYS where Year (EventDate) = " & Report_Year

   If Report_Type > 1 Then

      temp = temp & " and Month(EventDate)=" & Report_Month

   End If

   If Report_Type > 2 Then

      temp = temp & " and Day(EventDate)=" & Report_Day

   End If

 

 

   Select Case Report_EventType

      Case 0

        temp = temp

      Case 1

        temp = temp & " and EventTypeID between 101 and 105"

      Case 2

        temp = temp & " and EventTypeID between 201 and 205"

      Case 3

        temp = temp & " and EventTypeID between 301 and 304"

     

      Case 4

        temp = temp & " and EventTypeID between 401 and 402"

     

      Case 5

        temp = temp & " and EventTypeID between 501 and 504"

     

      Case 6

        temp = temp & " and EventTypeID between 601 and 604"

     

   End Select

   'temp = temp & " and EventTypeID =" & Report_EventType

   txtSQL = txtSQL & temp

  

   Set RstSql = New Recordset

   RstSql.Open txtSQL, cnnMain, adOpenKeyset, adLockOptimistic, adCmdText

   Report.Database.SetDataSource (RstSql)

   CRViewer91.ReportSource = Report

   CRViewer91.ViewReport

   Screen.MousePointer = vbDefault

 

 

 'dim report as New

End Sub

 

 

 

 

Public Sub View_Report_DC()

   Dim temp As String

   Dim Report As New Report_DC

   temp = ""

   Report.Report_Title.SetText Report_ReportTitle

   Report.Report_PrintDate.SetText Report_DateStart

   Report.Report_ZhuangHao.SetText Report_ZhuangHao

   Screen.MousePointer = vbHourglass

   txtSQL = "select * from View_ControlDevice where Year(EventDate) = " & Report_Year

  

   If Report_Type > 1 Then

      temp = temp & " and Month(EventDate)=" & Report_Month

   End If

   If Report_Type > 2 Then

      temp = temp & " and Day(EventDate)=" & Report_Day

   End If

  

   Select Case Report_DeviceID

      Case "74"

        temp = temp & " and EventTypeID= 74"

      Case "75"

        temp = temp & " and EventTypeID =75"

      Case "76"

        temp = temp & " and EventTypeID =76"

      Case Else

        temp = temp & " and DeviceID =" & Report_DeviceID

   End Select

  

  

   txtSQL = txtSQL & temp

   Set RstSql = New Recordset

   RstSql.CursorType = adOpenKeyset

   RstSql.LockType = adLockOptimistic

   RstSql.Open txtSQL, cnnMain, adOpenKeyset, adLockOptimistic, adCmdText

   Report.Database.SetDataSource (RstSql)

   CRViewer91.ReportSource = Report

   CRViewer91.ViewReport

   Screen.MousePointer = vbDefault

 

End Sub

以下为数据库连接:SQLServer 2000配置文件为Ini文件.

Public Sub MakeConnect()

    Dim strServer As String

    Dim strUid As String

    Dim strPwd As String

    Dim strDB As String

    Dim strSql As String

   

    strServer = ReadFromINI(App.Path & "/" & "ODBC.ini", "odbc", "server")

    strUid = ReadFromINI(App.Path & "/" & "ODBC.ini", "odbc", "uid")

    strPwd = ReadFromINI(App.Path & "/" & "ODBC.ini", "odbc", "pwd")

    strDB = ReadFromINI(App.Path & "/" & "ODBC.ini", "odbc", "database")

    strSql = "Driver={SQL Server};Server=" + strServer + ";Address=" + strServer + ",1433;Network=DBMSSOCN;Database=" + strDB + ";Uid=" + strUid + ";Pwd=" + strPwd

    //此段非明文密码,加解密省略

    On Error GoTo ErrHandle

    Set cnnMain = New ADODB.Connection

    cnnMain.ConnectionTimeout = 30

    cnnMain.Open strSql

   

    Exit Sub

ErrHandle:

    Call HandleError

End Sub

'ConnectionString为连接本地数据库

'Public Const ConnectionString = "Driver={SQL Server};" & _

'                                 "Server=LIJUN;" & _

'                                 "Database=JianKong;" & _

'                                 "Uid=sa;Pwd=sa"

'

''str2为连接网络数据库

'Public Const str2 = "Driver={SQL Server};" & _

'                    "Server=218.195.60.3;" & _

'                    "Address=218.195.60.3,1433;" & _

'                    "Network=dbmssocn;" & _

'                    "Database=JianKong;" & _

'                    "Uid=sa;Pwd=sa"

                   

'下面三个变量在每次执行SQL语句时使用

'MsgText 用来返回"查询到" & rst.RecordCount & " 条记录 "语句

'txtSQL 用来存放SQL语句

'mrcc 用来存放执行完txtSQL后返回的记录集

Public MsgText As String

Public txtSQL  As String

Public mrcc As ADODB.Recordset

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset

'executes SQL and returns Recordset

   Dim cnn As ADODB.Connection

 Dim rst As ADODB.Recordset

   Dim sTokens() As String

   On Error GoTo ExecuteSQL_Error

   sTokens = Split(SQL)

   Set cnn = New ADODB.Connection

   cnn.Open ConnetStr

 

   If InStr("INSERT,DELETE,UPDATE,BACKUP", UCase$(sTokens(0))) Then

      cnn.Execute SQL

      MsgString = sTokens(0) & " query successful"

   Else

      Set rst = New ADODB.Recordset

      rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic

      'rst.MoveLast     'get RecordCount

      Set ExecuteSQL = rst

      MsgString = "查询到" & rst.RecordCount & " 条记录 "

   '   MsgBox rst.RecordCount

   End If

  ExecuteSQL_Exit:

   Set rst = Nothing

   Set cnn = Nothing

   Exit Function

  

ExecuteSQL_Error:

   MsgString = "查询错误: " & _

      Err.Description

   Resume ExecuteSQL_Exit

End Function

 

 

.net中水晶报表使用

本次示例目的只是让刚接触水晶报表的朋友掌握其应用,因此示例以简单,简洁,清晰为主,没有连接后台数据库。 Visual studio 2008新建asp.net网站CrystalReportsDe...

有关水晶报表的使用经验和资料总结

有关水晶报表的使用经验和资料总结Asp.Net中使用水晶报表(上)     以下内容为程序代码: 在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如...
  • yjg428
  • yjg428
  • 2011年04月06日 21:58
  • 810

水晶报表使用自定义纸张 发布解决方案

最近做项目需要使用针式打印机进行打印,而且需要上百页连续打印。原先用过水晶报表,感觉还可以,就毫不犹豫的选择的水晶报表。 在开发环境下设置自定义打印纸张,开发,调试发布,一切正常。 但是拿到客户的服务...

使用eclipse在jsp上显示水晶报表(转)

我使用的开发IDE是eclipse3.2,服务器是tomcat5.5 新建一个 Crystal reports web项目 在Target runtime选择apache tomcat v...

vs2005水晶报表程序在vs2008下正常使用的一些实现方法

没有安装部署好水晶报表;(vs2008安装后,不等于安装了vs2008水晶报表) 二、源程序中:VS2008和v2005的水晶报表版本号不对;vs2008的版本号是:Version=10.5.37...

水晶报表使用自定义纸张 发布解决方案 .

最近做项目需要使用针式打印机进行打印,而且需要上百页连续打印。原先用过水晶报表,感觉还可以,就毫不犹豫的选择的水晶报表。 在开发环境下设置自定义打印纸张,开发,调试发布,一切正常。 但是拿...

sharepoint 2010 使用水晶报表的完全方案。

出于对水晶热爱和熟悉 在sharepoint的项目中我依然选择了使用水晶报表,设想之中肯定会有很多困难。出于对VS和sharepoint都很熟的自信,我也提前做预案,废话不说开始。 在水晶报表嵌入sh...

VS2012使用Installshield打包程序-添加水晶报表依赖项

在VS2010中打包程序还是非常方便,添加水晶报表依赖项也很简单,可以参考这里。 这个链接文章给了两种打包程序-包括水晶报表依赖项的方法,第一种方法中出现的问题,在安装了 visual c++ 20...

.NET水晶报表简单使用

原文章来源:http://hi.baidu.com/xtb218/blog/item/97b2b7f8b8bf191dd8f9fd98.html .NET水晶报表首先要从概念入手,水晶报表(Crys...

水晶报表的使用(转载)

    水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文以VS2005简称)集成在一起。喜欢水晶报表的朋友可以方便使用了。我把水晶报表在vs2...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:水晶报表的使用:
举报原因:
原因补充:

(最多只允许输入30个字)