VB.net版机房收费系统——结账功能实现(调错与优化)
调错部分
上一篇博客《VB.net版机房收费系统——结账功能实现(代码部分》说的是结账功能的实现,亮出了代码。是在为这篇博客做铺垫。尽管结账功能代码是借鉴的巨人的博客。可是自己比着葫芦画瓢还是有欠妥的地方,毕竟每个人作画的能力是不一样的。就和唱歌跑调似的。
悟空用如意金箍棒三打白骨精,我用仅有的耐心和智商调Bug,论白骨精和Bug孰是孰非,对此仅仅想说,祝愿全部的程序猿都能嫁个姓“梅”的。孩子取名“梅Bug”。
期初是列名无效。然后尝试将存储过程中的一句代码:
exec('select CardNo ,StudentNo,RegisterDate ,RegisterTime from T_Card_Info where Head='+@UserID+' and IsCheck='+@IsCheck+'')
后边的关于Ischeck 的内容去掉,发现查询记录不是0,能够返回一张表了,于是便猜想是不是存储过程中不能涉及到汉字的原因,之后,我将实体中承载的所有的“已结账”和“未结账”所有换成了“Y”或“N"。
尽管这样做并没有帮到我什么,只是总算是换了个错误:无法找到表0
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
考虑到或许是数据库改了些内容后没有更新保存成功的原因,将SQL关了后又一次开,报的错误是:列名“N”无效,期初以为是D层赋值代码的问题:New SqlParameter("@IsCheck", "N"),尝试将其改成实体赋值还是相同的问题。
后得知是存储过程的问题,期初我的语句是这样写的:
exec('select CardNo ,StudentNo,RegisterDate ,RegisterTime from T_Card_Info where Head='+@UserID+' and IsCheck='+@IsCheck+'')
改成这样就能够了:
declare @sql char(500)
--查询表T_Card_Info中的售卡记录
if @CheckDetail ='SellCard'
begin
select @sql ='select CardNo ,StudentNo,RegisterDate ,RegisterTime from T_Card_Info where Head='+ char(39)+@UserID+ char(39)+char(32)+'and IsCheck='+char(39)+@IsCheck+char(39)
exec(@sql)
end
原因:
char(39)代表单引號
('select * from table where id='+char(39)+edit1+char(39)) 等效于('select * from table where id=''' +edit1+ '''';
'select * from table where id=''' +edit1.text+ ''';在delphi中语法检查通只是的,这样写是为了程序的可读性。由于'在DELPHI的物质性。换用char(39)或#39来取代。所以写'select * from table where id='+char(39)+edit1+char(39)
解决完以上问题后报错:索引超出范围。
必须为非负值并小于集合大小
通过上图能够知道是代码书写的问题,我要显示的是充值信息,代码上边部分还写的是DgvRecharge,结果下边显示数据的时候用却DgvSellCard,所以代码敲错了。才是上述错误的根源。
之后执行的时候,出现了例如以下错误:
“System.InvalidCastException”类型的未经处理的异常在 Microsoft.VisualBasic.dll 中发生
其它信息: 从字符串“088 33 11 ”到类型“Double”的转换无效。
依照例如以下红色框中的代码写即可了,进行数据类型的转换即可~
优化部分
说到优化,无非是一件事:不能反复结账。
我的代码书写方式导致选择了被结账的用户后不能用弹出框提示,否则若是售卡、充值和退卡没有记录,会连续弹出3个提示框,故用label取代了。
用btnCheck的enable属性来控制,所以。推断cmbUserID选择是否为空都不用了,由于若是不选,btnCheck不能用。若是售卡、充值、退卡工作记录查询为空,btnCheck也不能用。若是有记录。结账操作后,button会不能用,图中所看到的的数据会恢复默认值0
在优化的时候碰到的问题就是,前一个用户的记录会一直显示,哪怕选择了新的被结账用户,代码的写作思路导致不能用Exit sub 释放资源,故想到的解决的方法是:在选择下一个被结账用户之初,将控件进行清空,最后完美解决:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
结账部分到此结束~
VB.net版机房收费系统——结账功能实现(调错与优化)的更多相关文章
- VB.NET版机房收费系统---异常处理
异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...
- VB.NET版机房收费系统---导出Excel表格
datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...
- VB.NET版机房收费系统---报表
报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- VB.NET版机房收费系统---外观层如何写
外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...
- VB.NET版机房收费系统---外观层怎样写
外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...
- VB.NET版机房收费系统---组合查询
查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...
- VB.NET版机房收费系统—数据库设计
之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...
- VB.NET版机房收费系统—DataGridView应用
事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句, ...
随机推荐
- mac securecrt自动保存密码
一.问题描述 mac有自带的终端,可以运行ssl和sftp,但是目录操作,文件操作和文件上传是分开的,很不方便,并且文件上传命令需要文件的全路路径. 使用securecrt能方便的解决上述的问题,并且 ...
- Leetcode 334.递增的三元子序列
递增的三元子序列 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n- ...
- hdu 1527 威佐夫博弈
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- BZOJ3124 [Sdoi2013]直径 【树的直径】
题目 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅有N-1 条边. 路径:一棵树上,任意两个节 ...
- uva 12304点与直线与圆之间的关系
Problem E 2D Geometry 110 in 1! This is a collection of 110 (in binary) 2D geometry problems. Circum ...
- 升级完Android Studio3.2后,打包release出现的错误
升级完Android Studio2.3后,打包release出现的错误 Error:Execution failed for task ':qq:lintVitalRelease'.> Lin ...
- 使用nginx时,让web取得原始请求地址
问题描述 当使用nginx配置proxy_pass参数以后,后端web取得的Request.Uri是proxy_pass中配置的地址,而不是client访问的原始地址 举例说明: 假设nginx配置文 ...
- HDU - 5584 LCM Walk (数论 GCD)
A frog has just learned some number theory, and can't wait to show his ability to his girlfriend. No ...
- T3137 栈练习1 codevs
codevs.cn/problem/3137 题目描述 Description 给定一个栈(初始为空,元素类型为整数,且小于等于100),只有两个操作:入栈和出栈.先给出这些操作,请输出最终栈的栈顶元 ...
- noip 2013 luogu P1969 积木大赛
题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...