新人请老师指点
时间:2011-09-07
来源:互联网
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列在给值,到最后却都能显示出来,真是神奇。想请老师在关键的地方给讲解下。谢谢
我没多少分,给的少了,请见谅
作者: java321java 发布时间: 2011-09-07
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
这样就把所有记录都给表格了,太厉害了
作者: java321java 发布时间: 2011-09-07
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 属性所指定的自定义图标
作者: xiaoyao961 发布时间: 2011-09-07
这句是说:把Category,UnitPrice等几个字段合成一个字段item输出,中间用tab分隔符chr(9)分开
order by ProductID就是说按产品ID进行顺序排列
作者: xiaoyao961 发布时间: 2011-09-07
Grid1.AddItem "a" & chr(9) & "b" & chr(9) & "c" & chr(9) & "d"
作者: xiaoyao961 发布时间: 2011-09-07
这句是说:把Category,UnitPrice等几个字段合成一个字段item输出,中间用tab分隔符chr(9)分开
order by ProductID就是说按产品ID进行顺序排列
这句代码,可以理解成把ProductName & Chr(9) & Category & Chr(9) & UnitPrice & Chr(9) & IIF(Discontinued,'1','0')这几个字段合并到item,但是我改了下,
rs.Open "select ProductName & Chr(9) & Category & Chr(9) & UnitPrice & Chr(9) & As Item,ProductID from Products order by ProductID"
把这个字段IIF(Discontinued,'1','0')去掉了,程序报错(语法错误,表达式)。什么问题呢
作者: java321java 发布时间: 2011-09-07
作者: java321java 发布时间: 2011-09-07
作者: java321java 发布时间: 2011-09-07
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28