手把手教你写不良品数据库管理系统.docx

上传人:b****6 文档编号:7517951 上传时间:2023-01-24 格式:DOCX 页数:67 大小:195.29KB
下载 相关 举报
手把手教你写不良品数据库管理系统.docx_第1页
第1页 / 共67页
手把手教你写不良品数据库管理系统.docx_第2页
第2页 / 共67页
手把手教你写不良品数据库管理系统.docx_第3页
第3页 / 共67页
手把手教你写不良品数据库管理系统.docx_第4页
第4页 / 共67页
手把手教你写不良品数据库管理系统.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

手把手教你写不良品数据库管理系统.docx

《手把手教你写不良品数据库管理系统.docx》由会员分享,可在线阅读,更多相关《手把手教你写不良品数据库管理系统.docx(67页珍藏版)》请在冰豆网上搜索。

手把手教你写不良品数据库管理系统.docx

手把手教你写不良品数据库管理系统

数据库知识实战应用-手把手教你写-不良品数据库管理系统

因本人工作需要,需对公司不良品进行管理,由于工作中用到的表格比较频繁,所以以EXCEL插件形式打开不合格品过程管理系统.

图1不合格品管理系统使用界面

1.为便于大家学习使用,特分享源码,禁止私自转载,或用于商业用途.

1.1.开发环境

●VisualSutdio

●WINXP/7/10

●Microsoft.NETFramework4.0或以上

1.2.开发语言和相关工具

●VB.NET

●ACCESS|SQLServer

●ADO.Net

注意1:

源码虽以ACCESS作为数据库,但更换SQLSever也是极其简单,基本只需把OleDb类替换成相应的SQL类就能完全运行成功.数据库字段设计比较简单,学习的话,按照图1设置;

注意2:

代码中涉及EXCEL插件(xlapp),存在较多VBA语法,有兴趣的话也可以改成VB.Net语法和类;

注意3:

为保证代码的原汁原味的,里面涉及的冗余的注释,分割线区类似代码,我不作任何修改.请忽略注释,自己动手删除.重新注解其实也是重新理解的过程,学习效率将事半功倍;

注意4:

想学习完整EXCEL插件开发的,可联系作者QQ:

88451376,拉学下群一起学习.

2.源码分享

ImportsSystem.Windows.Forms'使用窗体命名空间,窗体尺寸831,710

ImportsSystem.Data'使用DatSet和DataView类所必须的.

ImportsSystem.Data.OleDb'使用OleDbConnection、OleDbAdapter、OleDbCommand、OleDbParameter类所必须的.

ImportsSystem.Drawing'使用颜色命名空间

'myArray={"管理编号","发生日期","客户","供应商","产品规格","加工设备","发现过程","不良类型","操作者","类型区分","不良数量","完成工序","加工费用","材料费用","损失成本","不良现象及原因"}

PublicClassF01_不良品基本信息

'声明作用域为类级的对象,该对象建立了与数据库的连接,此时数据库为Access.

'DimstrSharePathAsString="\\192.168.X.XX\Users\不良品信息管理.accdb"

DimobjConnection1thAsNewOleDbConnection_

("Provider=Microsoft.Ace.OleDb.12.0;DataSource="&strSharePath)

'声明作用域为类级的对象,该对象用于从数据库中读取数据,并填充到DataSet对象中.

'这个构造函数使我们不必写Adapter属性SelectCommand相关代码.已经加入相关参数(SQL语句)

DimobjDataAdapterAsNewOleDbDataAdapter("SELECT不良品信息.*FROM不良品信息ORDERBY发生日期",objConnection1th)

DimobjDataAdapter1thAsNewOleDbDataAdapter()'该构造函数需要使用SelectCommand属性.用来填充履历卡数据的

DimobjDataSetAsNewDataSet()'声明作用域为类级的对象,该对象作为数据的容器,将所有数据存储到内存中,并不连接到数据库.

DimobjDataSet1thAsNewDataSet()'声明作用域为类级的对象,该对象作为数据的容器,将所有数据存储到内存中,并不连接到数据库.

DimobjDataViewAsDataView'声明作用域为类级的对象,DataView类用来表示定制表-从数据库返回以及存储在DatSet(DataTable)中的记录视图

DimobjDataView1thAsDataView'声明作用域为类级的对象,DataView类用来表示定制表-从数据库返回以及存储在DatSet(DataTable)中的记录视图

DimobjCurrencyManagerAsCurrencyManager'声明作用域为类级的对象,CurrencyManger对象用于控制绑定数据的移动;作为管理Binding对象的列表

DimmyArray()AsString'声明数组变量,数组长度为要引用的数据表字段数量.

'创建一个过程,将在Load事件(初始化代码)调用,并用来填充数据和显示数据.

PrivateSubFillDataSetAndView()

objDataSet=NewDataSet()'调用模块级对象,并重新初始化该(DataSet)对象

'向DataSet对象填充由Sql(Ole)DataAdapter对象SelectCommand属性从数据库检索到的数据..

'注意:

Fill方法使用选择命令SelectCommand.Connection.如果该链接已打开,就会自动打开填充数据后保持打开连接对象,反之则反.

objDataAdapter.Fill(objDataSet,"bl")'表(bl)是初始构建起来的,命名为bl.

objDataView=NewDataView(objDataSet.Tables("bl"))'初始化并构建DataView对象.

'CurrencyManager(窗体获取到的数据记录集合)对象包含于BindingContect集合(内置于Win窗体,无须创建)中,

'将DataView对象转化为CurrencyManager对象.

objCurrencyManager=CType(Me.BindingContext(objDataView),CurrencyManager)

EndSub

'创建一个过程,逐一将窗体中的控件属性和指定数据源创建Binding,并将其添加到集合中.

PrivateSubBindFields()

OnErrorResumeNext

DimiAsByte=0

'控件获取到的数据绑定(DataBindings属性),逐一清除(Clear方法)控件上的绑定(控件可能之前绑定过旧的DataView数据源)

myArray={"管理编号","发生日期","客户","供应商","产品规格","加工设备","发现过程","不良类型","操作者","类型区分","不良数量",

"完成工序","加工费用","材料费用","损失成本","不良现象及原因","备注","重量","处置完成","因素确定","图片路径"}

Fori=0ToUBound(myArray)

GroupBox1.Controls(myArray(i).ToString).DataBindings.Clear()

Nexti

'控件重新逐一绑定DateView数据源,add方法第一参数为要绑定的控件属性的名称,第二参数为要绑定的数据源,

'第三参数为要绑定给控件的数据字段(列表).

Fori=0ToUBound(myArray)

IfGroupBox1.Controls(myArray(i).ToString).Name<>"处置完成"Then

GroupBox1.Controls(myArray(i).ToString).DataBindings.Add("Text",objDataView,GroupBox1.Controls(myArray(i).ToString).Name)

Else

GroupBox1.Controls(myArray(i).ToString).DataBindings.Add("Checked",objDataView,GroupBox1.Controls(myArray(i).ToString).Name)

EndIf

'GroupBox1.Controls(myArray(i).ToString).DataBindings.Add("Text",objDataView,GroupBox1.Controls(myArray(i).ToString).Name)

IfGroupBox1.Controls(myArray(i).ToString).Name="发生日期"ThenGroupBox1.Controls(myArray(i).ToString).Text_

=Format(CType(GroupBox1.Controls(myArray(i).ToString).Text,Date),"yyyy/MM/dd")'转换日期格式类型.

Nexti

ToolStripLabel1.Text="Ready"'显示一个"只读"状态..

EndSub

'创建过程,并显示当前单个记录的位置.

PrivateSubShowPosition()

Try'格式化日期指定短日期格式.

发生日期.Text=Format(CType(GroupBox1.Controls("发生日期").Text,Date),"yyyy/MM/dd")'定义格式

CatcheAsSystem.Exception'声明一个错误变量类型

'如果异常(文本框为空),那么转换当前日期类型为文本类型,并写入文本框中.

GroupBox1.Controls("发生日期").Text=CType(Now,String)

发生日期.Text=Format(CType(GroupBox1.Controls("发生日期").Text,Date),"yyyy/MM/dd")'重新转换Date类型.

EndTry

txtRecordPosition.Text=objCurrencyManager.Position+1&

"of"&objCurrencyManager.Count()'显示当前记录位置,并标记记录数.

EndSub

'按钮单击事件,移动第一条记录

PrivateSubbtnMoveFirst_Click(SenderAsObject,

EAsEventArgs)HandlesbtnMoveFirst.Click

DimintPositionAsInteger

objCurrencyManager.Position=0'设置当前记录为第一条记录.

intPosition=objCurrencyManager.Position'记录位置赋值给变量

RemoveHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'解除事件关联

grdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(intPosition).Cells(0)'视图控件指针选择指定行第一个单元格

AddHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'绑定事件

'控件与数据源(objDataView)绑定,通过CurrencyManager对象指定位置,因为控件绑定同一数据源,所以控件显示的记录是同步的.

ShowPosition()

If查询条件.Text<>""ThengrdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(0).Cells(0)'CurrentCell

EndSub

'按钮单击事件,移动上一条记录

PrivateSubbtnMovePrevious_Click(SenderAsObject,

EAsEventArgs)HandlesbtnMovePrevious.Click

DimintPositionAsInteger

objCurrencyManager.Position-=1'Movetothepreviousrecord..

intPosition=objCurrencyManager.Position'记录位置赋值给变量

RemoveHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'解除事件.

grdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(intPosition).Cells(0)'视图控件指针选择指定行第一个单元格.

AddHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'绑定事件.

ShowPosition()'控件与数据源(objDataView)绑定,通过CurrencyManager指定位置,因为控件绑定同一数据源,所以控件显示的记录是同步的.

If查询条件.Text<>""ThengrdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(0).Cells(0)'CurrentCell

EndSub

'按钮单击事件,移动下一条记录.

PrivateSubbtnMoveNext_Click(SenderAsObject,

EAsEventArgs)HandlesbtnMoveNext.Click

DimintPositionAsInteger

'移动下一条记录.

objCurrencyManager.Position+=1'Movetothenextrecord..

intPosition=objCurrencyManager.Position'记录位置赋值给变量

RemoveHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'解除事件

grdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(intPosition).Cells(0)'视图控件指针选择指定行第一个单元格

AddHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'绑定事件

ShowPosition()'控件与数据源(objDataView)绑定,通过CurrencyManager指定位置,因为控件绑定同一数据源,所以控件显示的记录是同步的.

If查询条件.Text<>""ThengrdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(0).Cells(0)'CurrentCell

EndSub

'按钮单击事件,移动最后一条记录

PrivateSubbtnMoveLast_Click(SenderAsObject,

EAsEventArgs)HandlesbtnMoveLast.Click

DimintPositionAsInteger

'移动最后一条记录,不需要调用重新绑定过程,自动同步的,只要不更新,就不存在数据源集的变更

objCurrencyManager.Position=objCurrencyManager.Count-1'Settherecordpositiontothelastrecord..

intPosition=objCurrencyManager.Position'记录位置赋值给变量

RemoveHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'解除事件

grdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(intPosition).Cells(0)'视图控件指针选择指定行第一个单元格

AddHandlergrdAuthorTitles.SelectionChanged,AddressOfgrdAuthorTitles_SelectionChanged'绑定事件

ShowPosition()'控件与数据源(objDataView)绑定,通过CurrencyManager指定位置,因为控件绑定同一数据源,所以控件显示的记录是同步的.

If查询条件.Text<>""ThengrdAuthorTitles.CurrentCell=grdAuthorTitles.Rows(0).Cells(0)'CurrentCell

EndSub

PrivateSubbtnDisplayingRedData_Click(senderAsObject,eAsEventArgs)HandlesbtnDisplayingRedData.Click

ForiAsInteger=0TogrdAuthorTitles.RowCount-2'有一个空白行也算一行

IfCType(grdAuthorTitles.Item(18,i).Value.ToString(),Boolean)Then

grdAuthorTitles.Rows(i).DefaultCellStyle.Font=NewFont("宋体",9,FontStyle.Regular)'构建一个字体类及相关属性

grdAuthorTitles.Rows(i).DefaultCellStyle.ForeColor=Color.Black'字体颜色设置为黑色

Else

grdAuthorTitles.Rows(i).DefaultCellStyle.Font=NewFont("宋体",9,FontStyle.Regular)'构建一个字体类及相关属性

grdAuthorTitles.Rows(i).DefaultCellStyle.ForeColor=Color.Red'字体颜色设置为红色

EndIf

Next

EndSub

 

'加载窗体触发事件

PrivateSubF01_不良品基本信息_Load(senderAsObject,eAsEventArgs)HandlesMyBase.Load

'需要说明的是,Fill方法会执行命令(SelectCommand),其Connection属性保持为调用该方法时的状态.

'OnErrorResumeNext

FillDataSetAndView()'调用FillDataSetAndView过程检索数据并调用BindFields过程绑定数据源字段到指定控件.

ShowPosition()'调用ShowPosition方法,并显示当前记录标签位置

'BindFields()'调用绑定控件过程,因为有复合框,所以放在事件最后面.

grdAuthorTitles.AutoGenerateColumns=True'让grd控件创建所需要的所有列.

grdAuthorTitles.DataSource=objDataSet'设置DataSet对象,作为gird控件的数据来源(实际上就是一个绑定过程,告知控件从哪里获得数据).

grdAuthorTitles.DataMember="bl"'设置gird控件要显示的数据源(具体的表名称).

'将对齐方式格式改为垂直居中向右对齐.

DimobjAlignRightCellStyleAsNewDataGridViewCellStyle'初始化DataGridViewCellStyle对象(作为grd控件单元格或标题样式实例)

objAlignRightCellStyle.Alignment=DataGridViewContentAlignment.MiddleRight

DimobjAlternatingCellStyleAsNewDataGridViewCellStyle()'初始化DataGridViewCellStyle对象(grd控件单元格样式实例)作为交叉行样式

objAlternatingCellStyle.BackColor=Color.WhiteSmoke'设置交叉样式背景色为烟灰色

grdAuthorTitles.AlternatingRowsDefaultCellStyle=objAlternatingCellStyle'奇数行属性设置刚创建的样式(烟白色)

DimobjCurrencyCellStyleAsNewDataGridViewCellStyle()'初始化DataGridViewCellStyle对象,将设置单元格格式为货币型.

objCurrencyCellStyle.Alignment=DataGridViewContentAlignment.MiddleLeft'将对齐方式改为居中向左对齐

objCurrencyCellStyle.Format="¥#,##0.00"'样式格式为货币型(美元或者人民币$¥)

'objCurrencyCellStyle.Format="C"'样式格式为货币型(人民币)

grdAuthorTitles.Columns(0).HeaderText="管理编号"'设置控件列标题

'grdAuthorTitles.Columns

(1).HeaderText="发生日期"

grdAuthorTitles.Columns

(1).HeaderText="录入日期"

grdAuthorTitles.Columns

(2).HeaderText="客户"

grdAuthorTitles.Columns(3).HeaderText="供应商"

grdAuthorTitles.Columns(4).HeaderText="产品规格"

grdAuthorTitles.Columns(5).HeaderText="加工设备"

grdAuthorTitles.Columns(6).HeaderT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1