VB中SQL合计函数的使用
2008-04-09 04:44:26来源:互联网 阅读 ()
1 问题的提出
在数据库的操作中,常常会涉及数据表中记录的个数、某字段的最大值或最小值、某字段的平均以及某字段的总和等计算。这些计算当然可以通过设计算法,利用VB程序本身来实现。但是如果利用VB中的SQL合计函数,则求解过程大为简化,程序效率大大提高。
VB中的SQL合计函数主要包括记录个数(COUNT)、最大值(MAX)、最小值(MIN)、平均值(AVG)以及求和(SUM)。虽然这些合计函数十分有用,但关于它的使用方法在文献资料甚至是数据库高级编程专著中却少有介绍,使涉足VB的开发人员往往舍近求远、弃简就繁,放弃对这些函数的使用。VB的帮助系统虽然给出了这些函数的引用格式,但如何将它们应用在VB程序设计中则不甚明了。
2 SQL合计函数的引用格式
我们通过一个实例来说明SQL合计函数的使用。为此,先利用VB的可视化数据管理器建立一个数据库文件sql.mdb,再创建一个数据表salary,salary包括三个字段,由三个记录组成,如图1所示。
合计函数的引用格式为:
COUNT(*) 计算数据表中记录个数
MAX(年龄) 给出最大年龄
MIN(年龄) 给出最小年龄
AVG(工资) 计算平均工资
SUM(工资) 计算工资总和
3 在VB中使用SQL合计函数
在VB中使用SQL合计函数需要借助于SELECT语句,例如:
SELECT MAX(年龄) AS maxa, SUM(工资) AS sums FROM salary
可求出最大年龄和工资总和,结果分别存放到动态字段变量maxa和sums中。
SELECT语句还可带有WHERE短语,以限制参与计算的记录。例如:
SELECT SUM(工资) AS sumsa FROM salary WHERE(年龄>30)
可求出年龄大于30岁的工资总和,结果存放到动态字段变量sumsa中。
本文将maxa、sums、sumsa称为动态字段变量,因为这些字段不是数据表中固有的,是我们在程序中单独命名的。
在该实例中,将创建一个简单的数据库应用程序,可以浏览数据表salary中的各记录,并在状态栏中显示相关数据。
在窗体上放置一个DBGrid控件(需加载Microsoft Data Bound Grid Control)、一个状态栏控件(需加载Microsoft Windows Common Controls 6.0)、一个Data控件和一个按钮控件,如图2所示。各对象的属性设置如表1所示。
编写代码如下:
Private Sub Command1_Click()
Dim query As Recordset
Dim numofpeople As Integer, maxage As Integer, minage As Integer
Dim avgsalary As Single, totalsalary As Single
Set query = Data1.Database.OpenRecordset("SELECT COUNT(*) as num, MAX(年龄) as maxa," _
& "MIN(年龄) as mina, AVG(工资) as avgs, SUM(工资) as sums FROM salary ")
numofpeople = query.Fields("num") .Value
maxage = query.Fields("maxa") .Value
minage = query.Fields("mina") .Value
avgsalary = Format(query.Fields("avgs") .Value, "0.00") ' 结果保留两位小数
totalsalary = query.Fields("sums") .Value
StatusBar1.Panels(1).Text = "人数:" & numofpeople
StatusBar1.Panels(2).Text = "最大年龄:" & maxage
StatusBar1.Panels(3).Text = "最小年龄:" & minage
StatusBar1.Panels(4).Text = "平均工资:" & avgsalary
StatusBar1.Panels(5).Text = "工资总额:" & totalsalary
End Sub
运行该程序,表salary中记录内容显示在DBGrid控件中,点击"显示状态栏"按钮,则状态栏中显示各相关数据,如图3所示。
在引用这些动态字段变量时,也可通过索引号来进行,如query.Fields(0)与query.Fields("num")等价。
VB在对合计函数的使用方式上也灵活多样,例如通过以下代码也可达到同样目的:
Data1.RecordSource = "SELECT COUNT(*) as num, MAX(年龄) as maxa, MIN(年龄) as mina, " _
& " AVG(工资) as avgs, SUM(工资) as sums FROM salary "
Data1.Refresh
numofpeople = Data1.Recordset.Fields("num") .Value
maxage = Data1.Recordset.Fields("maxa") .Value
minage = Data1.Recordset.Fields("mina") .Value
avgsalary = Format(Data1.Recordset.Fields("avgs") .Value, "0.00")
totalsalary = Data1.Recordset.Fields("sums") .Value
5 结束语
从前面的介绍可以看出,使用合计函数方便直观、简化程序。我们甚至还可以利用StDev、StDevP、Var、VarP等合计函数来简化数据统计中标准偏差和方差的计算,充分发挥这些函数的作用。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:用VB6实现程序多语言界面
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash