MSGRID的填充

这是记录的一些填充代码,其实MSGRID就是一个二维表格,主要在控制单元格的高度和宽度上有点技巧,但本人认为MSGRID并不太好用。


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

ExpandedBlockStart.gifContractedBlock.gif
Public   Function RecordCount() Function RecordCount(ByVal rec As ADODB.Recordset) As Integer 
InBlock.gif
Dim i As Integer 
InBlock.gif
If rec.EOF Then 
InBlock.gifRecordCount 
= 0 
InBlock.gif
Exit Function 
InBlock.gif
End If 
InBlock.gif
With rec 
InBlock.gif.MoveFirst() 
InBlock.gif
Do While Not .EOF 
InBlock.gif
+= 1 
InBlock.gif.MoveNext() 
InBlock.gif
Loop 
InBlock.gif.MoveFirst() 
InBlock.gif
End With 
InBlock.gifRecordCount 
= i 
ExpandedBlockEnd.gif
End Function
 
None.gif  
None.gif

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

None.gif Imports  ADODB.Connection 
None.gif
Imports  ADODB.Recordset 
None.gif
Imports  ADODB.CursorLocationEnum 
None.gif
Imports  System.DBNull  ' 函数IsDBNull的来源 
ExpandedBlockStart.gifContractedBlock.gif
Class ADOAccess Class ADOAccess 
InBlock.gif
Private mCnnDB As New ADODB.Connection() 
InBlock.gif… 
ExpandedBlockEnd.gif
End Class
  
None.gif

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

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


ExpandedBlockStart.gif ContractedBlock.gif Public   Class Form1 Class Form1 
InBlock.gif
Inherits System.Windows.Forms.Form 
InBlock.gif
Dim DB As New ADOAccess() 
ExpandedSubBlockStart.gifContractedSubBlock.gif
Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load 
InBlock.gif
Dim rec As New ADODB.Recordset() 
InBlock.gif
'DB.ConnAccess("e:\test.mdb") 
InBlock.gif'
DB.ConnSQLServer("wj-1058", "test") 
InBlock.gif'
DB.ConnODBC("testODBC") 
InBlock.gif'
DB.ConnOracle("wj-1059", "system", "manager") 
InBlock.gif'
rec = DB.OpenTable("DEMO.customer") 
InBlock.gif
rec = DB.OpenTable("doc_file"
InBlock.gifDB.FillMsGrid(MSGrid1, rec) 
ExpandedSubBlockEnd.gif
End Sub
 
InBlock.gif

转载于:https://www.cnblogs.com/aowind/archive/2005/02/07/103108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值