VB查询数据库之报表——机房收费系统总结六

我们要用一个软件做报表的模板、然后在VB里面添加部件、代码调用模板,详细步骤如下。


一、下载安装


首先做报表要下载安装Grid++Report 4.5 报表设计器

点击下载(内含破解补丁)


二、制作模板


1、打开软件——插入——页眉、明细网格、页脚、如图


2。制作页眉


静态框:好像Label,能写入文字显示

综合文字框:可以写入函数、变量等、跟文字结合并显示在这里我们用作显示日期



上图右下角[#date3#][#time#]制作是自定义了date3跟time这两个变量、并且在VB代码中付给他俩当前的日期与时间、做法如下。


(1)新建参数


这里叫做参数、其实也是数据的容器、我还是习惯叫变量、都差不多

在软件的右边如图、参数集合---插入---参数



(2)更改属性


这个就是相当于给参数或者说变量命名、定义格式、定义数据类型

名称:VB付给这个参数值的时候要写

格式:日期是yyyy/mm/dd时间的hh:mm:ss如图

我一共定义了4个参数、

date1和date2是显示周报表查询从日期1到日期2的日期如图

date3和time是显示当前日期和时间

具体效果如图



(3)放到页眉上


参数定义好、下面就放上去了、首先在页眉新建一个综合文字

然后双击文字框、弹出窗口点击、插入域-----引用类型选参数----然后选择参数



效果如图


3、制作表格


(1)连接数据库(从左到右依次点击)


——查询sql语句写自己的表

记得点下测试、一般没问题、有问题的话看下sql语句是否写错



(2)生成字段和列


先点击1、然后点击2、便可以自动执行刚刚的sql语句获得表里的字段和行



页眉就不说了、直接用静态框就可以了

1.添加Grid++Report 的控件、如图

2.选择名字为GrdisplayViewer的控件、放到From上(蓝色第一个

3.其他控件也放上去、名字如下图(跟我名字一样才能用.名字不一样要改代码



4.开始时间和结束时间用的是时间控件DTPicter时间控件,部件载入名上图有(本人忘了是哪个了……)


5.引用(菜单--工程--引用)引用Grid++Re…………如图




6.代码(复制进去应该就行了、有详细备注、实在不懂的可以点我

[vb] view plaincopyprint?
1.Dim WithEvents Report As grproLibCtl.GridppReport  '实例化报表</SPAN>  
2.'报表刷新  
3.Private Sub cmdCheckDay_Click()  
4.    Dim txtsql As String  
5.    '判定终止日期不能小于起始日期  
6.    If StartDateView.Value > EndDateView.Value Then '条件限制  
7.        MsgBox "终止日期不能小于起始日期!","温馨提示"  
8.        Exit Sub  
9.    End If  
10.  
11.    Report.DetailGrid.Recordset.ConnectionString = ConnectString '数据源连接数据库直接调用写好的模块内容  
12.    If txtBalance.Text = "" Then '判断上期text里是否为空  
13.        '查询日期1到日期2的记录  
14.        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _  
15.                 StartDateView.Value & "' and '" & EndDateView.Value & "'"  
16.    Else  
17.        '如果上期余额的text里不为空则查询日期1到日期2中、上期余额是文本中的记录  
18.        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _  
19.                 StartDateView.Value & "' and '" _  
20.                 & EndDateView.Value & "' And Balance = '" & txtBalance.Text & "'"  
21.    End If  
22.  
23.    '显示报表中的内容  
24.    Report.DetailGrid.Recordset.Querysql = txtsql  
25.    GrdWeekliyBill.Refresh  
26.  
27.    '报表模板上的4个日期或时间赋值  
28.    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value,"yyyy-mm-dd")  
29.    Report.ParameterByName("Date2").Value = Format$(EndDateView.Value,"yyyy-mm-dd")  
30.    Report.ParameterByName("Date3").Value = Date  
31.    Report.ParameterByName("time").Value = Time  
32.  
33.End Sub  
34.'预览  
35.Private Sub cmdpreview_Click()  
36.    Report.PrintPreview (True)  
37.End Sub  
38.  
39.'打印  
40.Private Sub cmdput_Click()  
41.    Report.[Print] (True)  
42.End Sub  
43.  
44.'载入窗体  
45.Private Sub Form_Load()  
46.    '创建报表对象  
47.    Set Report = New grproLibCtl.GridppReport  
48.    '载入报表模版文件  
49.    Report.LoadFromFile (App.Path & "\周报表.grf")  
50.    '设置数据连接串  
51.    Report.DetailGrid.Recordset.ConnectionString = ConnectString  
52.  
53.    '查询语句  
54.    txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & StartDateView.Value & "' and '" & EndDateView.Value & "'"  
55.    Report.DetailGrid.Recordset.Querysql = txtsql '执行  
56.    '显示报表中的内容  
57.    GrdWeekliyBill.Report = Report  
58.    GrdWeekliyBill.Start  
59.  
60.    '报表模板上的4个日期或时间赋值  
61.    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value,"yyyy-mm-dd")  
62.    Report.ParameterByName("Date2").Value = Format$(EndDateView.Value,"yyyy-mm-dd")  
63.    Report.ParameterByName("Date3").Value = Date  
64.    Report.ParameterByName("time").Value = Time  
65.  
66.End Sub  
Dim WithEvents Report As grproLibCtl.GridppReport  '实例化报表</SPAN>
'报表刷新
Private Sub cmdCheckDay_Click()
    Dim txtsql As String
    '判定终止日期不能小于起始日期
    If StartDateView.Value > EndDateView.Value Then '条件限制
        MsgBox "终止日期不能小于起始日期!","温馨提示"
        Exit Sub
    End If

    Report.DetailGrid.Recordset.ConnectionString = ConnectString '数据源连接数据库直接调用写好的模块内容
    If txtBalance.Text = "" Then '判断上期text里是否为空
        '查询日期1到日期2的记录
        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _
                 StartDateView.Value & "' and '" & EndDateView.Value & "'"
    Else
        '如果上期余额的text里不为空则查询日期1到日期2中、上期余额是文本中的记录
        txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & _
                 StartDateView.Value & "' and '" _
                 & EndDateView.Value & "' And Balance = '" & txtBalance.Text & "'"
    End If

    '显示报表中的内容
    Report.DetailGrid.Recordset.Querysql = txtsql
    GrdWeekliyBill.Refresh

    '报表模板上的4个日期或时间赋值
    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value,"yyyy-mm-dd")
    Report.ParameterByName("Date2").Value = Format$(EndDateView.Value,"yyyy-mm-dd")
    Report.ParameterByName("Date3").Value = Date
    Report.ParameterByName("time").Value = Time

End Sub
'预览
Private Sub cmdpreview_Click()
    Report.PrintPreview (True)
End Sub

'打印
Private Sub cmdput_Click()
    Report.[Print] (True)
End Sub

'载入窗体
Private Sub Form_Load()
    '创建报表对象
    Set Report = New grproLibCtl.GridppReport
    '载入报表模版文件
    Report.LoadFromFile (App.Path & "\周报表.grf")
    '设置数据连接串
    Report.DetailGrid.Recordset.ConnectionString = ConnectString

    '查询语句
    txtsql = "select * from ReportForms_Info where cast(convert(varchar,date) as datetime) between '" & StartDateView.Value & "' and '" & EndDateView.Value & "'"
    Report.DetailGrid.Recordset.Querysql = txtsql '执行
    '显示报表中的内容
    GrdWeekliyBill.Report = Report
    GrdWeekliyBill.Start

    '报表模板上的4个日期或时间赋值
    Report.ParameterByName("Date1").Value = Format$(StartDateView.Value,"yyyy-mm-dd")
    Report.ParameterByName("Date3").Value = Date
    Report.ParameterByName("time").Value = Time

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")