手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

VB中SQL合计函数的使用

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  结构化查询语言SQL是操作数据库的国际标准语言,在开发VB数据管理软件过程中,利用SQL可以使数据的操作大为方便,使VB与数据库的联系更加紧密。

  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称为动态字段变量,因为这些字段不是数据表中固有的,是我们在程序中单独命名的。

  4 使用SQL合计函数的实例

  在该实例中,将创建一个简单的数据库应用程序,可以浏览数据表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等合计函数来简化数据统计中标准偏差和方差的计算,充分发挥这些函数的作用。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS