sql语言的特点

sql语言的特点,第1张

特点有以下几点:

1、综合统一;

2、高度非过程化;

3、面向集合的 *** 作方式;

4、以昌信罩同耐闹一种语法结构提供多种使用方式;

5、语言简洁,易学易用;

6、对于数据统计方坦春便直观。

sqi语言:结构化查询语言(StructuredQueryLanguage)简称SQL(发音:/_eskju__el/S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,[1]用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。"

VB6.0可用ADO Data 控件访问和 *** 作数据库,读举歼取数据表的数据,通过嵌套顷蔽循环将数据表内容赋值给一个二维数组。ADO Data 控件,这是一种新的、OLEDB 识别的数据源控件,其功能与内部的 Data 控件和 Remote Data 控件十分相似,通过这种方式允许用户用最少的代码来创建数据库应用程序。在运行时,可以设置控件的RecordSource 属性来实现Sql结构化查询语句满足需要的查询条件。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统ForNext 语句,以指定次数来重复执行一组语句。可以将一个 ForNext 循环放置在另一个 ForNext

循环中,组成嵌套循环。

以下是具体代码实例:<pre t="code" l="vb">Option Explicit

Dim zh_bm(11, 1500)

Dim zsl As Integer

Dim i As Integer

Dim j As Integer

Dim sqlStr As String

Private Sub Form_Load()

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=D:\DATA_REF\db1.mdbPersist Security Info=False"

sqistr = "SELECT * FROM mdlk_sj where 销售='N' order by 码单号"

Adodc1.RecordSource = sqlStr

Adodc1.Refresh

zsl = Adodc1.Recordset.RecordCount '获取查询得到的数据记雀答州录总数

Adodc1.Recordset.MoveFirst '移动记录到首条记录

For i = 0 To zsl - 1

For j = 0 To 11

zh_bm(j, i) = Adodc1.Recordset(j) '将各字段值赋值给二维数组

Next j

Adodc1.Recordset.MoveNext

Next i

End Sub

利用sendmessage函数,查看一腊悄下api手册就可以啦,应该不是很难的

功能强大的SendMessage函数

Windows API(应用程序接口)是Windows系列软件为程序开发人员提供的火力强大的“武器库”,在这个武器库中,有很多极具威力的武器,SendMessage就是其中之一,它的功能非常丰富,灵活使用这个函数,会给编程工作带来很多便利。本文以Visual Basic为例,结合几个具体的数姿例子介绍该函数的功能。

一、SendMeaasge函数简介

顾名思义,SendMessage函数的功能是“发送消息”,即将一条消息发送到指定对象( *** 作系统、窗口或控件等)上,以产生特定的动作(如滚屏、修改对象外观等)。

SendMessage函数在VB中的函数说明如下:

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (Byval hwnd As Long, Byval wMsg As Long,Byval wParam As Long,lParam As Any) As Long

其中四个自变量的含义和说明如下:

hWnd:对象的句柄。希望将消息传送给哪个对象,就把该对象的句柄作为实参传送,在VB中可以简单地用“对象.hWnd”获得某个对象的句柄,如Text1.hWnd和Form1.hWnd分别可以得到Text1和Form1的句柄。

wMsg:被发送的消息。根据具体需求和不同的对象,将不同的消息作为实参传送,以产生预期的动作。

wParam、lParam:附加的消息信息。这两个是可选的参数,用来提供关于wMsg消息更多的信息,不同的wMsg可能使用这两个参数中的0、1或2个,如果不需要哪个附加参数,则将实参赋为NULL(在VB中赋为0)。

在简单了解了SendMessage函数的格式和功能后,让我们以几个例子来看看它的威力。

二、SendMessage函数使用实例

例1 多行TextBox中的快速处理功能在处理多行TextBox时我们经常会碰到以下几种情况:

希望了解多行TextBox中目前共有多少行文字。

想快速返回第N行的文字。

对于上面的情况,如果用VB自身的语句或函数来实现的话,要写不短的代码,而且由于要采用顺序查找的办法来完成,因此代码的执行效率也很低。如果使用SendMessage函数则可以大大减少代码量,并大幅度的提高执行效率。

用SendMessage函数完成上面两个任务的方法非常简单轮毕渣,每个任务只需简单地发送一条消息给多行TextBox即可,两个消息分别为:EM_GETLINECOUNT、EM_GETLINE,其它参数和返回值见附表。

下面用一个简单的实例演示这两个功能:

新建工程,在Form1上添加三个TextBox(名称分别为Text1、txtLineCount、TxtString,将Text1的Multi

Line属性置为True)、三个标签和一个命令按钮。为工程添加一个模块Moudle1,在其中写如下声明(其中

SendMessage函数的声明可以从VB的“API浏览器”中复制): 消息常量名 消息值 wParam lParam 返回值

EM_GETLINECOUNT &HBA 未用 未用 行数

EM_GETLINE &HC4 要找的行号 存结果的字节串 结果字节串的字节数

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long,lParam As Any) As Long

Public Const EM_GETLINECOUNT=&HBA

Public Const EM_GETLINE=&HC4

在Form1的代码模块中写如下代码:

Private Sub Command1_Click()

Dim str(256) As Byte

str(1)=1 '最大允许存放256个字符

'获取总行数,结果显示在文本框txtLineCount中

txtlineCount=SendMessage(Text1.hwnd,EM_GETLINECOUNT,0,0)

'获取第3行的数据放在str中,转换为字符串后显示在文本框txtString中

SendMessage Text1.hwnd,EM_GETLINE,2,str(0)

txtString= StrConv(str,vbUnicode)

End Sub

之后,按F5运行程序,在多行文本框中随便键入几行文字,然后按下[确定]按钮,出现如图画面,说明程序正确统计出了总行数和第3行的文字。

两点补充说明:在调用SendMessage获取第N行字符串时,lParam需要说明为字节数组,在调用完成后,再将字节数组转换为字符串;另外,调用前必须在lParam的前两个字节指明允许存放的最大长度,其中第一个字节为低位,第二个字节为高位,本例将高位(即str(1))置1.说明最大允许存放256个字符。

例2 程序控制拉下或收起组合框的下拉列来

一般情况下,为了拉下或收起组合框的下拉列表,需要用键盘或鼠标进行 *** 作,而有时我们希望程序运行的某个时刻自动拉出下拉列表(比如在一些演示程序中),为了实现这个目的,我们也只有借助于SendMessage函数,方法是发一个CB_SHOWDROPDOWN(&H14F)消息给组合框。

在发CB_SHOWDROPDOWN消息时,wParam参数决定了是拉下列表(=True时)还是收起列表(=False时),lParam无用(设为0)。

为说明具体的使用方法,下面提供简单的程序片段。首先在代码模块中做如下声明:

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long

Const CB_SHOWDROPDOWN=&H14F

当程序中某处需要拉下组合框Combol的列表时,写如下调用语句:

SendMessage Combol.hwnd,CB_SHOWDROPDOWN,True,0

当需要收起组合框Combol的列表时,写如下语句:

SendMessage Combol.hwnd,CB_SHOWDROPDOWNN,False,0

例3 在列表框中查找匹配的项目

在Win95风格的帮助系统中一般都有一个“索引”页,索引页含有一个文本框和一个列表框,当用户在文本框中输入文字时,下拉列表会动态地显示与文本框中文字最匹配的项目,为用户提供了最大的方便。这种效果在应用程序的帮助系统中很容易实现(只要按照Win95帮助系统的正常制作过程制作就可以实现),如果想在应用程序的其它地方实现这种特性就需费一番心思了。

而使用SendMessage函数实现上述特性则非常简单,甚至只需一条语句就足够了,那就是在文本框的Change事件中给列表框发一条LB_FINDSTRING(&H18F)消息,该消息告诉列表框在列表中查找匹配的项目。

在发LB_FINDSTRING消息时,wParam参数代表从列表框的哪一个项目后面开始查找,一般情况下该参数可定为-1,表示从List1(0)即第一项开始向后循环查找,lParam则传进欲搜索的字符串(必须采用值传递)。

具体的代码和运行画面与后面的例4合并在一起演示。

例4 为ListBox添加水平滚动条

在VB中,列表框控件仅提供垂直滚动条,没有设置水平滚动条的能力,当某些项目的文本宽度较长时,超出列表框宽度部分的文本就无法显示出来,因此,很有必要为ListBox添加一个水平滚动条来方便 *** 作。

为添加水平滚动条,只需发一条LB_SETHORIZONTALEXTENT(&H194)消息给列表框即可。发送消息时,wParam为滚动条的长度(以像素为单位,可通过计算得出准确的长度,也可随便给一个大于最大文本宽度的数字,如本例的250),lParam无用。下面是例3和例4合并在一起的代码和运行画面

Declare Function SendMessage Lib "user32" Alias "SendMessageA"(ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long

Public Const LB_FINDSTRING=&H18F

Public Const LB_SETHORIZONTALEXTENT=&H194

Private Sub Form_Load()

List1.AddItem "软件"

List1.AddItem "电脑游戏"

List1.AddItem "电视机"

List1.AddItem "电视台"

List1.AddItem "电脑"

List1.AddItem "电脑游戏软件"

'下一句为列表框添加水平滚动条

SendMessage List1.hwnd,LB_SETHORIZONTALEXTENT,250,0

End Sub

Private Sub Text1_Change()

'注意!当lParam传入的是字符串时,必须用ByVal传递

List1.ListIndex = SendMessage(List1.hwnd,LB_FINDSTRING,-1,ByVal Text1.Text)

End Sub

通过上面几个例子,想必您已经对SendMessage函数的强大功能有了初步的了解。事实上利用该函数我们还可以完成更多更好的任务,如控制文本框的自动滚屏、实现文字编辑过程中的Undo功能、 *** 纵应用程序的窗体控制菜单等等,感兴趣的读者请参阅有关Windows API的资料。

本文程序均用Visual Basic 5.0企业版编写,在Pwin95环境下运行正常。

参考资料:http://tips.9hao.com/srccode/20041027/ziyuan/w/api/%B9%A6%C4%DC%C7%BF%B4%F3%B5%C4SendMessage%BA%AF%CA%FD.txt


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12379957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存