汇总VB数据库编程中MSHFlexGrid控件用法详解.docx

上传人:b****4 文档编号:6142624 上传时间:2023-05-09 格式:DOCX 页数:13 大小:17.35KB
下载 相关 举报
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第1页
第1页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第2页
第2页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第3页
第3页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第4页
第4页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第5页
第5页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第6页
第6页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第7页
第7页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第8页
第8页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第9页
第9页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第10页
第10页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第11页
第11页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第12页
第12页 / 共13页
汇总VB数据库编程中MSHFlexGrid控件用法详解.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇总VB数据库编程中MSHFlexGrid控件用法详解.docx

《汇总VB数据库编程中MSHFlexGrid控件用法详解.docx》由会员分享,可在线阅读,更多相关《汇总VB数据库编程中MSHFlexGrid控件用法详解.docx(13页珍藏版)》请在冰点文库上搜索。

汇总VB数据库编程中MSHFlexGrid控件用法详解.docx

汇总VB数据库编程中MSHFlexGrid控件用法详解

[汇总]VB数据库编程中MSHFlexGrid控件用法详解

VB数据库编程中MSHFlexGrid控件用法详解

添加MSHFlexGrid将Name改成flex1

添加text将name改成txtedit

Publicrs1AsNewADODB.Recordset,rs2AsNewADODB.Recordset'定义数据集对象

DimiAsInteger,jAsInteger

SubEditKeyCode(MSHFlexGridAsControl,EdtAsControl,KeyCodeAsInteger,ShiftAs

Integer)

'标准编辑控件处理。

SelectCaseKeyCode

Case27'ESC:

隐藏焦点并将其返回MSFlexGrid

Edt.Visible=False

MSHFlexGrid.SetFocus

Case13'ENTER将焦点返回MSFlexGrid。

MSHFlexGrid.SetFocus

DoEvents

IfMSHFlexGrid.Col

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

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2