vb中用ado对象Recordset来绑定到DataGrid的常见问题分析
来源:互联网 发布:庄子諵哗 知乎 编辑:程序博客网 时间:2024/05/22 06:06
vb中用ado对象Recordset来绑定到DataGrid的常见问题分析
2014年03月14日 ⁄ 综合 ⁄ 共 2412字 ⁄ 字号 小 中 大 ⁄ 评论关闭
-
先看正常代码:
Dim con As New ADODB.Connection '定义数据库的连接存放数据和代码
Dim cmd As New ADODB.Command
Dim Gs As New ADODB.Recordset
Dim strSQL As String
con.ConnectionString = StrConn
strSQL = "select * from 顾客信息表"
'con.CursorLocation = adUseClient'无就不能绑定数据了?
con.CursorLocation = adUseClient '还不能是adUseServer
con.Open
Set Gs = con.Execute(strSQL)
'Gs.Open strSQL, con, 3, 3
Set DataGrid1.DataSource = Gs
DataGrid1.Refresh
'Call FillDataToMSFlex(Gs, MSFlexGrid1)
Set Gs = Nothing
Set con = Nothing
Dim cmd As New ADODB.Command
Dim Gs As New ADODB.Recordset
Dim strSQL As String
con.ConnectionString = StrConn
strSQL = "select * from 顾客信息表"
'con.CursorLocation = adUseClient'无就不能绑定数据了?
con.CursorLocation = adUseClient '还不能是adUseServer
con.Open
Set Gs = con.Execute(strSQL)
'Gs.Open strSQL, con, 3, 3
Set DataGrid1.DataSource = Gs
DataGrid1.Refresh
'Call FillDataToMSFlex(Gs, MSFlexGrid1)
Set Gs = Nothing
Set con = Nothing
现在做如下修改:
Dim con As New ADODB.Connection '定义数据库的连接存放数据和代码
Dim cmd As New ADODB.Command
Dim Gs As New ADODB.Recordset
Dim strSQL As String
con.ConnectionString = StrConn
strSQL = "select * from 顾客信息表"
'con.CursorLocation = adUseClient'无就不能绑定数据了?
con.CursorLocation = adUseClient '还不能是adUseServer
con.Open
Set Gs = con.Execute(strSQL)
'Gs.Open strSQL, con, 3, 3
Set DataGrid1.DataSource = Gs
DataGrid1.Refresh
'Call FillDataToMSFlex(Gs, MSFlexGrid1)
'Set Gs = Nothing
'Set con = Nothing
Gs.Close
con.Close
Dim cmd As New ADODB.Command
Dim Gs As New ADODB.Recordset
Dim strSQL As String
con.ConnectionString = StrConn
strSQL = "select * from 顾客信息表"
'con.CursorLocation = adUseClient'无就不能绑定数据了?
con.CursorLocation = adUseClient '还不能是adUseServer
con.Open
Set Gs = con.Execute(strSQL)
'Gs.Open strSQL, con, 3, 3
Set DataGrid1.DataSource = Gs
DataGrid1.Refresh
'Call FillDataToMSFlex(Gs, MSFlexGrid1)
'Set Gs = Nothing
'Set con = Nothing
Gs.Close
con.Close
会出现datagrid里没有数据.
那我再想Set gs=nothing 和gs.close到底有什么区别,我看了下百度Nothing,如下就是其解释:
Nothing 关键字用于取消某对象变量与实际对象的关联。使用 Set 语句将对象变量赋值为 Nothing。例如:
Set MyObject = Nothing
多个对象变量可以引用同一个实际对象。当 Nothing 赋值给某对象变量后,此变量就不再引用任何实际对象。当多个对象变量引用同一个对象时,只有在所有对象变量都设置为 Nothing (在设置为 Nothing 的最后一个对象变量超出范围后,显式或隐式地使用 Set 命令)后,与变量所引用的对象相关联的内存和系统资源才被释放。
再如果不写con.CursorLocation = adUseClient,也没有数据,并且会报错,它会提示行集合不能做为标签.
故我感想:
datagrid太不理想了,因为它的数据是需要绑定的,而不是想MSFlexGrid那样是从数据集里读取的.
Public Sub FillDataToMSFlex(rs As ADODB.Recordset, Mygrid As MSFlexGrid) '将数据填充到MSFLEXGRID控件中去
Dim i, j As Integer
Dim RowCount As Integer
Mygrid.AllowUserResizing = flexResizeBoth
Do Until rs.EOF()
Mygrid.Cols = rs.Fields.Count + 1
Mygrid.TextMatrix(0, 0) = "序号"
For i = 1 To rs.Fields.Count
Mygrid.TextMatrix(0, i) = rs.Fields(i - 1).Name
Next i
Mygrid.Rows = RowCount + 1
Mygrid.TextMatrix(RowCount, 0) = RowCount
For j = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields(j)) Then
Mygrid.TextMatrix(RowCount, j + 1) = "NULL"
Else
Mygrid.TextMatrix(RowCount, j + 1) = rs.Fields(j)
End If
Next j
'Mygrid.TextMatrix(RowCount, j + 1) = Trim(RecordValue(j))
RowCount = RowCount + 1
rs.MoveNext
Loop
End Sub
Dim i, j As Integer
Dim RowCount As Integer
Mygrid.AllowUserResizing = flexResizeBoth
Do Until rs.EOF()
Mygrid.Cols = rs.Fields.Count + 1
Mygrid.TextMatrix(0, 0) = "序号"
For i = 1 To rs.Fields.Count
Mygrid.TextMatrix(0, i) = rs.Fields(i - 1).Name
Next i
Mygrid.Rows = RowCount + 1
Mygrid.TextMatrix(RowCount, 0) = RowCount
For j = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields(j)) Then
Mygrid.TextMatrix(RowCount, j + 1) = "NULL"
Else
Mygrid.TextMatrix(RowCount, j + 1) = rs.Fields(j)
End If
Next j
'Mygrid.TextMatrix(RowCount, j + 1) = Trim(RecordValue(j))
RowCount = RowCount + 1
rs.MoveNext
Loop
End Sub
MsFlexGrid它没有datagrid那样娇贵,这不行,那样也不行,只要有个数据集即可.
0 0
- vb中用ado对象Recordset来绑定到DataGrid的常见问题分析
- vb中用ado对象Recordset来绑定到DataGrid的常见问题分析
- vb 用ADODB.recordset对象绑定DATAGrid控件
- 初识vb数据库最常用的两个对象(ADO Recordset 和 ADO Connection)
- 使用.NET Framework组件中的DataGrid显示ADO中的RecordSet对象的记录
- ASP与ADO RECORDSET对象 的错误
- 查找ado.Recordset 对象的记录总数
- 如何在ADO中用异步的方式打开一个RecordSet
- ADO.Recordset对象方法
- ADO Recordset 对象
- Recordset 对象 (ADO)
- ADO Recordset 对象
- ADO Recordset 对象
- VB Recordset 对象
- ADO EXTENTSION 绑定 recordset时注意变量长度的问题
- Binding a DataGrid to an ADO Recordset
- ADO Recordset对象的RecordCount属性总是-1?
- [ADO学习笔记] RecordSet对象的函数与方法
- 欢迎使用CSDN-markdown编辑器
- PHP 扫描二维码打开页面
- 异步任务的实例
- Java----使用线程(synchronized)
- jquery取得radio选中的值
- vb中用ado对象Recordset来绑定到DataGrid的常见问题分析
- python获取一个月的最后一天和第一天
- 破解前端面试80% 应聘者不及格系列:从DOM说起
- git 多人协作开发的使用(二)---命令使用
- leetcode-566. Reshape the Matrix
- NSSortDescriptor排序
- Java知识点总结
- seq2seq 做翻译,训练时 最终feed的数据的样子(接上文)
- 请教!!!POJ: 1007一直wrong answer,换一种写法就AC,其实是一样的。。