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
相关文章
|
12天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
616 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
346 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
356 155

热门文章

最新文章