调错部分

  上一篇博客《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版机房收费系统——结账功能实现(调错与优化)的更多相关文章

  1. VB.NET版机房收费系统---异常处理

    异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...

  2. VB.NET版机房收费系统---导出Excel表格

    datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...

  3. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

  4. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  5. VB.NET版机房收费系统---外观层如何写

    外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...

  6. VB.NET版机房收费系统---外观层怎样写

    外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...

  7. VB.NET版机房收费系统---组合查询

    查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...

  8. VB.NET版机房收费系统—数据库设计

    之前第一遍机房收费的时候,用的数据库是别人的.认知也仅仅能建立在别人的基础上,等自考中<数据库系统原理>这本书学完了之后,再去看曾经的数据库,发现数据库真的还须要进一步的优化.以下是我设计 ...

  9. VB.NET版机房收费系统—DataGridView应用

    事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句, ...

随机推荐

  1. Centos 6.5升级openssh到7.5p1版本

    centos6自带的ssh版本较低,存在高危漏洞,目前部分服务器需要升级到最新版本(目前是7.5p1). 注:升级ssh存在一定的危险性,一旦不成功可能无法通过远程连接到系统,因此在升级之前最好有远程 ...

  2. OSPF 提升 三 type of Areas

    ospf  ccnp 三 上图中 rip域中的不连续的100条路由   在a1中导致LSDB太大      在保证网段的可达性的前提下   尽可能减少区域内路由器的lsdb       可以将a1设置 ...

  3. 九度oj 题目1369:字符串的排列

    题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...

  4. 【Luogu】P1417烹调方案(排序01背包)

    题目链接 对食材进行排序,重载运算符代码如下: struct food{ long long a,b,c; bool operator <(const food &a)const{ re ...

  5. 刷题总结——烽火传递(单调队列+dp)

    题目: 题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火 ...

  6. LightOJ1125 Divisible Group Sums

    Divisible Group Sums Given a list of N numbers you will be allowed to choose any M of them. So you c ...

  7. N皇后-位运算优化

    N皇后问题 时间限制: 5 Sec  内存限制: 128 MB 题目描述 魔法世界历史上曾经出现过一个伟大的罗马共和时期,出于权力平衡的目的,当时的政治理论家波利比奥斯指出:“事涉每个人的权利,绝不应 ...

  8. 程序自动分析(codevs 4600)

    题目描述 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi ...

  9. Resin Thread Dump

    [2015/08/25 20:50:13.254] {ThreadLauncher2[ThreadPool[system]]-1} Thread Dump generated Tue Aug 25 2 ...

  10. JS 操作XML

    loadXML    = function(xmlFile) {     var xmlDoc;     if(window.ActiveXObject)     {         xmlDoc   ...