MSGRID的填充

简介: 这是记录的一些填充代码,其实MSGRID就是一个二维表格,主要在控制单元格的高度和宽度上有点技巧,但本人认为MSGRID并不太好用。   下面编写了一个用记录集填充AxMSFlexGrid网格的过程。其中函数RecordCount是我自己编写的求记录集中记录的函数。
这是记录的一些填充代码,其实MSGRID就是一个二维表格,主要在控制单元格的高度和宽度上有点技巧,但本人认为MSGRID并不太好用。


  下面编写了一个用记录集填充AxMSFlexGrid网格的过程。其中函数RecordCount是我自己编写的求记录集中记录的函数。这里不能直接用ADO的RecordCount求得。如果记录集是空,则退出过程。否则求出记录集的记录数和字段来确定AxMSFlexGrid网格的行列数据,然后读出记录集的数据直接填充到AxMSFlexGrid网格。要说明的是读出记录集的数据时要先判断是否为空值,由函数IsDBNull实现(函数IsDBNull来源于System.DBNull).最后记录集应该返回到记录首位,否则影响了原有的记录集,完整的代码如下:
img_a6339ee3e57d1d52bc7d02b338e15a60.gif ' 作用:用记录集的数据填充网格 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif'
参数:MSGrid 网格对象,rec 记录集对象 
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
Public   Sub FillMsGrid() Sub FillMsGrid(ByVal MSGrid As AxMSFlexGridLib.AxMSFlexGrid, ByVal rec As ADODB.Recordset) 
img_33d02437d135341f0800e3d415312ae8.gif
Dim i, j, RecordNum As Integer 
img_33d02437d135341f0800e3d415312ae8.gif
If rec.EOF Then Exit Sub 
img_33d02437d135341f0800e3d415312ae8.gifRecordNum 
= RecordCount(rec) 
img_33d02437d135341f0800e3d415312ae8.gifMSGrid.Rows 
= RecordNum + 1 
img_33d02437d135341f0800e3d415312ae8.gifMSGrid.Cols 
= rec.Fields.Count + 1 
img_33d02437d135341f0800e3d415312ae8.gif
For i = 0 To RecordNum - 1 
img_33d02437d135341f0800e3d415312ae8.gif
For j = 0 To rec.Fields.Count - 1 
img_33d02437d135341f0800e3d415312ae8.gif
If IsDBNull(rec(j).Value) Then 
img_33d02437d135341f0800e3d415312ae8.gifMSGrid.set_TextMatrix(i 
+ 1, j + 1""
img_33d02437d135341f0800e3d415312ae8.gif
Else 
img_33d02437d135341f0800e3d415312ae8.gifMSGrid.set_TextMatrix(i 
+ 1, j + 1, rec(j).Value) 
img_33d02437d135341f0800e3d415312ae8.gif
End If 
img_33d02437d135341f0800e3d415312ae8.gif
Next 
img_33d02437d135341f0800e3d415312ae8.gifMSGrid.set_TextMatrix(i 
+ 10, i) 
img_33d02437d135341f0800e3d415312ae8.gifrec.MoveNext() 
img_33d02437d135341f0800e3d415312ae8.gif
Next 
img_33d02437d135341f0800e3d415312ae8.gifrec.MoveFrist() 
img_05dd8d549cff04457a6366b0a7c9352a.gif
End Sub
 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
' 作用:取记录集的记录数 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif'
参数:rec 记录集对象 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif'
返回:记录集的记录数 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif

img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
Public   Function RecordCount() Function RecordCount(ByVal rec As ADODB.Recordset) As Integer 
img_33d02437d135341f0800e3d415312ae8.gif
Dim i As Integer 
img_33d02437d135341f0800e3d415312ae8.gif
If rec.EOF Then 
img_33d02437d135341f0800e3d415312ae8.gifRecordCount 
= 0 
img_33d02437d135341f0800e3d415312ae8.gif
Exit Function 
img_33d02437d135341f0800e3d415312ae8.gif
End If 
img_33d02437d135341f0800e3d415312ae8.gif
With rec 
img_33d02437d135341f0800e3d415312ae8.gif.MoveFirst() 
img_33d02437d135341f0800e3d415312ae8.gif
Do While Not .EOF 
img_33d02437d135341f0800e3d415312ae8.gif
+= 1 
img_33d02437d135341f0800e3d415312ae8.gif.MoveNext() 
img_33d02437d135341f0800e3d415312ae8.gif
Loop 
img_33d02437d135341f0800e3d415312ae8.gif.MoveFirst() 
img_33d02437d135341f0800e3d415312ae8.gif
End With 
img_33d02437d135341f0800e3d415312ae8.gifRecordCount 
= i 
img_05dd8d549cff04457a6366b0a7c9352a.gif
End Function
 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif  
img_a6339ee3e57d1d52bc7d02b338e15a60.gif

  以上代码编好后放在所定义的类中.下面的省略号代表上面的函数和过程。可直接生成为DLL组件。方法是在.NET编辑环境下选择生成菜单中按生成就生成了DLL文件。然后,你可以直接调用该组件了。

img_a6339ee3e57d1d52bc7d02b338e15a60.gif Imports  ADODB.Connection 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports  ADODB.Recordset 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports  ADODB.CursorLocationEnum 
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports  System.DBNull  ' 函数IsDBNull的来源 
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
Class ADOAccess Class ADOAccess 
img_33d02437d135341f0800e3d415312ae8.gif
Private mCnnDB As New ADODB.Connection() 
img_33d02437d135341f0800e3d415312ae8.gif… 
img_05dd8d549cff04457a6366b0a7c9352a.gif
End Class
  
img_a6339ee3e57d1d52bc7d02b338e15a60.gif

  调用上面生成的组件方法如下:在Visual Basic.NET中建立一项目,在窗口Form1中加入一AxMSFlexGrid网格命名为MsGrid1,布置如下

  然后引用刚建立的Dll。方法是选择项目菜单的添加引用,选择项目页,按浏览找到其DLL文件确定后引用完成。在Form1中定义一ADOAccess对象,在Load事件中编写调用代码,分别测试其功能,代码如下:


img_405b18b4b6584ae338e0f6ecaf736533.gif img_1c53668bcee393edac0d7b3b3daff1ae.gif Public   Class Form1 Class Form1 
img_33d02437d135341f0800e3d415312ae8.gif
Inherits System.Windows.Forms.Form 
img_33d02437d135341f0800e3d415312ae8.gif
Dim DB As New ADOAccess() 
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load 
img_33d02437d135341f0800e3d415312ae8.gif
Dim rec As New ADODB.Recordset() 
img_33d02437d135341f0800e3d415312ae8.gif
'DB.ConnAccess("e:\test.mdb") 
img_33d02437d135341f0800e3d415312ae8.gif'
DB.ConnSQLServer("wj-1058", "test") 
img_33d02437d135341f0800e3d415312ae8.gif'
DB.ConnODBC("testODBC") 
img_33d02437d135341f0800e3d415312ae8.gif'
DB.ConnOracle("wj-1059", "system", "manager") 
img_33d02437d135341f0800e3d415312ae8.gif'
rec = DB.OpenTable("DEMO.customer") 
img_33d02437d135341f0800e3d415312ae8.gif
rec = DB.OpenTable("doc_file"
img_33d02437d135341f0800e3d415312ae8.gifDB.FillMsGrid(MSGrid1, rec) 
img_105a1e124122b2abcee4ea8e9f5108f3.gif
End Sub
 
img_33d02437d135341f0800e3d415312ae8.gif
相关文章
|
23天前
|
算法 计算机视觉
基于轮廓提取的 图像填充法
这篇文章介绍了一种基于轮廓提取的图像填充法,使用CVPR2021开源的pidinet项目进行轮廓提取,再结合OpenCV的floodFill算法实现图像的动态填充和复原功能。
|
3月前
|
数据可视化 关系型数据库 MySQL
空值填充技巧(上)
空值填充技巧(上)
41 3
|
4月前
|
容器
微搭低代码实现下拉框动态填充值
微搭低代码实现下拉框动态填充值
|
4月前
|
移动开发
2022年11月23日14:23:00—H5—T7-T8(布局与内容填充)
2022年11月23日14:23:00—H5—T7-T8(布局与内容填充)
40 0
|
4月前
|
索引
面试题 08.10:颜色填充
面试题 08.10:颜色填充
38 0
|
定位技术
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
egret纹理填充模式(上下填充)
126.设置填充类型和填充颜色
126.设置填充类型和填充颜色
83 0
146.矩形区域的颜色填充
146.矩形区域的颜色填充
70 0
|
自然语言处理
Q&A | 热图的单元格颜色和数值标签可以不一一对应吗?
Q&A | 热图的单元格颜色和数值标签可以不一一对应吗?
144 0
Q&A | 热图的单元格颜色和数值标签可以不一一对应吗?
|
开发者 索引
Javscript数组快速填充数据的8种方法
Javscript数组快速填充数据的8种方法
211 0