1、VB程序设计 进销存管理信息系统VB进销存管理信息系统(1)添加Module模块,编写Main过程:声明全局对象变量ADOcn,用于创建与数据库的连接Public ADOcn As Connection声明全局变量strQuery1用于存储查询条件Pubic strQuery1 As StringPublic Sub Main()定义数据库连接字符串Dim strSQLServer As String用于连接SQL Server数据库,其中:Server为服务器名称User ID为登录账号,Password为登录口令Database为具体的数据库名请根据具体的实验环境修改这些参数strSQLS
2、erver = Provider=SQLOLEDB;Server=bigdog;Us_er ID=sa;Password=sa;Database=进销存连接SQL Server数据库ADOcn.Open strSQLServer显示主窗体frmMain.ShowEnd Sub将Main过程设为工程启动对象。(2)FrmMain窗体主要代码。该窗体的代码主要用于调度其他各窗体,起串接作用。Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.But_ton)Select Case ButtonCase 物资台账管理frm台账.S
3、how 1Case 物资入库管理frm入库.Show 1Case 物资出库管理frm出库.Show 1Case?退出系统Unload Me 或者使用End命令End SelectEnd Sub(3)“frm台账”窗体代码。“通用”部分声明一个Sub过程,用于在MSFlexGrid中显示记录。Private Sub DisplayGrid()声明变量Dim strGrid As StringDim i As IntegerDim ADOrs As New RecordsetADOrs.ActiveConnection = ADOcn打开物资台账If strQuery1 ThenADOrs.Ope
4、n Select * From 物资台账?Where + strQuery1 + Order By 物资编码ElseADOrs.Open Select * From 物资台账?order by 物资编码End If设置MSFlexGrid控件的表头MSFlexGrid1.ClearMSFlexGrid1.Rows = 0MSFlexGrid1.Cols = 6strGrid = 物资编码 + vbTab + 物资名称 + vbTab + 计量单位 + vbTabstrGrid = strGrid + 单价 + vbTab + 期初库存 + vbTab + 期初金额i = 0在第i行增加一列MS
5、FlexGrid1.AddItem strGrid, ii = i + 1通过循环显示表中所有记录Do While Not ADOrs.EOFstrGrid = ADOrs(物资编码) + vbTab + ADOrs(物资名称) + vbTab + ADOrs(计量单位)strGrid = strGrid + vbTab + Str(ADOrs(单价) + vbTab + Str(ADOrs(期初库存)strGrid = strGrid + vbTab + Str(ADOrs(单价) * ADOrs(期初库存)MSFlexGrid1.AddItem strGrid, iADOrs.MoveNe
6、xt 指针下移一条记录i = i + 1LoopMSFlexGrid1.Rows = i + 1MSFlexGrid1.FixedRows = 1MSFlexGrid1.FixedCols = 1End SubPrivate Sub Form_Load()设置查询条件变量的初值strQuery1 = 显示物资台账记录DisplayGridEnd SubPrivate Sub Command1_Click()调用增加记录窗体FrmAdd台账.Show 1DisplayGridEnd SubPrivate Sub Command2_Click()删除一条记录Dim strSQL As String
7、Dim i As Integer取当前光标所在行i = MSFlexGrid1.Row取当前行的第0列单元值,即物资编码列If MSFlexGrid1.TextMatrix(i, 0) = ThenMsgBox 请先选择一个记录!, vbQuestion + vbOKOnly, 信息提示Exit SubEnd IfstrSQL = Delete From 物资台账strSQL = strSQL + Where 物资编码= + MSFlexGrid1.TextMatr?_ix(i, 0) + If MsgBox(是否要删除?, vbQuestion + vbOKCancel, 信息提示) = v
8、bOK ThenADOcn.Execute strSQL 执行删除操作End If重新显示DisplayGridEnd SubPrivate Sub Command3_Click()调用修改记录窗体Dim i As Integeri = MSFlexGrid1.RowIf MSFlexGrid1.TextMatrix(i, 0) = ThenMsgBox 请先选择一个记录!, vbQuestion + vbOKOnly, 信息提示Exit SubEnd If对frmUpdate台账窗体赋值With frmUpdate台账.Text1(0) = MSFlexGrid1.TextMatrix(i,
9、 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).Show 1End With修改完后重新显示DisplayGridEnd SubPrivate Sub Command4_Click()调用设置查询条件窗体FrmQuery查询.Show 1设置完查询条件后重新显示记录DisplayGridEnd SubPrivat
10、e Sub Command5_Click()调用打印报表窗体Dim ADOrs As New RecordsetADOrs.ActiveConnection = ADOcnIf strQuery1 ThenADOrs.Open Select * From 物资台账?Where + strQuery1?+Order By 物资编码ElseADOrs.Open Select * From 物资台账?Order By 物资编码End If设置报表窗体的DataSource和DataMember属性Set frmReport台账.DataSource = ADOrs.DataSourceFrmRepo
11、rt台账.DataMember = ADOrs.DataMemberFrmReport台账.Show 1End SubPrivate Sub Command6_Click()退出本窗体Unload MeEnd Sub(4)“frmAdd台账”窗体代码。Private Sub Command1_Click()Dim strSQL As StringDim ADOrs As New RecordsetSet ADOrs.ActiveConnection = ADOcn首先查询主关键字“物资编码”是否重复ADOrs.Open Select 物资编码?From 物资台账?Where 物资编码= +?T
12、ext1(0) + If Not ADOrs.EOF ThenMsgBox 物资编码已存在,请重新输入, vbQuestion + vbOKOnly, 信息提示Exit Sub 退出本过程End If增加一条新记录strSQL = Insert Into 物资台账(物资编码,物资名称,计量单位,单价,期初库存) strSQL = strSQL + Values( + Text1(0) + , + Text1(1)?+ , + Combo1.Text + ,strSQL = strSQL + Text1(2) + , + Text1(3) + )ADOcn.Execute strSQLMsgBo
13、x 增加成功,请继续!, vbQuestion + vbOKOnly, 信息提示End SubPrivate Sub Command2_Click()退出本窗体Unload MeEnd SubPrivate Sub Form_Load()赋初值Text1(0) = Text1(1) = Text1(2) = 0Text1(3) = 0Combo1.ListIndex = 0End SubPrivate Sub Text1_Change(Index As Integer)当“单价”和“期初库存”值发生变化时,自动计算“期初金额”If Index = 2 Or Index = 3 ThenText
14、1(4) = Trim(Str(Val(Text1(2) * Val(Text1(3)End IfEnd SubPrivate Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)将用户输入的回车键转换为Tab键,使焦点自动下移If KeyAscii = 13 ThenSendKeys TabEnd If对于“单价”和“期初库存”文本框只允许输入数字、小数点和退格键If Index = 2 Or Index = 3 ThenIf Not (Chr(KeyAscii) = 0 And Chr(KeyAscii) = 9)?_Or Ch
15、r(KeyAscii) = . Or KeyAscii = 8) ThenKeyAscii = 0End IfEnd IfEnd Sub(5)“frmUpdate台账”窗体代码。主要代码是:Private Sub Command1_Click()Dim strSQL As StringstrSQL = Update 物资台账?Set 物资名称= + Text1(1) + ,strSQL = strSQL + 计量单位= + Combo1.Text + ,strSQL = strSQL + 单价= + Text1(2) + ,strSQL = strSQL + 期初库存= + Text1(3)s
16、trSQL = strSQL + Where 物资编码= + Text1(0) + ADOcn.Execute strSQLUnload MeEnd Sub(6)“frmQuery台账”窗体代码。Private Sub Command1_Click()拼写查询条件字符串Dim str1, str2 As Stringstr1 = str2 = If Text1(0) Thenstr1 = 物资编码 + Combo1.Text + + Text1(0) + End IfIf Text1(1) Thenstr1 = 物资名称 + Combo2.Text + + Text1(1) + End IfI
17、f str1 = And str2 = ThenstrQuery1 = ElseIf str1 = And str2 ThenstrQuery1 = str2ElseIf str1 And str2 = ThenstrQuery1 = str1ElsestrQuery1 = str1 + And + str2End IfUnload MeEnd SubPrivate Sub Command2_Click()退出本窗体Unload MeEnd SubPrivate Sub Form_Load()对窗体对象赋初值Combo1.ClearCombo1.AddItem =Combo1.AddItem =Combo1.AddItem Combo1.AddItem Combo1.AddItem =Combo1.AddItem Combo2.ClearCombo2.AddItem =Combo2.AddItem =Combo2.AddItem Combo2.AddItem Combo2.AddItem =Combo2.AddItem Text1(0).Text = Text1(1).Text = End Sub