碣怎么读音是什么意思:[VB]RS和DBGrid的相关操作
来源:百度文库 编辑:中财网 时间:2024/05/21 22:49:08
1:关于记录集(RecordSet)的操作
有很多时候需要用到自己创建空记录集,并操作记录集,对于它的操作我遇到以下两类:
A:填充自定义数据。(原因是数据不能根据一句SQL得到,但还要只得到一个记录集)
解决方法:创建空记录集,根据需求创建记录集的Fields,然后往记录集中填充由多种途径获取的数据
例子:
Step1:创建空记录集
Set objRS_Temp=New ADODB.RecordSet
Step2:向记录集中插入栏位并打开记录集
objRS_Temp.Fields.Append "FieldName1",adVarChar,20
objRS_Temp.Fields.Append "FieldName2",adVarChar,50
......
objRS_Temp.Open
Step3:循环插入数据
objRS_Return.AddNew
objRS_Temp.Fields("FieldName1").Value="Value1"
......
objRS_Return.Update
B:利用记录集进行排序(多数情况是和SSDBGrid相关)
解决方法:首先创建空的记录集,并将SSDBGrid中的数据存放于记录集之中,利用记录集的Sort方法进行排序,经数据重新Load到SSDBGrid
例子:
Step1:获取Grid栏位名称并创建空记录集
''''循环获取Grid的栏位名称
FieldName1=grd.Columns(0).Name
FieldName2=grd.Columns(1).Name Set objRS_Temp=New ADODB.RecordSet
Step2:向记录集中插入栏位并打开记录集
objRS_Temp.Fields.Append "FieldName1",adVarChar,20
objRS_Temp.Fields.Append "FieldName2",adVarChar,50
......
objRS_Temp.Open
Step3:循环插入数据
objRS_Return.AddNew
objRS_Temp.Fields("FieldName1").Value="Value1"
......
objRS_Return.Update Step3:按照特定栏位进行排序
objRS_Temp.Sort = "FieldName1 DESC"
Step4:循环将记录集中数据填充到SSDBGrid
注意点1:对于Step2中,栏位类型开始的时候我采用的是adBSTR(采用UniCode编码的字符串型),结果记录集的Sort方法不可用,
分析原因是由于数据库中对于Unicode编码的字符串是不支持排序的。所以后来改为adVarChar的类型。类型后面的20和50则
表示当前栏位的最大长度,应尽量与原数据保持一致。
注意点2:在ASP中使用该方法,注意栏位类型要在页首枚举(如CONST adVarChar = 200)
附:DataTypeEnum(数据类型枚举对应表)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstdatatypeenum.aspPrivate Sub Command1_Click()
Dim objRS As ADODB.Recordset
Dim conn As ADODB.Connection
Dim connstring As String
Dim strsql As String
Dim inti As Integer
Dim intJ As Integer
connstring = "DSN=db;UID=uid;PWD=pwd"
''''获取空记录集,请将栏位根据情况补充完整
''
strsql = "SELECT '' AS SYSTEM,'' AS PROCESS,'' AS SUBPROCESS,'' AS STARTDATETIME FROM dual"
Set conn = New ADODB.Connection
''''打开连接,并设置为客户端游标
''
conn.Open connstring
conn.CursorLocation = adUseClient
Set objRS = New ADODB.Recordset
''''设置为动态游标
''
objRS.Open strsql, conn, adOpenDynamic, adLockBatchOptimistic
''''对得到的记录集进行操作
''
objRS.MoveFirst
''''放在循环之中,指定添加多少笔记录进入记录集
''
For intJ = 0 To 5
''''对每列进行赋值操作
''
For inti = 0 To objRS.Fields.Count - 1
objRS.Fields(inti).Value = "test" & inti
Next
''''移动到下一行,并增加新的一行
''
objRS.MoveNext
objRS.AddNew Next
''''删除掉最后增加的一行空记录
''
objRS.Delete adAffectCurrent
''''移动到有效行
''
objRS.MovePrevious
MsgBox objRS.RecordCountEnd Sub2:关于SSDBGrid的一个小注意事项
SSDBGrid的属性grd.Row返回的值并不是选中Row在整个SSDBGrid中的绝对RowID,实际上是Grid当前可见部分的顺序值(以当前可见的第一条为0开始计数),
所以这个方法就不能够正确地达到我们的目的。
解决方法:采用Bookmark来定位到当前选定行并返回该行的RowID
例子:intRowID=grdQVL.AddItemRowIndex(grdQVL.Bookmark)这样返回的才是当前选定行的绝对RowID 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/venus0314/archive/2005/02/28/305412.aspx
有很多时候需要用到自己创建空记录集,并操作记录集,对于它的操作我遇到以下两类:
A:填充自定义数据。(原因是数据不能根据一句SQL得到,但还要只得到一个记录集)
解决方法:创建空记录集,根据需求创建记录集的Fields,然后往记录集中填充由多种途径获取的数据
例子:
Step1:创建空记录集
Set objRS_Temp=New ADODB.RecordSet
Step2:向记录集中插入栏位并打开记录集
objRS_Temp.Fields.Append "FieldName1",adVarChar,20
objRS_Temp.Fields.Append "FieldName2",adVarChar,50
......
objRS_Temp.Open
Step3:循环插入数据
objRS_Return.AddNew
objRS_Temp.Fields("FieldName1").Value="Value1"
......
objRS_Return.Update
B:利用记录集进行排序(多数情况是和SSDBGrid相关)
解决方法:首先创建空的记录集,并将SSDBGrid中的数据存放于记录集之中,利用记录集的Sort方法进行排序,经数据重新Load到SSDBGrid
例子:
Step1:获取Grid栏位名称并创建空记录集
''''循环获取Grid的栏位名称
FieldName1=grd.Columns(0).Name
FieldName2=grd.Columns(1).Name Set objRS_Temp=New ADODB.RecordSet
Step2:向记录集中插入栏位并打开记录集
objRS_Temp.Fields.Append "FieldName1",adVarChar,20
objRS_Temp.Fields.Append "FieldName2",adVarChar,50
......
objRS_Temp.Open
Step3:循环插入数据
objRS_Return.AddNew
objRS_Temp.Fields("FieldName1").Value="Value1"
......
objRS_Return.Update Step3:按照特定栏位进行排序
objRS_Temp.Sort = "FieldName1 DESC"
Step4:循环将记录集中数据填充到SSDBGrid
注意点1:对于Step2中,栏位类型开始的时候我采用的是adBSTR(采用UniCode编码的字符串型),结果记录集的Sort方法不可用,
分析原因是由于数据库中对于Unicode编码的字符串是不支持排序的。所以后来改为adVarChar的类型。类型后面的20和50则
表示当前栏位的最大长度,应尽量与原数据保持一致。
注意点2:在ASP中使用该方法,注意栏位类型要在页首枚举(如CONST adVarChar = 200)
附:DataTypeEnum(数据类型枚举对应表)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstdatatypeenum.aspPrivate Sub Command1_Click()
Dim objRS As ADODB.Recordset
Dim conn As ADODB.Connection
Dim connstring As String
Dim strsql As String
Dim inti As Integer
Dim intJ As Integer
connstring = "DSN=db;UID=uid;PWD=pwd"
''''获取空记录集,请将栏位根据情况补充完整
''
strsql = "SELECT '' AS SYSTEM,'' AS PROCESS,'' AS SUBPROCESS,'' AS STARTDATETIME FROM dual"
Set conn = New ADODB.Connection
''''打开连接,并设置为客户端游标
''
conn.Open connstring
conn.CursorLocation = adUseClient
Set objRS = New ADODB.Recordset
''''设置为动态游标
''
objRS.Open strsql, conn, adOpenDynamic, adLockBatchOptimistic
''''对得到的记录集进行操作
''
objRS.MoveFirst
''''放在循环之中,指定添加多少笔记录进入记录集
''
For intJ = 0 To 5
''''对每列进行赋值操作
''
For inti = 0 To objRS.Fields.Count - 1
objRS.Fields(inti).Value = "test" & inti
Next
''''移动到下一行,并增加新的一行
''
objRS.MoveNext
objRS.AddNew Next
''''删除掉最后增加的一行空记录
''
objRS.Delete adAffectCurrent
''''移动到有效行
''
objRS.MovePrevious
MsgBox objRS.RecordCountEnd Sub2:关于SSDBGrid的一个小注意事项
SSDBGrid的属性grd.Row返回的值并不是选中Row在整个SSDBGrid中的绝对RowID,实际上是Grid当前可见部分的顺序值(以当前可见的第一条为0开始计数),
所以这个方法就不能够正确地达到我们的目的。
解决方法:采用Bookmark来定位到当前选定行并返回该行的RowID
例子:intRowID=grdQVL.AddItemRowIndex(grdQVL.Bookmark)这样返回的才是当前选定行的绝对RowID 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/venus0314/archive/2005/02/28/305412.aspx
vb DBGrid 控件的问题
为什么我在vb 中 data控件和dbgrid控件绑定的时候他说无法识别数据原?
求vb dbgrid 分页代码
VC中使用DBGrid和Mecrosoft RemoteData控件的问题!
谁能告诉我在哪里可以下到VB的dbgrid.reg
vb中 dbgrid如何隐藏列?
VB中如何删除DBGrid指定行
vb的文件操作
VB相关的问题
vb相关的问题。
vb rs.bookmork
vb与rs.open
RS游戏如何操作?
vb.net 如何实现Form1和Form2的交互操作
请问谁有 RS编码的相关资料及编码器?
求平面设计,编程,系统操作的相关软件和书籍?
关于超级解霸v8和3000的相关操作使用问题!
vb 中的 数据库的操作?
关于rs和request的问题?
Trie树的相关操作
VB的.:怎么判断记录集是否为空呀。不是rs.recordcount.因为我rs.recordcount老是返回-1
DBGrid中如何控制横向和纵向滚动条的位置?
VB和C语言比较,功能上和操作上的!
rs.close、conn.close的应用和conn.execute与rs.open的区别及应用