机房收费系统颗粒大归仓之----调错冰山一角

 内容提纲:

(1)输入数据与数据库数据类型不符       

(2)结账报表提示没有分配到需要的内存

(3) Microsoft excel 15.0 Object Library的引用         

(4)在此环境下不允许操作     


             一、输入数据与数据库数据类型不符

如图:

啊啊

   问题描述:登录窗口输入英文字母提示对象关闭时,不允许操作。

分析:提示对象关闭,肯定是和数据库有关的问题。

过程:经查,数据库userID为int型,而我输入的字母F是字符型,数据类型不符。

解决方案:将数据库userID类型改为char即可。

拓展:(1)再来一个数据类型的例子,假如我在下图示用户输入11个1就会系统奔溃了,因为数据库设置学号为int型,大家都知道int型数据正数最大取到32767,而11111111111早就超出int型数据范围,所以崩了,建议大家每个可输入文本框都要设置Maxlength属性,并且每个文本框都要进行防治SQL注入,如卡号只允许输入数字,登录名只允许输入英文字符和数字,查询条件只能输入数字、英文字符和汉字,当然大家千万记住要允许输入退格键,用户输错了是必须要允许删除的。

啊啊

(2)提示对象关闭时,不允许操作,背景:更改了一些小代码,结果突然无法登陆,重新配置文件dsn,附加数据库,解决了。

原理:DSN(Data Source Name,数据源)是一个ODBC术语,表示用于将应用程序和某个数据库相连接的信息集合,通俗一些讲,就是系统和DSN连接,DSN和数据库连接,这就是文件dsn方式下系统和数据库连接的原理。如果任一方面连接突然断了,都会导致系统无法应用数据库,出现错误提示。

(3)“对象关闭时”这种错误还有很多情况,不胜枚举,在我的CSDN博客学生系统总结里也做了概述,总之大家谨记,出现这种错误一定是和数据库有关的。

附:防止SQL注入方法代码:

Private Sub txtCha1_KeyPress(KeyAscii As Integer)


    '防止SQL注入
    Select Case KeyAscii
    Case 48 To 57 '只能输入数字
    Case 65 To 90 '只能输入大写字母
    Case 97 To 122 '只能输入小写字母
    Case 8 '只能输入退格
    Case -20319 To -3652 '只能输入中文
    Case Else
    KeyAscii = 0
    End Select


End Sub   

SQL注入一定要和限制MaxLength属性结合使用,其中keyAscii=0在这里就是“取消输入”的作用。


           二、结账报表提示没有分配到需要的内存

二话不说,首先上图:

啊啊

哇咔咔,居然都和分配内存扯上关系了,以前还真没见过这么明目张胆的把分配内存扯上台面来的情况,用栈内存、堆内存逻辑完全解释不了,后来果断是Grid++Report报表的问题。

原因:低版本控件打开了高版本控件做的模版导致无法使用,我的Grid++Report是4.5版本的,而我用的报表模板是5.0版本的,而低版本无法应用高版本模板出错。

解决方法:复制4.5版本模板,根据自己情况做改进。

附:查看Grid++Report版本号方法:以文本(记事本)方式打开grf 文件,有木有和我前一篇博客解决窗体冲突的方法非常类似!?看来记事本不光能做批处理,别的方式依然强大。

收获:以前想当然认为不可能的事,是因为我们了解不深,时刻保持谦虚的态度。



三、引用Microsoft excel 时可用的引用中没有Microsoft excel 15.0 Object Library


果断上图:

啊啊

   问题描述:在图示地方没有Microsoft Excel 15.0 Object Library

解决方案:在你的磁盘安装目录中找到Excel.EXE文件,因为参与过提高班系统的创作,我轻松的定位到了C:\Program Files\Microsoft Office\Office15,然后在引用中点击浏览,在如下图的“查找范围”定位到Excel.EXE,然后单击确定,OK了。

啊啊


   注意:文件类型一定要选择.exe进行筛选,很简单,我们需要引用的目的文件是.exe可执行文件。

总结:这个问题让我卡了将近两个星期,网上的解决方案很多都是非专业人士提出的,让我走了很多弯路,知道解决方案的时候发现所有的问题都是相通的,做百例小程序时曾经用shell引用过各种程序,是.exe文件,所以VB中工程的引用当然也是引用.exe可执行文件,这个当初为什么没想出来!这是一个很值得思考的问题,技术不是问题,最重要的是如何去学习,去总结归纳,如何构建自己的知识网。

附:Microsoft Excel 15.0 Object Library中的15.0依office的不同版本不同,office 2013的是15.0,其他低版本office会显示14.0、12.0等。

' 学习方法一定要谨记!

最后来一个小菜:

在此环境下不允许操作

是在SQL中插入新纪录时候提醒的,因为时间过去太久远,图已经找不到了,是因为是因为mrc.addnew插入新纪录后忘了写mrc.Updata。


本想一次将调错部分写完,发现要说的太多,后续更新更精彩!


欢迎来我的CSDN做客!


评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值