|
TOP
|
| 文章内容 |
说明:Shared 关键字指示一个或多个被声明的编程元素将被共享。共享元素不关联于某类或结构的特定实例。可以通过使用类名或结构名称或者类或结构的特定实例的变量名称限定共享元素来访问它们。
申明类CData的属性UpdateTable,当向UpdateTable赋给了一个已知表的表名,就可确定表的字段数,定义出数据行。这里,先打开表,再重新定义数据行。
Public Property UpdateTable() As String
Get
UpdateTable = UpdateTableName
End Get
Set(ByVal Value As String)
UpdateTableName = Value.Trim
UpdateDataTable = DB.GetDataTable(UpdateTableName)
UpdateTableFieldNames = UpdateDataTable.Clone
FieldCount = UpdateDataTable.Columns.Count
ReDim ObjFields(FieldCount - 1)
End Set
End Property
'删除由主关键值fSystemID指定的数据行
Public Sub Delete()
Dim strSQL As String
strSQL = "Delete from " & UpdateTableName &
" where fSystemID=" & SystemID
DB.Delete(strSQL)
UpdateDataTable.Rows.Remove(GetRow)
End Sub
'向表UpdateTableName中插入一行数据。数据由ObjFields给出
Public Function Insert() As Boolean
DB.Insert(UpdateTableName, ObjFields)
End Function
'更新表UpdateTableName所指定的行
Public Shadows Sub Update()
Dim SetField As String
Dim i As Int16
For i = 1 To FieldCount - 1
SetField = UpdateTableFieldNames.Columns(i).ColumnName & "="
& ObjFields(i)
UpdateField(SetField)
Next
End Sub
Public Sub UpdateField(ByVal SetField As String)
Dim StrSQL As String
StrSQL = "select * from " & UpdateTableName & "
where fSystemID= "
& SystemID
DB.Update(StrSQL, SetField)
End Sub
'填充网络数据
Public Overloads Sub FillGrid(ByVal GridName As DataGrid)
GridName.DataSource = UpdateDataTable
End Sub
'把数据网格的当前行数据定写入到输入控件中
Public Sub DataGridToText(ByVal frm As Form)
Dim RowIndex, i As Int16
Dim value
Dim obj As Control
Dim DataGrid As New DataGrid()
If FieldCount = 0 Then Exit Sub
For Each obj In frm.Controls
If obj.GetType.Name = "DataGrid" Then
DataGrid = obj
Exit For
End If
Next
RowIndex = DataGrid.CurrentRowIndex
For i = 1 To FieldCount - 1
value = DataGrid.Item(RowIndex, i)
If IsDBNull(value) = True Then
value = ""
End If
For Each obj In frm.Controls '
If obj.TabIndex = i Then
obj.Text = value
Exit For
End If
Next
Next
End Sub |
窗体继承及实现
所处理的物理表。
有了上面的类,我们就可应用它来实现MIS系统中关于物理表的操作功能。
例如我们有一个tInfo表、tUser表、tChange表、tSub表,表中都定义了主关键字字段FSYSTEMID,表结构如下:


tChange表

tSub表
生成窗体模板
我们要向tInfo表、tUser二个表里插入、删除、更新数据,它们应该分别在二个Form里完成。这里,我们可先定义一Form模板,命名为FrmModule,在FrmModule上增加工具箱ToolBar1,在ToolBar1增加“增加”、“保存”按钮 、“删除”、“退出”等按钮,增加数据网络DataGrid1,文本盒及下拉列表盒。布置好后如下图:

● 把在继承的Form中可能会重新设置控件的控件对象的友元属性改为公有属性:
要使模板FrmModule中的控件能够在继承的窗体中能够修改其所继承的控件属性,必须把其友元属性改为公有属性:
Public WithEvents Label2 As System.Windows.Forms.Label
Public WithEvents txt4 As System.Windows.Forms.ComboBox
… |
● 定义FrmModule类的全局变量
FrmModule直接调用CData类的方法,完成所需功能。
Public Shared gCls As New CData()
Public gIsUpdate as Boolean |
● 定义FrmModule的方法
在FrmModule的Load事件中连接数据库,并填充网格数据,即:
Public Shadows Sub FrmModel_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
gCls.DB.ConnOracle("GDZC", "liyu", "123")
gCls.FillGrid(Me.DataGrid1)
End Sub |
当单击DataGrid1时,应把DataGrid1的当前行写入输入控件中供用户修改数据,取得当前行的标识,这里用SystemID记录,同时表示可以更新。这个过程在DataGrid1的_CurrentCellChanged事件中完成,即:
Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
Dim RowIndex As Int16
RowIndex = DataGrid1.CurrentRowIndex
gCls.DataGridToText(Me)
gCls.SystemID = DataGrid1.Item(RowIndex, 0)
gIsUpdate = True
End Sub |
编写ToolBar1的ButtonClick事件。由按钮文本识别所单击的对象。当时单击“增加”时表示不能更新,当时单击“保存”时要识别是更新还是插入数据。执行完后要重新填充网格,即:
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles
ToolBar1.ButtonClick
Select Case e.Button.Text
Case "增加"
gIsUpdate = False
Case "保存"
WriteDateToArray()
If gIsUpdate Then
gCls.Update()
Exit Select
Else
gCls.Insert()
End If
Case "删除"
If MsgBox ("真的删除该数据吗?(Y/N)") = 7 Then
Return
End If
gCls.Delete()
Case "退出"
Me.Close()
Exit Sub
End Select
gCls.FillGrid(DataGrid1)
End Sub
'把输入的数据用对象数组保存起来
Public Overridable Sub WriteDateToArray()
Dim i As Int16
Dim obj As Control
For i = 1 To gCls.FieldCount - 1
For Each obj In Me.Controls
If obj.TabIndex = i Then
gCls.ObjFields(i) = obj.Text
Exit For
End If
Next
Next
gCls.ObjFields(0) = gCls.DB.GetMaxID(gCls.UpdateTable, "FSYSTEMID") + 1
End Sub |
生成继承窗体
● 生成继承窗体
好了,我们的编程工作大部分都完成了,现在只需要增加新的继承窗体Form就可,方法是在Form项或项目菜单或工具栏选择添加继承的窗体,在弹出的Form中输入窗体名frmUser按打开,在选择继承器中选择FrmModule确定就生成了一新的窗体。 继承的继承如下:
Public Class frmUser:Inherits frmModel |
【 |
|
| 相关信息 |
![]() |
:用继承加速MIS开发 (2)
发布者:mmcbbs
浏览量:144
发布日期:2005-04-10 10:27:31
所属专题: |
|
|
|
|