hen'备注信息
rs_kehu.Fields(11)=Null
Else
rs_kehu.Fields(11)=txtbeizhu.Text
EndIf
rs_kehu.Update
MsgBox"添加成功!",vbOKOnly+vbExclamation
WithgrdKehu
.Rows=rs_kehu.RecordCount+1
.Row=grdKehu.Rows-1
.Col=0
.Text=txtID.Text
.Col=1
.Text=txtname.Text
.Col=2
.Text=Combo1.Text
.Col=3
.Text=txttel.Text
.Col=4
.Text=txtcell.Text
.Col=5
.Text=txtduty.Text
.Col=6
.Text=DTPicker1.Value
.Col=7
.Text=txtemail.Text
.Col=8
.Text=txtcard.Text
.Col=9
.Text=txtyoubian.Text
.Col=10
.Text=txtadd.Text
.Col=11
.Text=txtbeizhu.Text
EndWith
Else
cmdadd.Caption="保存"
txtID.Text=""
txtname.Text=""
txttel.Text=""
txtcell.Text=""
txtyoubian.Text=""
txtemail.Text=""
txtcard.Text=""
txtadd.Text=""
txtduty.Text=""
txtbeizhu.Text=""
cmdmodify.Enabled=False
cmddel.Enabled=False
EndIf
ExitSub
adderror:
MsgBoxErr.Description
EndSub
(2)"修改"按钮的"Click"事件代码
PrivateSubcmdmodify_Click()
GoTomodifyerror
txtID.Enabled=False
IfTrim(txtname.Text)=""Then
MsgBox"姓名不能为空!",vbOKOnly+vbExclamation
txtname.SetFocus
ExitSub
EndIf
rs_kehu.MoveFirst
DimiAsInteger
Fori=0Tors_kehu.RecordCount-1
Ifrs_kehu.Fields(0)=txtID.TextThen
rs_kehu.Fields(1)=txtname.Text
rs_kehu.Fields(2)=Combo1.Text
IfTrim(txttel.Text)=""Then
rs_kehu.Fields(3)=Null
Else
rs_kehu.Fields(3)=txttel.Text
EndIf
IfTrim(txtcell.Text)=""Then
rs_kehu.Fields(4)=Null
Else
rs_kehu.Fields(4)=txtcell.Text
EndIf
IfTrim(txtduty.Text)=""Then
rs_kehu.Fields(5)=Null
Else
rs_kehu.Fields(5)=txtduty.Text
EndIf
rs_kehu.Fields(6)=DTPicker1.Value
IfTrim(txtemail.Text)=""Then
rs_kehu.Fields(7)=Null
Else
rs_kehu.Fields(7)=txtemail.Text
EndIf
IfTrim(txtcard.Text)=""Then
rs_kehu.Fields(8)=Null
Else
rs_kehu.Fields(8)=txtcard.Text
EndIf
IfTrim(txtyoubian.Text)=""Then
rs_kehu.Fields(9)=Null
Else
rs_kehu.Fields(9)=txtyoubian.Text
EndIf
IfTrim(txtadd.Text)=""Then
rs_kehu.Fields(10)=Null
Else
rs_kehu.Fields(10)=txtadd.Text
EndIf
IfTrim(txtbeizhu.Text)=""Then
rs_kehu.Fields(11)=Null
Else
rs_kehu.Fields(11)=txtbeizhu.Text
EndIf
rs_kehu.Update
MsgBox"修改成功!",vbOKOnly+vbExclamation
WithgrdKehu
.Row=getrow
.Col=1
.Text=txtname.Text
.Col=2
.Text=Combo1.Text
.Col=3
.Text=txttel.Text
.Col=4
.Text=txtcell.Text
.Col=5
.Text=txtduty.Text
.Col=6
.Text=DTPicker1.Value
.Col=7
.Text=txtemail.Text
.Col=8
.Text=txtcard.Text
.Col=9
.Text=txtyoubian.Text
.Col=10
.Text=txtadd.Text
.Col=11
.Text=txtbeizhu.Text
EndWith
ExitSub
EndIf
rs_kehu.MoveNext
Nexti
modifyerror:
MsgBoxErr.Description
EndSub
(3)"删除"按钮的"Click"事件代码
PrivateSubcmddel_Click()
DimanswerAsString
Dimdelete_rowAsString
GoTodelerror
answer=MsgBox("确定要删除吗?",vbYesNo+vbQuestion)
Ifanswer=vbYesThen
rs_kehu.MoveFirst
DimiAsInteger
Fori=0Tors_kehu.RecordCount-1
Ifrs_kehu.Fields(0)=txtID.TextThen
rs_kehu.Delete
rs_kehu.Update
MsgBox"删除成功!",vbOKOnly+vbExclamation
WithgrdKehu
.RemoveItemgetrow
EndWith
ExitSub
EndIf
rs_kehu.MoveNext
Nexti
Else
ExitSub
EndIf
ExitSub
delerror:
MsgBoxErr.Description
EndSub
4.4.2建立客户资料查询窗体(frmKehuFind)
本窗体主要用来对客户资料进行查询。在查询条件中选择某一种查询方式,然后输入查询的关键字,即可按照要求找出符合条件的数据,并在下面的列表中显示结果。
1、界面设计
在工程中添加一个窗体,将其命名为frmKehuFind。在这个窗体中添加1个Frame控件、4个Text控件、3个CommandButton控件、4个Option控件、1个MSHFlexGrid控件和1个PrintGrid控件。设置完成的frmKehuFind窗体如图10所示。
图10"客户资料查询"窗体设计图
2、工程流程
窗体加载时在列表框中显示所有的数据。在查询条件部分选择某一种查询方式,然后输入查询的关键字,再单击"查询"按钮,开始执行查询,将查询的结果在表格中显示出来。
3、添加代码
本窗体中的窗体加载、菜单绑定、显示表格、查询和打印等操作都与前面介绍的楼盘查询窗体相似。
(1)"查询"按钮的"Click"事件代码
PrivateSubCommand1_Click()
DimsqlAsString
GoToloaderror
grdKehu.Clear
IfOptionID.Value=TrueThen
sql="select*from客户资料表whereHon_ID='"&txtID.Text&"'"
rs_kehu.CursorLocation=adUseClient
rs_kehu.Opensql,conn,adOpenKeyset,adLockPessimistic
Ifrs_kehu.RecordCount<1ThenCommand2.Enabled=FalseElseCommand2.Enabled=True
setgrid
setgridhead
displaygrid
rs_kehu.Close
ExitSub
EndIf
'按照姓名查询
IfOptionname.Value=TrueThen
sql="select*from客户资料表whereHon_name='"&txtname.Text&"'"
rs_kehu.CursorLocation=adUseClient
rs_kehu.Opensql,conn,adOpenKeyset,adLockPessimistic
Ifrs_kehu.RecordCount<1ThenCommand2.Enabled=FalseElseCommand2.Enabled=True
setgrid
setgridhead
displaygrid
rs_kehu.Close
ExitSub
EndIf
'按照手机号查询
IfOptioncell.Value=TrueThen
sql="select*from客户资料表whereHon_handset='"&txtcell.Text&"'"
rs_kehu.CursorLocation=adUseClient
rs_kehu.Opensql,conn,adOpenKeyset,adLockPessimistic
Ifrs_kehu.RecordCount<1Then
Command2.Enabled=False
Else
Command2.Enabled=True
EndIf
setgrid
setgridhead
displaygrid
rs_kehu.Close
ExitSub
EndIf
'按照车牌号查询
IfOptioncar.Value=TrueThen
sql="select*from客户资料表whereHon_carcode='"&txtcard.Text&"'"
rs_kehu.CursorLocation=adUseClient
rs_kehu.Opensql,conn,adOpenKeyset,adLockPessimistic
Ifrs_kehu.RecordCount<1ThenCommand2.Enabled=FalseElseCommand2.Enabled=True
setgrid
setgridhead
displaygrid
rs_kehu.Close
ExitSub
EndIf
ExitSub
loaderror:
MsgBoxErr.Description
EndSub
(2)"打印"按钮的"Click"事件代码
PrivateSubCommand2_Click()
Printgrid1.Unit=Centimeter
Printgrid1.PrintObject=grdKehu
Printgrid1.DoPreView
EndSub
4.5实现收费管理功能
4.5.1建立收费登记窗体(frmShoufeiLogin)
本窗体主要用来对收费资料进行登记,包括添加、打印等操作。此窗体主要部分是一个票据样式的界面。在正确的位置输入正确的信息后,单击"保存"按钮,即可完成新的收费资料的增加。单击"打印"按钮,即可将此票据进行打印。
1、界面设计
在工程中添加一个窗体,将其命名为frmShoufeiLogin。在此窗体中添加1个PictureBox控件,然后在该控件上方添加5个Label控件、10个Text控件和3个CommandButton控件。设置完毕后的窗体如图11所示。
图11"收费登记"窗体设计图
2、工作流程
窗体加载时,楼盘编号等部分设置为空,用来接收用户输入的数据。日期自动加载,默认为系统当前日期。编号是由系统递增产生的6位数字序号。收费金额部分设置为"0.00"等,所有的收费项目添加完毕后,系统自动计算收费总金额,并将金额转换为人民币大写的形式。然后可以将此票据进行打印。
3、添加代码
OptionExplicit
Dimrs_shoufeiAsNewADODB.Recordset
(1)"保存"按钮的"Click"事件代码
PrivateSubcmdsave_Click()
DimiAsInteger
IfTrim(txtmoney(0).Text)=""Then
MsgBox"楼盘编号不能为空!",vbOKOnly+vbExclamation
txtmoney(0).SetFocus
ExitSub
EndIf
DimfeeAsCurrency
fee=0
Fori=1To6
fee=fee+CCur(txtmoney(i).Text)
Nexti
txtmoney(7).Text=CStr(fee)
Label5.Caption=ChineseFormat(fee)
rs_shoufei.AddNew
rs_shoufei.Fields(0)=Label4
rs_shoufei.Fields(1)=txtmoney(0).Text
rs_shoufei.Fields(2)=Date
Fori=1To6
rs_shoufei.Fields(i+2)=txtmoney(i).Text
Nexti
rs_shoufei.Fields(9)=txtskr.Text
rs_shoufei.Fields(10)=txtjkr.Text
rs_shoufei.Update
MsgBox"保存成功!",vbOKOnly+vbExclamation
ExitSub
EndSub
(2)"打印"按钮的"Click"事件代码
PrivateSubcmdprint_Click()
DimX%
X%=BitBlt(Picture1.hDC,0,0,Picture1.Width,Picture1.Height,_
Picture1.hDC,0,0,SRCCOPY)
Picture1.Picture=Picture1.Image
Printer.PaintPicturePicture1.Picture,0,0
EndSub
(3)"退出"按钮的"Click"事件代码
PrivateSubcmdexit_Click()
rs_shoufei.Close
UnloadMe
EndSub
(4)窗体加载时的代码
PrivateSubForm_Load()
DimsqlAsString
DimiAsInteger
GoToloaderror
sql="select*from收费信息表"
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
Fori=1To7
txtmoney(i).Text="0.00"
Nexti
i=rs_shoufei.RecordCount
Label1.Caption=Year(Date)'Date取得当前系统日期
Label2.Caption=Month(Date)'Month函数取得日期的月数部分
Label3.Caption=Day(Date)
Label4.Caption=Format(i+1,"000000")'系统中现有记录条数加1
ExitSub
loaderror:
MsgBoxErr.Description
EndSub
FunctionChineseFormat(nAsVariant)
DimsAsString,sFormatAsString
DimiAsInteger,cAsString
ConstsString="分角元拾佰仟万拾佰仟亿拾佰仟万"
ConstsNumber="零壹贰叁肆伍陆柒捌玖"
s=Format(Int(n*100))
sFormat=""
Fori=Len(s)To1Step-1
c=Mid(s,i,1)
sFormat=Mid(sNumber,Val(c)_
+1,1)+Mid(sString,Len(s)-i+1,1)_
+sFormat
Next
ChineseFormat=sFormat
EndFunction
4.5.2建立收费查询窗体(frmShoufeiFind)
这个窗体主要用来对收费资料进行查询。在查询条件中选择某一种查询方式,然后输入查询的关键字,即可按照要求找出符合条件的数据,并在下面的列表中显示结果。
1、界面设计
在工程中添加一个窗体,将其命名为frmShoufeiFind。在这个窗体中添加1个Frame控件,然后在Frame控件上添加3个Text控件、1个Label控件、3个CommandButton控件、4个Option控件、1个MSHFlexGrid控件和2个DTPicker控件。
添加好控件的窗体如图12所示。
图12"收费查询"窗体设计效果图
2、工作流程
窗体加载时在列表框中显示所有的数据。在查询条件部分选择某一种查询方式,然后输入查询的关键字,再单击"查询"按钮,开始执行查询,将查询的结果在表格中显示出来。当表格中有数据时,可以单击"打印"按钮打印表格。
3、添加代码
(1)"查找"按钮的"Click"事件代码
PrivateSubcmdfind_Click()
DimsqlAsString
GoToloaderror
grdShoufeiFind.Clear
Ifoptionid.Value=TrueThen
sql="select*from收费信息表wherefee_ID="&CInt(txtshoufeinum.Text)
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
setgrid
setgridhead
displaygrid
rs_shoufei.Close
ExitSub
EndIf
Ifoptionloupan.Value=TrueThen
sql="select*from收费信息表wherefee_houseID='"&txtloupannum.Text&"'"
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
setgrid
setgridhead
displaygrid
rs_shoufei.Close
ExitSub
EndIf
IfOptionjkr.Value=TrueThen
sql="select*from收费信息表wherefee_jkr='"&txtjkr.Text&"'"
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
setgrid
setgridhead
displaygrid
rs_shoufei.Close
ExitSub
EndIf
Ifoptionjkt.Value=TrueThen
sql="select*from收费信息表whereFee_datebetween#"&_
DTPicker1.Value&"#and#"&DTPicker2.Value&"#"
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
setgrid
setgridhead
displaygrid
rs_shoufei.Close
ExitSub
EndIf
ExitSub
loaderror:
MsgBoxErr.Description
EndSub
(2)"打印"按钮的"Click"事件代码
PrivateSubcmdprint_Click()
Printgrid1.Unit=Centimeter
Printgrid1.PrintObject=grdShoufeiFind
Printgrid1.DoPreView
EndSub
(3)"退出"按钮的"Click"事件代码
PrivateSubcmdexit_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
DimsqlAsString
GoToloaderror
sql="select*from收费信息表"
rs_shoufei.CursorLocation=adUseClient
rs_shoufei.Opensql,conn,adOpenKeyset,adLockPessimistic
setgrid
setgridhead
displaygrid
rs_shoufei.Close
ExitSub
loaderror:
MsgBoxErr.Description
EndSub
PublicSubdisplaygrid()
DimiAsInteger
DimjAsInteger
GoTodisplayerror
grdShoufeiFind.Row=0
IfNotrs_shoufei.EOFThen
rs_shoufei.MoveFirst
DoWhileNotrs_shoufei.EOF
grdShoufeiFind.Row=grdShoufeiFind.Row+1
Forj=0To10
grdShoufeiFind.Col=j
IfNotIsNull(rs_shoufei.Fields(j))ThengrdShoufeiFind.Text=_
rs_shoufei.Fields(j)ElsegrdShoufeiFind.Text=""
Nextj
rs_shoufei.MoveNext
Loop
EndIf
displayerror:
IfErr.Number<>0Then
MsgBoxErr.Description
EndIf
EndSub
PublicSubsetgrid()
DimiAsInteger
GoToseterror
WithgrdShoufeiFind
.ScrollBars=flexScrollBarBoth
.FixedCols=1
.Rows=rs_shoufei.RecordCount+1
.Cols=12
.SelectionMode=flexSelectionByRow
Fori=0To.Rows-1
.RowHeight(i)=315
Next
Fori=0To.Cols-1
.ColWidth(i)=1500
Nexti
EndWith
ExitSub
seterror:
MsgBoxErr.Description
EndSub
PublicSubsetgridhead()
GoTosetheaderror
grdShoufeiFind.Row=0
grdShoufeiFind.Col=0
grdShoufeiFind.Text="收费编号"
grdShoufeiFind.Col=1
grdShoufeiFind.Text="楼盘编号"
grdShoufeiFind.Col=2
grdShoufeiFind.Text="交费时间"
grdShoufeiFind.Col=3
grdShoufeiFind.Text="有线电视"
grdShoufeiFind.Col=4
grdShoufeiFind.Text="电话调试"
grdShoufeiFind.Col=5
grdShoufeiFind.Text="煤气初装"
grdShoufeiFind.Col=6
grdShoufeiFind.Text="公用设施"
grdShoufeiFind.Col=7
grdShoufeiFind.Text="其他费用"
grdShoufeiFind.Col=8
grdShoufeiFind.Text="押金"
grdShoufeiFind.Col=9
grdShoufeiFind.Text="合计"
grdShoufeiFind.Col=10
grdShoufeiFind.Text="收款人"
grdShoufeiFind.Col=11
grdShoufeiFind.Text="交款人"
ExitSub
setheaderror:
MsgBoxErr.Description
EndSub
4.6实现系统维护功能
4.6.1数据备份
数据备份部分没有单独的窗体,在选择数据备份命令后,弹出如图13所示的"另存为"对话框,从中选择备份文件存放的路径即可。
图13"另存为"对话框
(1)在主窗体中添加一个CommandDialog控件,用来打开"另存为"窗体。
PrivateSubdatabasebak_click()
Dimfsofile
Ifconn.state<>0thenconn.close
Setconn=Nothing
Setfsofile=createobject("scripting.filesystemobject")
CommandDialog1.Filter="mdb文件(*.mdb)|*.mdb"
CommandDialog1.CancelError=True
Gotomyerr
CommandDialog1.showsave.
4.6.2实现退出系统功能
当用户试图关闭主窗体的时候,需要询问用户是否确定要退出系统,以防止用户的误操作。如果用户确实要退出系统,应先关闭系统
上一篇:
VBACCTI电话语音应答系统(论文和程序)
下一篇:
2018年汽车自驾运动营地攻防箭大赛总决赛圆满落幕