frmhuxinglogin.show
Endsub
(2)加载窗体时,需要在打开户型资料表之后,调用dispalygrid过程显示记录信息,然后将常用户型名称添加到Combo1组合框的子项中。在窗体加载事件中输入如下代码:
OptionExplicit
Dimrs_huxingAsNewADODB.Recordset
DimgridclickAsBoolean
DimgetrowAsLong
PrivateSubForm_Load()
DimsqlAsString
GoToloaderror
sql="select*from户型资料表"'检索户型资料表
rs_huxing.CursorLocation=adUseClient
rs_huxing.Opensql,conn,adOpenKeyset,adLockPessimistic
displaygrid'调用displaygrid过程,显示信息
Combo1.AddItem"二室二厅"'将户型资料加入Combo1控件子项中
Combo1.AddItem"一室二厅"
Combo1.AddItem"一室二厅"
Combo1.AddItem"复式"
Combo1.AddItem"三室二厅"
gridclick=False'标识未选择记录
cmdModify.Enabled=False'此时修改和删除不可用
cmdDel.Enabled=False
ExitSub
loaderror:
MsgBoxErr.Description
EndSub
(3)窗体加载时需要显示所有记录信息。考虑到代码的可重用性,定义displaygrid过程。单击"工具"菜单,选择"添加过程"子菜单,添加displaygrid过程。
显示表格信息前应该对表格格式进行设置,如设置表格的行数和列数等,添加一个setgrid过程。
PublicSubsetgrid()
'设置表格格式
DimiAsInteger
GoToseterror
WithgrdHuxing
.ScrollBars=flexScrollBarBoth
.FixedCols=1
.Rows=rs_huxing.RecordCount+1
.Cols=6
.SelectionMode=flexSelectionByRow
Fori=0To.Rows-1'设置行高
.RowHeight(i)=315
Next
Fori=0To.Cols-1'设置列宽
.ColWidth(i)=1300
Nexti
EndWith
ExitSub
seterror:
MsgBoxErr.Description
EndSub
其中,使用Rows和Cols属性设置总行数和列数。FixedCols属性的作用是冻结某列,也就是说,如果表格的列数过多从而使表格带有水平滚动条时,被设置为冻结的列不会随着滚动条的滚动而变化。
表格表头的格式是单独设置的,以便区别于其他行。添加过程setgridhead用来设置表头。
PublicSubsetgridhead()
'设置表头格式
GoTosetheaderror
grdHuxing.Row=0
'在第一行中逐列设置显示文本,作为表头
grdHuxing.Col=0
grdHuxing.Text="户型编号"
grdHuxing.Col=1
grdHuxing.Text="建筑面积"
grdHuxing.Col=2
grdHuxing.Text="套内面积"
grdHuxing.Col=3
grdHuxing.Text="户型"
grdHuxing.Col=4
grdHuxing.Text="图片文件"
grdHuxing.Col=5
grdHuxing.Text="户型简介"
ExitSub
setheaderror:
MsgBoxErr.Description
EndSub
在dispalygrid过程中调用这两个过程即可设置好表格的格式,然后逐行逐列地显示数据。
PublicSubdisplaygrid()
'显示表格信息
DimiAsInteger
GoTodisplayerror
setgrid'调用setgrid过程设置表格格式
setgridhead'调用setgridhead过程设置表头格式
grdHuxing.Row=0
IfNotrs_huxing.EOFThen
rs_huxing.MoveFirst
DoWhileNotrs_huxing.EOF
grdHuxing.Row=grdHuxing.Row+1
'从第二行开始逐列取得字段值并显示出来
grdHuxing.Col=0IfNotIsNull(rs_huxing.Fields(0))ThengrdHuxing.Text=rs_huxing.Fields(0)_
ElsegrdHuxing.Text=""
grdHuxing.Col=1
IfNotIsNull(rs_huxing.Fields(1))ThengrdHuxing.Text=rs_huxing.Fields(1)_
ElsegrdHuxing.Text=""
grdHuxing.Col=2
IfNotIsNull(rs_huxing.Fields(2))ThengrdHuxing.Text=rs_huxing.Fields(2)_
ElsegrdHuxing.Text=""
grdHuxing.Col=IfNotIsNull(rs_huxing.Fields(3))ThengrdHuxing.Text=rs_huxing.Fields(3)_
ElsegrdHuxing.Text=""
grdHuxing.Col=4
IfNotIsNull(rs_huxing.Fields(5))ThengrdHuxing.Text=rs_huxing.Fields(5)_
ElsegrdHuxing.Text=""
grdHuxing.Col=
IfNotIsNull(rs_huxing.Fields(4))ThengrdHuxing.Text=rs_huxing.Fields(4)_
Else:grdHuxing.Text=""
rs_huxing.MoveNext
Loop
EndIf
displayerror:
IfErr.Number<>0ThenMsgBoxErr.Description
EndSub
(4)当单击表格控件的某条户型记录时,即在下面的明细栏内显示该条记录的详细信息。此时还可以对此记录进行修改和删除操作。在grdHuxing_Click事件中添加代码实现这一功能。
PrivateSubgrdHuxing_Click()
GoTogriderror
gridclick=True
cmdModify.Enabled=True
cmdDel.Enabled=True
getrow=grdHuxing.Row'记录当前行
IfgrdHuxing.Rows=1Then'只有表头一行
MsgBox"无相关纪录",vbOKOnly+vbExclamation,""
Else
displaymingxi'调用displaymingxi过程将记录的详细信息显示出来
EndIf
griderror:
IfErr.Number<>0ThenMsgBoxErr.Description
EndSub
(5)diaplaymingxi过程依次将数据内容添加到各个文本框中。需要特别说明的是,每个记录中的"图片文件"字段存储了对应户型的示意图文件名。这些示意图存放在系统路径下的ICON文件夹内,如果存在需要使用Image控件显示该户型的示意图。
PublicSubdisplaymingxi()
txtHuxingnum.Text=grdHuxing.TextMatrix(getrow,0)'取的当前行的第一列
txtJianzhumianji.Text=grdHuxing.TextMatrix(getrow,1)
txtTaomianji.Text=grdHuxing.TextMatrix(getrow,2)
txtFangxing.Text=grdHuxing.TextMatrix(getrow,3)
txtJianjie.Text=grdHuxing.TextMatrix(getrow,5)
DimpicAsString
IfgrdHuxing.TextMatrix(getrow,4)<>""Then'第五列不为空,说明有图片文件
pic=grdHuxing.TextMatrix(getrow,4)'取得图片名称
Image1.Picture=LoadPicture(App.Path&"\ICON\"&pic&".bmp")'加载图片
Else
Image1.Picture=LoadPicture()'加载文件为空,即将图像清空
EndIf
EndSub
下面编辑各个按钮的功能。
(6)双击cmdAdd控件,在cmdAdd_Click事件中处理对该按钮的响应。
这个按钮有两个状态,分别是"增加"和"保存"。首先应该判断当前按钮的状态。
如果当前的按钮状态为"增加",则窗体各部分接受新的数据输入。此时清空所有的文本框的内容,同时将"修改"和"删除"按钮设置为不可用。
PrivateSubcmdadd_Click()
GoToadderror
IfcmdAdd.Caption="保存"Then
'下面对输入的有效性进行验证
IfTrim(txtHuxingnum.Text)=""Then
MsgBox"户型编号不能为空!",vbOKOnly+vbExclamation,""
txtHuxingnum.SetFocus
ExitSub
EndIf
IfTrim(txtFangxing.Text)=""Then
MsgBox"请选择房型!",vbOKOnly+vbExclamation,""
Combo1.SetFocus
ExitSub
EndIf
IfTrim(txtJianzhumianji.Text)=""Then
MsgBox"建筑面积不能为空!",vbOKOnly+vbExclamation,""
txtJianzhumianji.SetFocus
ExitSub
EndIf
IfTrim(txtTaomianji.Text)=""Then
MsgBox"套内面积不能为空!",vbOKOnly+vbExclamation,""
txtTaomianji.SetFocus
ExitSub
EndIf
IfNotIsNumeric(txtJianzhumianji.Text)Then'面积必须是数值
MsgBox"建筑面积请输入数字!",vbOKOnly+vbExclamation,""
txtJianzhumianji.SetFocus
ExitSub
EndIf
IfNotIsNumeric(txtTaomianji.Text)Then
MsgBox"套内面积请输入数字!",vbOKOnly+vbExclamation,""
txtTaomianji.SetFocus
ExitSub
EndIf
如果当前按钮的状态为"保存"状态,则需要将新添加的数据写进数据库。
首先应当判断各项内容是否已经正确输入,如果没有正确输入则给出提示,并退
上一篇:
VBACCTI电话语音应答系统(论文和程序)
下一篇:
法律专业开题报告范文