VB中SQL合计函数的使用

2008-04-09 04:44:26来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  结构化查询语言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等合计函数来简化数据统计中标准偏差和方差的计算,充分发挥这些函数的作用。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用VB6实现程序多语言界面

下一篇:用VB判断网页文件是否在IE缓存中

热门词条
热门标签