好学IT学院:IT信息技术分享交流平台
标签:VB  来源:互联网  作者:本站整理  发布时间:2009-05-19  ★★★加入收藏〗〖手机版
摘要:数据库查询语言(SQL)是使用于关系数据库的标准语言,被很多类型的数据库所支持。本文将以VB加DAO为例,来介绍基本的SQL语法以及使用。本章将介绍的是SQL语言中的基本查询语句,并带有范例。…

范例二:如何在数据表中加入统计等功能

SQL当中提供了一定数量的统计以及计算功能,其中统计函数主要有如下一些:

COUNT 计算字段中的纪录数
 SUM 计算字段中的所有值的和
 MAX 获得字段中所有值中的最大值
 MIN 获得字段中所有值中的最小值
 AVG 计算字段中所有值的平均值

计算符有 +、-、*、/ 4种。这些计算、统计函数的使用方法如下:

functionname fieldname AS outfieldname

其中functionname定义函数名、fieldname 定义要操作的字段、outfieldname定义保存输出结果字段名称,下面是范例程序,首先建立一个数据库,将数据库保存为 c:\db4.mdb。然后在数据库中加入一个名称为db1的表,表的结构如下:

字段名称 产品编号 成本  出厂价  销售数量

A00020  ¥89.95  ¥95.00  900
  A00056  ¥54.00  ¥89.00  2400
  A00021  ¥2,300.00 ¥2,896.00 600
  A10916  ¥120.00 ¥209.00 1200
  A00987  ¥907.00 ¥1,090.00 1000

其中产品编号为文本类型、成本和出厂价字段为货币类型、销售数量为长整形数据。保存表,在VB工程中加入DAO定义
库,在Form1中加入一个ListBox控件,在Form1代码窗口中加入以下代码:

Private Sub Form_Load()
  Dim rsTemp As Recordset
  Dim dbTemp As Database
  Dim astr As String
  
  Set dbTemp = DBEngine(0).OpenDatabase("c:\db4.mdb", dbOpenSnapshot)
  astr = "SELECT db1.产品编号, ((db1.出厂价 - db1.成本)/db1.成本) AS dRate, " & _
  "(db1.出厂价 * db1.销售数量)AS eTotal FROM db1 ORDER BY db1.产品编号"

Set rsTemp = dbTemp.OpenRecordset(astr)
  If rsTemp.RecordCount > 0 Then
      rsTemp.MoveFirst
      Do Until rsTemp.EOF
          List1.AddItem rsTemp![产品编号] & "  " & rsTemp![dRate] & _
              "  " & rsTemp![eTotal]
          rsTemp.MoveNext
      Loop
  End If
End Sub

在上面的程序段中,通过计算字符操作表中以有字段,然后再将结果输出到输出字段中保存。

二、JOIN...ON...语句

JOIN...ON... 语句是SQL查询中用于连接多个表的语句,该语句的语法为:

FROM table1 [INNER

OUTER

LEFT

RIGHT] JOIN table2 ON table1.field1 compopr table2.field2

其中tabel1指定要查询的表,tabel2指定连接到tabel1的表,field1, field2指定连接字段名称,compopr指定关系比较符,它可以是大于、小于、等于、不等于等。

范例三: 列出所有书籍以及它的作者

在BIBLIO中,书籍的名称位于Titles表的Title字段中,而书籍的作者位于Authors表的Autoor字段中,而这两个表之间没有相关联的字段,我们这时需要联合数据库中的Title Author表,利用该表的Au_ID字段同Authors表中的Au_ID字段的关联以及ISBN字段同Titles表中的ISBN字段的关联,范例如下:

Private Sub Form_Load()
  Dim rsTemp As Recordset
  Dim dbTemp As Database
  Dim astr As String
  
  Set dbTemp = DBEngine(0).OpenDatabase("e:\program files\microsoft visual studio\vb98\biblio.mdb", dbOpenSnapshot)
  astr = "SELECT Authors.Author, Titles.Title FROM " & _
  "([Title Author] INNER JOIN Titles ON [Title Author].ISBN = Titles.ISBN)" & _
  "INNER JOIN Authors ON [Title Author].Au_ID = Authors.Au_ID " & _
  "WHERE Titles.Title LIKE '*Beginner*'"

Set rsTemp = dbTemp.OpenRecordset(astr)
  If rsTemp.RecordCount > 0 Then
      rsTemp.MoveFirst
      Do Until rsTemp.EOF
          List1.AddItem rsTemp![Title] & "  " & rsTemp![Author]
          rsTemp.MoveNext
      Loop
  End If
End Sub

在上面的范例中,我们使用两个INNER JION联合将Authors表中的Au_ID字段 和Titles表中的ISBN字段连接到Title Author表中,然后在Title Author表中查找Title字段中包含字符串“Beginner”的纪录并将Title字段和Author字段输出。

关于IE6中显示PNG图片不透明问题的解决方案
  下面主要收集整理了两种让IE6显示透明PNG图片的方法,供大家在实际应用的灵活参考(本站顶部的主频道条就是综合应用的效果):…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 四大名著全套小学生版注音版
  • 诗词中的科学全4册
  • 曹文轩系列儿童文学全套画本