MSHFlexGrid.Col=MSHFlexGrid.Col+1
Else
IfMSHFlexGrid.Col=MSHFlexGrid.Cols-1Then
MSHFlexGrid.Row=MSHFlexGrid.Row+1
MSHFlexGrid.Col=1
EndIf
EndIf
Case38'向上
MSHFlexGrid.SetFocus
DoEvents
IfMSFlexGrid.Row>MSFlexGrid.FixedRowsThen
MSFlexGrid.Row=MSFlexGrid.Row-1
EndIf
EndSelect
EndSub
Subview_DP()
Ifflex1.Col=4Orflex1.Col=5Orflex1.Col=6Then
'格式化Flex1表的第7列、第8列、第9列、第11列
flex1.TextMatrix(flex1.Row,5)=Format(flex1.TextMatrix(flex1.Row,5),"0.00")
flex1.TextMatrix(flex1.Row,6)=Val(flex1.TextMatrix(flex1.Row,4))*
Val(flex1.TextMatrix(flex1.Row,5))
flex1.TextMatrix(flex1.Row,6)=Format(flex1.TextMatrix(flex1.Row,6),"0.00")
EndIf
DimA,BAsSingle'声明单精度浮点型变量
OnErrorResumeNext
Fori=1Toflex1.Rows-1
Ifflex1.TextMatrix(i,1)<>""Andflex1.TextMatrix(i,4)<>""Andflex1.TextMatrix(i,6)
<>""Then
A=Val(flex1.TextMatrix(i,6))+A'求合计金额
B=Val(flex1.TextMatrix(i,4))+B'求合计数量
EndIf
Nexti
lblCount=B
lblSum=Format(A,"0.00")'格式化合计金额
EndSub
SubSetButtons(bValAsBoolean)
cmdRegister.Enabled=NotbVal
cmdSave.Enabled=bVal
cmdCancel.Enabled=bVal
flex1.Enabled=bVal
Frame1.Enabled=bVal
EndSub
PrivateSubDataGrid2_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=vbKeyReturnThen
WithAdodc2.Recordset
'赋值给flex1表格
If.Fields("商品名称")<>""Thenflex1.TextMatrix(flex1.Row,1)=Trim(.Fields("商
品名称"))
If.Fields("规格")<>""Thenflex1.TextMatrix(flex1.Row,2)=Trim(.Fields("规格
"))
If.Fields("单位")<>""Thenflex1.TextMatrix(flex1.Row,3)=Trim(.Fields("单位"))
flex1.TextMatrix(flex1.Row,5)=.Fields("成本价")
EndWith
flex1.Col=4
DataGrid2.Visible=False'DataGrid2不可见
txtEdit.Text=""
txtEdit.SetFocus
EndIf
IfKeyCode=vbKeyEscapeThen'按ESC键DataGrid2不可见
DataGrid2.Visible=False'txtEdit.SetFocus'txtEdit获得焦点
EndIf
EndSub
PrivateSubdelone_Click()
Fori=1Toflex1.Cols-1
flex1.TextMatrix(flex1.Row,i)=""
Nexti
view_DP
EndSub
PrivateSubflex1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
'利用PopupMenu方法
IfButtonAndvbRightButtonThen
PopupMenuedit'弹出菜单
EndIf
EndSub
PrivateSubForm_Load()
DimiAsInteger
'使第一列较窄。
flex1.ColWidth(0)=flex1.ColWidth(0)/2'初始化编辑框
txtEdit=""
flex1.Rows=101
flex1.Cols=8
'设置列标头。
s$="^|^商品名称|^规格|^单位
|^数量|^进货价|^金额|^备注"
flex1.FormatString=s$
EndSub
PrivateSubflex1_KeyPress(KeyAsciiAsInteger)
Ifflex1.Col>=4Orflex1.Col=1Then
MSHFlexGridEditflex1,txtEdit,KeyAscii
EndIf
EndSub
'添加下列例程以初始化文本框,并将焦点从HierarchicalFlexGrid传递到TextBox控件:
SubMSHFlexGridEdit(MSHFlexGridAsControl,EdtAsControl,KeyAsciiAsInteger)
'使用已输入的字符。
SelectCaseKeyAscii
'空格表示编辑当前的文本。
Case0To32
Edt=MSHFlexGrid
Edt.SelStart=1000
'其它所有字符表示取代当前的文本。
CaseElse
Edt=Chr(KeyAscii)
Edt.SelStart=1
EndSelect
'在合适的位置显示Edt。
Edt.MoveMSHFlexGrid.Left+MSHFlexGrid.CellLeft-15,_
MSHFlexGrid.Top+MSHFlexGrid.CellTop-15,_
MSHFlexGrid.CellWidth,_
MSHFlexGrid.CellHeight
Edt.Visible=True
Edt.SetFocus
EndSub
PrivateSubflex1_DblClick()
Ifflex1.Col>=4Orflex1.Col=1Then
MSHFlexGridEditflex1,txtEdit,32'模拟一个空格。
EndIf
EndSub
PrivateSublblSum_Click()
EndSub
PrivateSubtxt1_KeyDown(IndexAsInteger,KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=vbKeyReturnAndIndex=0Then
Adodc1.RecordSource="供应商信息表where供应商编号like+'%'+'"+txt1(0)+"'+'%'or供应商全称like+'%'+'"+txt1(0)+"'+'%'or简称like+'%'+'"+txt1(0)+"'+'%'"
Adodc1.Refresh
IfAdodc1.Recordset.RecordCount>0Then
DataGrid1.Visible=True
DataGrid1.SetFocus
Else
Adodc1.RecordSource="供应商信息表"
Adodc1.Refresh
IfAdodc1.Recordset.RecordCount>0Then
DataGrid1.Visible=True
DataGrid1.SetFocus
Else
MsgBox"无可选的供应商信息,请首先录入供应商数据~",,"提示窗口"
EndIf
EndIf
EndIf
IfKeyCode=vbKeyReturnAndIndex=1Then
flex1.Col=1
flex1.Row=1
flex1.SetFocus
EndIf
EndSub
PrivateSubDataGrid1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=vbKeyReturnThen
txt1(0)=Adodc1.Recordset.Fields("供应商全称")
txt1
(1).SetFocus
DataGrid1.Visible=False
EndIf
EndSub
PrivateSubtxtEdit_KeyPress(KeyAsciiAsInteger)
'删除回车符,以消除嘟嘟声。
IfKeyAscii=Asc(vbCr)ThenKeyAscii=0EndSub
PrivateSubtxtEdit_KeyDown(KeyCodeAsInteger,ShiftAsInteger)
IfKeyCode=vbKeyReturnAndflex1.Col=1Then
Adodc2.RecordSource="商品信息表where商品名称like+'%'+'"+txtEdit+"'+'%'"
Adodc2.Refresh
IfAdodc2.Recordset.RecordCount>0Then
DataGrid2.Visible=True
DataGrid2.SetFocus
Else
Adodc2.RecordSource="商品信息表"
Adodc2.Refresh
IfAdodc2.Recordset.RecordCount>0Then
DataGrid2.Visible=True
DataGrid2.SetFocus
Else
MsgBox"无可选的商品信息,请首先录入商品数据~",,"提示窗口"
EndIf
EndIf
EndIf
'只有TextBox控件在“数量”单元格时,才使用以下过程
Ifflex1.Col>=4Then
EditKeyCodeflex1,txtEdit,KeyCode,Shift
EndIf
EndSub
'当输入数据并按下ENTER键,或用鼠标单击MSHFlexGrid控件中的另一个单元时,
'焦点将返回此控件。
这时TextBox中的文本被复制到活动单元中
PrivateSubflex1_GotFocus()
IftxtEdit.Visible=FalseThenExitSub
flex1=txtEdit
txtEdit.Visible=False
view_DP
EndSub
PrivateSubflex1_LeaveCell()
IftxtEdit.Visible=FalseThenExitSub
flex1=txtEdit
txtEdit.Visible=FalseEndSub
PrivateSubcmdCancel_Click()
Fori=1Toflex1.Rows-1
Forj=1Toflex1.Cols-1
flex1.TextMatrix(i,j)=""
Nextj
Nexti
SetButtonsFalse
txtEdit.Visible=False
view_DP
EndSub
PrivateSubcmdRegister_Click()
DimlsphAsInteger'声明一个整型变量
'创建入库票号
rs1.Open"select*from入库主表orderby票号",Cnn,adOpenStatic
Ifrs1.RecordCount>0Then
IfNotrs1.EOFThenrs1.MoveLast
Ifrs1.Fields("票号")<>""Then
lsph=Val(Right(Trim(rs1.Fields("票号")),4))+1
txtph.Text=Date&"rk"&Format(lsph,"0000")
EndIf
Else
txtph.Text=Date&"rk"&"0001"
EndIf
rs1.Close
txtDate.Text=Date
'设置控件有效或无效
SetButtonsTrue
Fori=1Toflex1.Rows-1
Forj=1Toflex1.Cols-1
flex1.TextMatrix(i,j)=""
Nextj
Nexti
txt1(0)=""
txt1
(1)=""
txt1(0).SetFocus
view_DP
EndSub
PrivateSubcmdSave_Click()
DimjsAsInteger
Fori=1Toflex1.Rows-1
Ifflex1.TextMatrix(i,1)<>""Andflex1.TextMatrix(i,2)<>""Andflex1.TextMatrix(i,
4)=""Then
MsgBox"第"&i&"行录入错误~",,"提示窗口"
ExitSub
EndIf
Ifflex1.TextMatrix(i,1)=""Then
js=js+1
EndIf
Nexti
Ifjs=flex1.Rows-1Then
MsgBox"没有要保存的数据~",,"提示窗口"
ExitSub
EndIf
rs1.Open"select*from入库从表",Cnn,adOpenKeyset,adLockOptimistic
Fori=1Toflex1.Rows-1
Ifflex1.TextMatrix(i,1)<>""Andflex1.TextMatrix(i,2)<>""Andflex1.TextMatrix(i,
4)<>""Then
'添加新记录到"入库从表"中
rs1.AddNew
Ifflex1.TextMatrix(i,1)<>""Thenrs1.Fields("商品名称")=flex1.TextMatrix(i,1)
Ifflex1.TextMatrix(i,2)<>""Thenrs1.Fields("规格")=flex1.TextMatrix(i,2)
Ifflex1.TextMatrix(i,3)<>""Thenrs1.Fields("单位")=flex1.TextMatrix(i,3)
rs1.Fields("入库数量")=Val(flex1.TextMatrix(i,4))
rs1.Fields("单价")=Val(flex1.TextMatrix(i,5))
rs1.Fields("金额")=Val(flex1.TextMatrix(i,6))
Ifflex1.TextMatrix(i,7)<>""Thenrs1.Fields("备注")=flex1.TextMatrix(i,7)
Iftxtph.Text<>""Thenrs1.Fields("入库票号")=Trim(txtph.Text)
rs1.Update
Cnn.Execute("update商品信息表set库存数量=库存数量+"&
Val(flex1.TextMatrix(i,4))&"where商品名称='"+_
flex1.TextMatrix(i,1)+"'and规格='"+flex1.TextMatrix(i,2)+"'")
EndIf
Nexti
rs1.Close
rs2.Open"select*from入库主表",Cnn,adOpenKeyset,adLockOptimistic'打开数据库
rs2.AddNew
Iftxtph.Text<>""Thenrs2.Fields("票号")=Trim(txtph.Text)
IftxtDate.Text<>""Thenrs2.Fields("入库日期")=Trim(txtDate.Text)
Iftxt1(0)<>""Thenrs2.Fields("供应商全称")=txt1(0)
Iftxt1
(1)<>""Thenrs2.Fields("经手人")=txt1
(1)
rs2.Fields("入库金额")=lblSum
rs2.Update
rs2.Close
'设置控件有效或无效
SetButtonsFalse
EndSub
PrivateSubcmdQuit_Click()
End