VB.NET2008+ACCESS2007设计村民常住户口登记信息管理系统

摘要:通过VB.NET2008开发窗体应用程序来实现数据动态更新式的模糊查询;

每户家庭中以户主为中心的关系查询;以及报表制作的实现

关键词:VB.NET2008ACCESS2007数据库、查询、

         TreevView控件、DataGridView控件

一、概述:

随着信息技术在农村的大力普及,通过数据库管理系统(DBMS)将村民常住人口登记信息录入数据库,再配合数据库应用程序对数据实现的动态更新式模糊查询,方便的将现有数据进行增、删、减、改操作;通过每户家庭中以户主为中心的关系建立,来对数据库相应表中的数据进行组织;通过窗体应用程序中 DataGridView控件中的查询结果导入到Excel中,来自动化生成《常住人口登记表》,轻松实现对该报表机型浏览、打印。

通过该信息管理系统的实现,不仅使村级行政单位摆脱了人工管理带来的一系列弊端,更重要的是提高了工作效率,使村级行政信息管理发生了质的飞跃。  

二、方法:

1、动态更新式模糊查询的实现

首先要实现SQL语句的模糊查询。通过使用数据适配器配置向导来生成SQL语句,这里只生成SELECT语句,在WHERE子句中使用LIKE关键字搜索与指定模式匹配的字符串值,模式包含要搜索的字符串和代表任意数目字符的通配符“% 。所生成的SELECT语句与TableAdapter对象中指定的Fill方法相对应。该方法通过生成的SQL语句从指定的数据库表中提取数据来填充指定的DataSet对象中的DataTable对象。该对象中的RowsColumns集合会自动填充并更新DataGridView控件中的RowsColumns集合。

其次实现动态更新,将TableAdapter对象中指定的Fill方法放在输入查询内容的Textbox空间中的TextChange实践当中。这样就可以随查询内容的更新来动态更新显示模糊查询结果。

2、每户家庭中以户主为中心的关系查询的实现

通过数据库管理系统建立数据库,并新建两张表Sheet1Sheet2(如表1所示)其中Sheet1表包含编号和户主姓名两列。对于单个家庭来说,编号要求唯一且被互助及其家庭成员所共享,并且还要求编号与TreevView控件显示的户主姓名的每个节点(Node)的索引号(Index)建立一一对应关系。这样做不仅可以通过引用索引号将同名同姓的户主及家庭成员区分开来,还可以只是用一个简单的SQL语句在点击某个TreevView控件的户主姓名节点时,将其本人及家庭成员的信息一并显示在TreevView控件上。

Sheet2表保存着录入数据库的村民常住人口的各项信息,其中每一列代表其中一项信息,要求表中列的顺序与通过将DataGridView控件中的查询结果导入到Excel相应单元格中(Range)的顺序相同。此举可以以连贯的方式将DataGridView控件相应的网各种的数据导入Excel报表中指定的单元格中。

3、将DataGridView控件中的查询结果导入到Excel中,来自动化生成《常住人口登记表》的实现

首先通过Excel来建立一个《常住人口登记表》,该报表与纸质媒介的《常住人口登记表》的样式保持一致。表格的每一项都对应一个单元格进行数据填充。

其次通过编程的方式将DataGridView控件中相应行列表格中的数据导入到Excel报表中指定的单元格中,方法如下:

1.  在引用的COM中找到Microsoft Excel 12.0 Object Library,并进行添加。

2.  建立Excel应用程序对象并启动一个新的Excel应用程序进程。通过该应用程序对象打开指定路径的工作簿对象。

3.  通过Excel应用程序对象引用Excel报表中需要填充数据的单元格,将DataGridView控件中相应行列表格中的数据填充进去。

注意:需要指出的是:为在公民身份证编号一列录入数据方便,所录入的每项数据类型均为数值型。在导入Excel报表中相应的单元格中时,不仅将DataGridView控件中相应行列表格中的数据转化为数字字符串,还要在字符串前面加上“

1   数据表结构

表名

解释

字段名

Sheet1

户主姓名列表

编号

户主姓名

Sheet2

村民常住人口的各项信息

户别

户主姓名

与户主关系

姓名

性别

民族

……

备注

二、实现:

1.在使用VB.NET2008所创建的WINDOWS应用程序项目中,新建一个查询窗体。查询窗体控件上所用主要控件见表2

2   主要控件列表

控件类型

控件名称

功能

Form

Form1

程序主窗体

ComboBox

ComboBox1

选择检索方式

TextBox

TextBox1

输入检索内容

TreeView

TreeView1

显示户主姓名列表

DataGridView

DataGridView1

显示查询结果

2.在窗体模块中声明全局变量,过程如下:

Dim NumColumn(1000) As String //该���组用来存储编号

Dim NameColumn(1000) As String //该数组用来存储户主姓名

3.动态更新式模糊查询的实现过程的代码如下:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim mystr As String

        If ComboBox1.Text = “按文字方式检索” Then

            mystr = TextBox1.Text & "%"

            Try

           Me.Sheet2TableAdapter.FillBy1(Me.Database1DataSet1.Sheet2, mystr)

            Catch ex As System.Exception

                System.Windows.Forms.MessageBox.Show(ex.Message)

            End Try

        End If

        If ComboBox1.Text =  “按拼音方式检索”Then

            mystr = TextBox1.Text & "%"

            Try

           Me.Sheet2TableAdapter.FillBy2(Me.Database1DataSet1.Sheet2, mystr)

            Catch ex As System.Exception

                System.Windows.Forms.MessageBox.Show(ex.Message)

            End Try

        End If

    End Sub

4. 每户家庭中以户主为中心的关系查询的实现过程的代码如下:

  Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

        Try

            Me.Sheet2TableAdapter.FillBy(Me.Database1DataSet1.Sheet2, NumColumn(e.Node.Index))

        Catch ex As System.Exception

            System.Windows.Forms.MessageBox.Show(ex.Message)

        End Try

    End Sub

5.DataGridView控件中的查询结果导入到Excel中,来自动化生成《常住人口登记表》的实现过程的代码如下:

Dim xApp As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application

Dim xBook As Microsoft.Office.Interop.Excel.Workbook = xApp.Workbooks.Open("D:\My Documents\Visual Studio 2008\WindowsApplication1\WindowsApplication1\.”常住人口登记表”.xls")

xApp.Cells(2, 1) = gridView(1, i).Value.ToString

xApp.Cells(2, 7) = gridView(2, 1).Value.ToString

xApp.Cells(2, 8) = gridView(3, i).Value.ToString

xApp.Cells(3, 2) = gridView(4, i).Value.ToString

   ……         ……

xApp.Cells(11, 2) = "'" & gridView(17, i).Value.ToString

//不仅将DataGridView控件中相应行列表格中的数据转化为数字字符串,还要在字符串前面加上“

……         ……

四、结语:

1.本程序在Windows XP SP2Visual Studio2008Access2007Excel2007下调是通过。                                    

2.本文以实际村民常住人口登记信息管理系统为例,重点介绍开发数据库应用程序所涉及的对数据查询、组织、导出的三个通用基本操作的技术实现。希望对学习数据库管路系统开发的初学者有所裨益。

[1] 明日科技 Visual Basic数据库系统开发完全手册  人民邮电出版社,2006

[2] Microsoft corporation MSDN Library for Visual Studio2008