时间一晃,过的真快,不知不觉将近两个月的时间全部花费到机房项目里面;当然现在的心情还是比较轻松的,毕竟项目已经结了;写篇博客记录自己在这个项目中的成长和学习,仅供大家学习参考。
项目分析:
为什么?我的机房项目没有按时完成,感觉自己也很努力了,每天花费的时间也不少;但是项目进度走的比较慢、实现窗体的效率低、收获新知识比价少。那么?为什会出现这种情况呢!难道真的想我叙述的这样?自己就辣么没有脑子,当真就比别人差。我错了...,首先脑子这个好东西,我当然不缺;其次我更不比别人差,因为他能做的我也能做。唯独差在自己的学习过程有问题。
项目说明:
解析一下自己上面分析的过程。基础不牢固---->思路和想法单一--->实现功能慢--->实现窗体慢--->进度走的慢;所以究其主要原因是自己原来趟过的水还比较浅,自我满足,生怕淹着自己;哪知后来做项目会这么困难,明显简单实现的地方,自己却需要硬憋很久,才可以实现;---一定要意识到做不到的后果。
项目反思:
既然前面该趟的路已经在机房项目中补回来大部分了,也该适可而止了,不过需要通过和徒弟交流来巩固和补充自己原来的知识;这一点是肯定要做的,双方互相学习。
针对下一个阶段的学习,新的开始,新的征程,打好基础+追逐自己曾经丢失的那些时光,绝对不会比曾经的状态差,甚至一样。
项目总结:
(1)针对添加数据库表中数据的三种方式。“!”表示前者为后者的容器,而“.”表示获得控件特性的直接访问权;两者还有一个相同的用法---控件.控件(前者为后者的容器)
Frmmodifyresult.cmdprerecord.enabled=false
Frmmodifyresult!cmdprerecord.enabled=false
If not mrc.eof then'控件添加表中的字段
For i to mrc.recordcount
Listbox.additem mrc.fields(0)
listbox.additem mrc.fields(0).value
listbox.additem mrc!字段名
Next i
End if
(2)判断控件值的各种函数
- isnull函数,返回值为Boolean类型---消除VB中赋值数据库表空值的情况;
- Instr返回字符串中在原字符串中的位置([检索位置],接受检索字符串,要检索字符串,[0(二进制),1(文本),2(数据库access)])
(3)清空控件(类)组
For each ctrl in me.controls
If typeof ctrl is textbox then
Ctrl.text=""
End if
Next
(4)MDI主窗体和子窗体的“QueryUnload”和“Unload”执行顺序;
(5)mdi窗体和子窗体和picture三者之间的关系(Hwnd句柄);
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long'引用Windows的函数
SetParent frmInquiryLineRecord.hWnd, Picture1.hWnd'按等级显示句柄
frmInquiryLineRecord.Show
当然上面代码中表示的是“在主窗体的菜单编辑器里面调出窗体”,除此外还会涉及到在子窗体中调出其它子窗体,适当调整代码即可-无非就是让当前子窗体最小化,然后显示调用出的新的子窗体;
frmAddorDeleteUser.WindowState = 1
SetParent frmAdduser.hWnd, frmMain.Picture1.hWnd
frmAdduser.Show
(6)模块定义变量要谨慎,普通窗体中定义变量,过程用Dim过程级,窗体全局使用Private;
(7)不仅仅学会使用select,除此外还有delete(日和周账单);
txtSql = "delete from checkweek_info"'删除周账单
Set mrc = ExecuteSQL(txtSql, msgText)
txtSql1 = "insert into checkweek_info select * from checkday_info"'保证周账单中信息和日账单中一致
Set mrc1 = ExecuteSQL(txtSql1, msgText)
(8)MsHflexgrid中应当使用isnumeric()函数防止删除该控件的标题行;(前提一定不要固定第一行数据)
If not isnumeric(trim(myhflexgrid.textmatrix.row,0))) then
msgbox"请选择表中的数据",vbokonly,"提示"
exit sub
End if
项目打包和异地发布(局域网)
- 打包
(1)使用VB自带打包工具进行打包
(2)外来打包工具进行打包
注意:一定要先把自己的源程序编译为EXE文件后再进行打包哦,防止原程序泄露,适当也可以加密,还要导入.dll文件;因为报表中需要使用插件。
- 异地发布
目前采取在局域网中操作,共享服务器数据库(各人),原因有的电脑不必安装数据库即可使用项目。
(1)修改模块中代码:ConnectString="driver{sqlserver};server=电脑名(局域网IP地 址);uid=sa;pwd=1;Database=student"
(2)除此外需要修改数据库管理工具里面允许远程登录的地方---一般默认允许;
(3)最重要的修改电脑的防火墙;
当然还有机房中涉及到自己未完成---师傅提供的系统漏洞,原来我在身边遇到过,感觉原理是一样的。
(1)充值金额是否为负?
(2)退卡后重新注册此卡号是否冲突?
(3)本地时间和数据库时间?---还记得修改器可以修改百度网盘的试用时间吗?
当我们修改本地时间后,是否存在不花钱还会充钱的概念,因为我们在VB中使用的是本地时间;相反我们应该使用SQL语句调用数据库的时间;
其中还有自己考虑不全面,小伙伴需要检查自己的窗体是否也存在以下这样的问题。
(1)表中添加和删除数据后顺序是否有问题?
(2)窗体最大化后是否覆盖已经最小化的窗体?
大体上就是上面遇到的这些情况,当然还有其它的这里就不一一细说了,遇到问题解决问题,我们了解和知道的才足够多,剩下的需要去做就好了;当然这里我还想要说一点情况。我们在做项目的时候,不要每天都给自己定一个大目标---“简单描述我今天用多长时间敲机房”而是“我今天需要实现那些窗体或者功能”;多给自己些反馈,不要让自己看不到希望。