新人请老师指点
在学习一段代码,这段代码把access数据库里的数据,读到flexcell表格控件里。这段代码太简洁了,我看不懂,请老师给指点下,最好帮我把一些关键的语句解释下,谢谢
Option Explicit
'ADO常数
Private Const adUseClient = 3
Private Const adLockReadOnly = 1
Private Const adOpenStatic = 3
Private m_Connection As Object 'ADO连接
Private mlngCount As Long '删除的记录数量
Private marrDeleted() As Long '删除的记录ID
Private Sub Form_Load()
。。。。。。。。。。。。表格的设计就不贴了,免得代码太多
If Not ReadData Then
SendKeys "%{F4}" 'Alt+F4,关闭Form
End If
End Sub
'---------------------------------
'函数 : ReadData()
'返回值: True -- 成功
' False -- 失败
'---------------------------------
Private Function ReadData() As Boolean
Dim i As Long
Dim rs As Object
On Error GoTo ErrorHandler
Grid1.Rows = 1
'打开数据库连接,也可以先用引ADODB,再使用“Dim m_Connection=New ADODB.Connection”这种方法
Set m_Connection = CreateObject("ADODB.Connection")
m_Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Demo.mdb"
'从数据库读取数据
Set rs = CreateObject("ADODB.Recordset")
Set rs.ActiveConnection = m_Connection
rs.Cursorlocation = adUseClient
rs.LockType = adLockReadOnly
rs.CursorType = adOpenStatic
rs.Open "select ProductName & Chr(9) & Category & Chr(9) & UnitPrice & Chr(9) & IIF(Discontinued,'1','0') As Item,ProductID from Products order by ProductID" --------->好难看懂
'记录集中没有记录
If rs.RecordCount = 0 Then
Grid1.AddItem ""
rs.Close
Set rs = Nothing
ReadData = True
Exit Function
End If
Screen.MousePointer = 11 -------->也不明白
'把记录集中的数据填充到表格中,固定列中的单元格Tag是用来保存这一行的编辑标志的:
'U - 代表这行记录是从数据库中读取出来的已存在的记录,并且未作任何修改
'N - 代表这行记录是新增的,保存数据时需要用Insert语句插入到数据库
'E - 代表这行记录是编辑过的,保存数据时需要用Update语句更新
i = 0
Do While Not rs.EOF
i = i + 1
Grid1.AddItem rs("Item").Value, False
Grid1.Cell(i, 0).Tag = "U"
Grid1.Cell(i, 1).Tag = rs("ProductID").Value
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'在表格的尾部添加一个空白行,用来添加新记录
Grid1.AddItem ""
Screen.MousePointer = 0
ReadData = True
Exit Function
ErrorHandler:
If Err.Number = 429 Then
MsgBox "不能初始化“MS ActiveX Data Objects Library”"
Else
MsgBox Err.Description
End If
End Function
我看就对GRID表格每行的第1列在给值,到最后却都能显示出来,真是神奇。想请老师在关键的地方给讲解下。谢谢
我没多少分,给的少了,请见谅
[解决办法]
Screen.MousePointer = 11
VbHourglass 11 沙漏(表示等待状态)。
代表正在读入数据,系统忙的状态,让鼠标变个样子
http://www10.zzu.edu.cn/ie_wangjunfeng/daquan/property/content/MousePointer.htm
设置值
value 的设置值为:
常数 值 描述
vbDefault 0 (缺省值)形状由对象决定。
VbArrow 1 箭头。
VbCrosshair 2 十字线(crosshair 指针)。
VbIbeam 3 I 型
VbIconPointer 4 图标(矩形内的小矩形)。
VbSizePointer 5 尺寸线(指向东、南、西和北四方向的箭头)。
VbSizeNESW 6 右上-左下尺寸线(指向东北和西南方向的双箭头)。
VbSizeNS 7 垂-直尺寸线(指向南和北的双箭头)。
VbSizeNWSE 8 左上-右下尺寸线(指向东南和西北方向的双箭头)。
VbSizeWE 9 水-平尺寸线(指向东和西两个方向的双箭头)。
VbUpArrow 10 向上的箭头。
VbHourglass 11 沙漏(表示等待状态)。
VbNoDrop 12 不允许放下。
VbArrowHourglass 13 箭头和沙漏。
VbArrowQuestion 14 箭头和问号。
VbSizeAll 15 四向尺寸线。
VbCustom 99 通过 MouseIcon 属性所指定的自定义图标