网站首页 工具软件 操作系统 办公软件 网页制作 PHP教程 script脚本专栏 photoshop教程 其他精品教程
我发布的文章 - 教程搜索 - 交流论坛 - 帮助中心 - 网站首页 网络工具 - 常用工具 - 媒体工具 - 系统工具 - 实用工具 NT/2003 - Win Xp - Win2000 - DOS/Win9x - IE/注册表 - Linux - 苹 果 Office - Word - Excel - PowerPoint - 输入法 - 邮件处理 Flash - Dreamweaver - Fireworks - FrontPage - HTMLCSS 基础文章 - PHP函数 - PHP技巧 - 数据库相关 - 高级应用 - PHP安装 - 转载精华 - 常见问题 综 合 类 - 状 态 栏 - 游 戏 类 - 页面背景 - 页面特效 - 页面导航 - 文本操作 - 文本特效 - 图形特效 - 鼠标特效 - 时间日期 - 密 码 类 文字特效 - 按钮与图标 - 色彩运用 - 滤镜魔法 - 综合实例 XML教程 - DELPHI基础教程 - VB教程
首页 -> 其他精品教程 -> VB教程

TOP

:用继承加速MIS开发 (2)
文章内容
相关信息
用户评论
文章内容


说明: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
所属专题:
用户评论
称  呼:
内  容:

广告位

广告招租,欢迎抢订

热门信息

·什么是ODBC
·初识WTL(上)
·理解ActiveX控件的一些背景..
·VB.NET 的新特点:变..
·探讨VB.Net中的数据绑定
·用VB.NET打造NameSpace
·VB.NET中的面向对象编程特征
·用VB和MTS开发多层数据库应..

推荐信息