首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

新人请老师指点解决方案

2012-01-12 
新人请老师指点在学习一段代码,这段代码把access数据库里的数据,读到flexcell表格控件里。这段代码太简洁了

新人请老师指点
在学习一段代码,这段代码把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 属性所指定的自定义图标 

热点排行