聚合新闻服务
手机wap浏览
您现在的位置: 动易模板 >> 动易中心 >> 动易教程 >> 正文
注册登陆
建站服务
视动工坊
服务项目
建站流程
建站价目
成功作品
联系信息
联系信息
视动工坊:动易认证设计师
动易模板大赛连续两次获奖
现共完成动易模板100余个
热诚欢迎定制改制动易模板
Q Q: 363881827
手机: 13153001848
Tel: 0531-83711777
Mail: wsdjqwj2003@163.com
   
让菜鸟真正学会动态标签<1>
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-8-10 17:48:28

这些天在论坛看到一大批的人在问一些动态标签的问题:

例如:怎么在网站首页用调用人才招聘频道的信息……;怎么样在首页调用供求信息频道的资料……;怎么……………………

这些全都是要用动态标签进行数据库查询和调用的,而不是通过简单的后台里可以看到那些默认标签就可以搞定的。
而很多朋友因为对数据库查询的语法不太了解,总是找到教程和代码也看不懂高手们是怎么样用动态标签查询并调用数据库内容的。

  所以,我在这里发一些教程,用最简单的方法教菜鸟们真的学会用动态标签调用网站的一切数据,做出最精美,功能最强的网站。

  由于教程太长,没有耐心和不想真正学会动易标签而只是想应付一时之需的,可以对照某些高手发出的动态标签代码再对照我发的教程里的查询语言,研究一下基本查询方法,也行,呵呵,但还是建议真的学会,这样子才可以和动易一起发展和进步啊。

   SQL数据库查询语法之一:

    一、SELECT...FROM...WHERE语句

  语句的语法如下:

SELECT [all | * | distinct column1, column2]
FROM table1[, table2]
WHERE [condition1 | expression1] [AND condition2 | rxpression2]

  在上面的语法中,[]外的语句是必须的,而[]内的是可选的,对于以 | 分割的操作符,则表明语法中必须从| 分割的操作符中选择一个。下面的语法描述同上。

  在SELECT...FROM...WHERE语句中其中SELECT指定需要检索的字段,FROM指定要查询的表,WHERE指定选择纪录的条件,另外还可以包含ORDER BY语句来制定排序纪录。语法如下:

  ORDER BY column1 | Integer [ASC | DESC]

  其中column1制定排序的字段,也可以使用Integer指定的字段索引来排序,ASC为升序、DESC为降序。

  范例一:找到Titles表中所有出版日期在1990年以后以及包含文字Beginner的书名

  建立一个新工程,加入DAO定义库(点击菜单中的 Project | References项,在列表中选择Microsoft DAO 3.51 Object Library(也可以是更高版本的3.60,如果安装了的话),然后在Form中加入一个ListBox控件。在Form1的代码窗口中加入以下代码:

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 [Title] FROM [Titles] WHERE [Year Published] > 1990 " & _
       "AND Title LIKE '*Beginner*' ORDER BY Title DESC"
  Set rsTemp = dbTemp.OpenRecordset(astr)
  If rsTemp.RecordCount > 0 Then
    rsTemp.MoveFirst
    Do Until rsTemp.EOF
      List1.AddItem rsTemp![Title]
      rsTemp.MoveNext
    Loop
  End If
End Sub

运行程序,List1中就会列出所有出版日期在1990年以后以及包含文字Beginner的书的书名并将书名按照降序进行排列。

  在上面的SELECT语句的WHERE中,我们使用了操作符号 > 来比较大小以及使用LIKE进行匹配。在WHERE语句中,可以使用的操作符有以下几类:

  1、比较操作符
  包含 =、<>、>、<、>=、<= 等若干类

  2、逻辑操作符
  包含以下若干类:
  LIKE、IN、BETWEEN、UNIQUE、IS NULL、EXISTS、ALL和ANY

  LIKE 操作符通过使用通配符将一个值同其它值比较,在VB的SQL查询中,可以使用的通配符是 * 和 ? 其中 * 代表任意的若干个字符,而 ? 代表一个字符,例如上面语句中的LIKE '*Beginner* 代表查找所有包含字符串Beginner的值。不过要注意的是使用 * 和 ? 作为通配符是VB的专利。真正的SQL语言的通配符是 % 和 _ ,其中 % 代表任意多个字符,_ 代表一个字符例如VB中的Data Environment使用的就是 % 和 _ 作为查询通配符。另外Microsoft Jet Engine对于LIKE操作符还提供了其它一些的过滤选项,具体的内容可参见MSDN索引中的 Like Operator 条目。

  IN 操作符用于比较某一个值是否等于几个值中的一个值,例如下面的语句:

  "SELECT [Title],[Year Published] FROM [Titles] WHERE [Year Published] IN (1990,1991,1995)"
将从表Titles中选择所有在1990、1991、1995年出版的书籍纪录。

  BETWEEN 操作符勇于在两个值之间搜索,例如 WHERE [Year Published] BETWEEN 1989 AND 1991 指定出版日期必须在1989年和1991年之间。

  对于逻辑操作符,可以结合NOT操作符实现改变查询条件的方向。例如 WHERE [Year Published] NOT IN (1990,1991,1995)

  3、连接符
  WHERE中的连接符包括 AND 和 OR ,使用AND时,所有查询都必须是True时,条件才成立,而使用OR时,只要连接的一个查询为True,条件就成立。象上面的范例中,只有书名中包含 "Beginner" 同时又是在1990年以后出版的纪录才会被查询到。

  在使用比较操作符时要注意,在VB操作数据库引擎时对于查找的字符串,要使用单引号或者双引号将字符串括起来,例如 WHERE [Name]='LiGang'。

而对于日期类型的数据,要使用#号将日期括起来,例如 WHERE [BirthDay] > #19980-10-01#

  而在使用通配符和LIKE操作符时,需要使用引号而不是#号,例如 WHERE [BirthDay] LIKE "1990-01-*"。引号告诉数据库引擎将日期当字符串处理,而#号告诉数据库引擎将日期当数字处理。对于WHERE语句所要使用的逻辑操作符,在下面的文章中还要提到。

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

  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字段输出。

(未完待续)

动易中心录入:alang    责任编辑:alangyuafeng929 
  • 下一个动易中心: 没有了
  • 评论主题:让菜鸟真正学会动态标签<1>(评论内容只代表网友观点)
    版权所有:copyright 2005-2008 动易模板NO.1 核心:PowerEasy SiteWeaver™ 6.6 备案:鲁ICP备05007599号
    电话:0531-83711777(晚间)手机:13153001848 QQ:363881827 群号:一群13022466(满)二群36354619