VB程序设计 进销存管理信息系统.docx
《VB程序设计 进销存管理信息系统.docx》由会员分享,可在线阅读,更多相关《VB程序设计 进销存管理信息系统.docx(11页珍藏版)》请在冰豆网上搜索。
VB程序设计进销存管理信息系统
VB进销存管理信息系统
(1)添加Module模块,编写Main过程:
'声明全局对象变量ADOcn,用于创建与数据库的连接
PublicADOcnAsConnection
'声明全局变量strQuery1用于存储查询条件
PubicstrQuery1AsString
PublicSubMain()
'定义数据库连接字符串
DimstrSQLServerAsString
'用于连接SQLServer数据库,其中:
'Server为服务器名称
'UserID为登录账号,Password为登录口令
'Database为具体的数据库名
'请根据具体的实验环境修改这些参数
strSQLServer="Provider=SQLOLEDB;Server=bigdog;Us_
erID=sa;Password=sa;Database=进销存"
'连接SQLServer数据库
ADOcn.OpenstrSQLServer
'显示主窗体
frmMain.Show
EndSub
将Main过程设为工程启动对象。
(2)FrmMain窗体主要代码。
该窗体的代码主要用于调度其他各窗体,起串接作用。
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.But_ton)
SelectCaseButton
Case"物资台账管理"
frm台账.Show1
Case"物资入库管理"
frm入库.Show1
Case"物资出库管理"
frm出库.Show1
Case?
"退出系统"
UnloadMe'或者使用End命令
EndSelect
EndSub
(3)“frm台账”窗体代码。
“通用”部分声明一个Sub过程,用于在MSFlexGrid中显示记录。
PrivateSubDisplayGrid()
'声明变量
DimstrGridAsString
DimiAsInteger
DimADOrsAsNewRecordset
ADOrs.ActiveConnection=ADOcn
'打开物资台账
IfstrQuery1<>""Then
ADOrs.Open"Select*From物资台账?
Where"+strQuery1+"OrderBy物资编码"
Else
ADOrs.Open"Select*From物资台账?
orderby物资编码"
EndIf
'设置MSFlexGrid控件的表头
MSFlexGrid1.Clear
MSFlexGrid1.Rows=0
MSFlexGrid1.Cols=6
strGrid="物资编码"+vbTab+"物资名称"+vbTab+"计量单位"+vbTab
strGrid=strGrid+"单价"+vbTab+"期初库存"+vbTab+"期初金额"
i=0
'在第i行增加一列
MSFlexGrid1.AddItemstrGrid,i
i=i+1
'通过循环显示表中所有记录
DoWhileNotADOrs.EOF
strGrid=ADOrs("物资编码")+vbTab+ADOrs("物资名称")+vbTab+ADOrs("计量单位")
strGrid=strGrid+vbTab+Str(ADOrs("单价"))+vbTab+Str(ADOrs("期初库存"))
strGrid=strGrid+vbTab+Str(ADOrs("单价")*ADOrs("期初库存"))
MSFlexGrid1.AddItemstrGrid,i
ADOrs.MoveNext'指针下移一条记录
i=i+1
Loop
MSFlexGrid1.Rows=i+1
MSFlexGrid1.FixedRows=1
MSFlexGrid1.FixedCols=1
EndSub
PrivateSubForm_Load()
'设置查询条件变量的初值
strQuery1=""
'显示物资台账记录
DisplayGrid
EndSub
PrivateSubCommand1_Click()
'调用增加记录窗体
FrmAdd台账.Show1
DisplayGrid
EndSub
PrivateSubCommand2_Click()
'删除一条记录
DimstrSQLAsString
DimiAsInteger
'取当前光标所在行
i=MSFlexGrid1.Row
'取当前行的第0列单元值,即物资编码列
IfMSFlexGrid1.TextMatrix(i,0)=""Then
MsgBox"请先选择一个记录!
",vbQuestion+vbOKOnly,"信息提示"
ExitSub
EndIf
strSQL="DeleteFrom物资台账"
strSQL=strSQL+"Where物资编码='"+MSFlexGrid1.TextMatr?
_
ix(i,0)+"'"
IfMsgBox("是否要删除?
",vbQuestion+vbOKCancel,"信息提示")=vbOKThen
ADOcn.ExecutestrSQL'执行删除操作
EndIf
'重新显示
DisplayGrid
EndSub
PrivateSubCommand3_Click()
'调用修改记录窗体
DimiAsInteger
i=MSFlexGrid1.Row
IfMSFlexGrid1.TextMatrix(i,0)=""Then
MsgBox"请先选择一个记录!
",vbQuestion+vbOKOnly,"信息提示"
ExitSub
EndIf
'对frmUpdate台账窗体赋值
WithfrmUpdate台账
.Text1(0)=MSFlexGrid1.TextMatrix(i,0)
.Text1
(1)=MSFlexGrid1.TextMatrix(i,1)
.Combo1.Text=MSFlexGrid1.TextMatrix(i,2)
.Text1
(2)=MSFlexGrid1.TextMatrix(i,3)
.Text1(3)=MSFlexGrid1.TextMatrix(i,4)
.Show1
EndWith
'修改完后重新显示
DisplayGrid
EndSub
PrivateSubCommand4_Click()
'调用设置查询条件窗体
FrmQuery查询.Show1
'设置完查询条件后重新显示记录
DisplayGrid
EndSub
PrivateSubCommand5_Click()
'调用打印报表窗体
DimADOrsAsNewRecordset
ADOrs.ActiveConnection=ADOcn
IfstrQuery1<>""Then
ADOrs.Open"Select*From物资台账?
Where"+strQuery1?
+"OrderBy物资编码"
Else
ADOrs.Open"Select*From物资台账?
OrderBy物资编码"
EndIf
'设置报表窗体的DataSource和DataMember属性
SetfrmReport台账.DataSource=ADOrs.DataSource
FrmReport台账.DataMember=ADOrs.DataMember
FrmReport台账.Show1
EndSub
PrivateSubCommand6_Click()
'退出本窗体
UnloadMe
EndSub
(4)“frmAdd台账”窗体代码。
PrivateSubCommand1_Click()
DimstrSQLAsString
DimADOrsAsNewRecordset
SetADOrs.ActiveConnection=ADOcn
'首先查询主关键字“物资编码”是否重复
ADOrs.Open"Select物资编码?
From物资台账?
Where物资编码='"+?
Text1(0)+"'"
IfNotADOrs.EOFThen
MsgBox"物资编码已存在,请重新输入",vbQuestion+vbOKOnly,"信息提示"
ExitSub'退出本过程
EndIf
'增加一条新记录
strSQL="InsertInto物资台账(物资编码,物资名称,计量单位,单价,期初库存)"
strSQL=strSQL+"Values('"+Text1(0)+"','"+Text1
(1)?
+"','"+Combo1.Text+"',"
strSQL=strSQL+Text1
(2)+","+Text1(3)+")"
ADOcn.ExecutestrSQL
MsgBox"增加成功,请继续!
",vbQuestion+vbOKOnly,"信息提示"
EndSub
PrivateSubCommand2_Click()
'退出本窗体
UnloadMe
EndSub
PrivateSubForm_Load()
'赋初值
Text1(0)=""
Text1
(1)=""
Text1
(2)="0"
Text1(3)="0"
Combo1.ListIndex=0
EndSub
PrivateSubText1_Change(IndexAsInteger)
'当“单价”和“期初库存”值发生变化时,自动计算“期初金额”
IfIndex=2OrIndex=3Then
Text1(4)=Trim(Str(Val(Text1
(2))*Val(Text1(3))))
EndIf
EndSub
PrivateSubText1_KeyPress(IndexAsInteger,KeyAsciiAsInteger)
'将用户输入的回车键转换为Tab键,使焦点自动下移
IfKeyAscii=13Then
SendKeys"{Tab}"
EndIf
'对于“单价”和“期初库存”文本框只允许输入数字、小数点和退格键
IfIndex=2OrIndex=3Then
IfNot((Chr(KeyAscii)>="0"AndChr(KeyAscii)<="9")?
_OrChr(KeyAscii)="."OrKeyAscii=8)Then
KeyAscii=0
EndIf
EndIf
EndSub
(5)“frmUpdate台账”窗体代码。
主要代码是:
PrivateSubCommand1_Click()
DimstrSQLAsString
strSQL="Update物资台账?
Set物资名称='"+Text1
(1)+"',"
strSQL=strSQL+"计量单位='"+Combo1.Text+"',"
strSQL=strSQL+"单价="+Text1
(2)+","
strSQL=strSQL+"期初库存="+Text1(3)
strSQL=strSQL+"Where物资编码='"+Text1(0)+"'"
ADOcn.ExecutestrSQL
UnloadMe
EndSub
(6)“frmQuery台账”窗体代码。
PrivateSubCommand1_Click()
'拼写查询条件字符串
Dimstr1,str2AsString
str1=""
str2=""
IfText1(0)<>""Then
str1="物资编码"+Combo1.Text+"'"+Text1(0)+"'"
EndIf
IfText1
(1)<>""Then
str1="物资名称"+Combo2.Text+"'"+Text1
(1)+"'"
EndIf
Ifstr1=""Andstr2=""Then
strQuery1=""
ElseIfstr1=""Andstr2<>""Then
strQuery1=str2
ElseIfstr1<>""Andstr2=""Then
strQuery1=str1
Else
strQuery1=str1+"And"+str2
EndIf
UnloadMe
EndSub
PrivateSubCommand2_Click()
'退出本窗体
UnloadMe
EndSub
PrivateSubForm_Load()
'对窗体对象赋初值
Combo1.Clear
Combo1.AddItem"="
Combo1.AddItem">="
Combo1.AddItem">"
Combo1.AddItem"<"
Combo1.AddItem"<="
Combo1.AddItem"<>"
Combo2.Clear
Combo2.AddItem"="
Combo2.AddItem">="
Combo2.AddItem">"
Combo2.AddItem"<"
Combo2.AddItem"<="
Combo2.AddItem"<>"
Text1(0).Text=""
Text1
(1).Text=""
EndSub