睡不着,谈谈前几天调试VB遇到的空记录写入问题解决及感想

                前几天领导让写个VBA程序,处理一下毕业论文文档错误数统计。主要是以前论文的错误统计次数是人工修订后,数出来的,现在要用程序自动读出来,导出成excel文件,顺便检查学号等是否已经正确填写。要求有程序界面,想来想去,还是操刀一下N年没用了的VB好了,原因很简单,1是开发简单,2是小程序,不用像net和java一样还要装个框架才能运行,3是VB支持原生态VBA操作代码,调试时最方便。

           在调试开发过程,不断google,找到已经忘掉记忆的过程就不细说了,就说过程中碰到的一个问题及其解决吧。在用VB的ADO写数据库时,碰到如下错误:

            

 

           相关的出错代码如下:

           If Adodc1.Recordset.RecordCount = 0 Then
            Adodc2.Recordset.AddNew
         
   Adodc2.Recordset("fp").Value = strpath & "\" & myfile.Name
            Adodc2.Recordset("cw").Value = "学号不存在"
            Adodc2.Recordset.Update
            GoTo label
          End If

       第一个错误叙述看不出啥问题,第二个错误提示红色那句话有错了,写入了空值,刚开始一直没明白为啥,明明有数据写入的啊,而且前一天调试的时候也没有碰到问题的。。。

      后来通过不断的google,这种错误比较难找到,因为查找关键字不明确。最后终于在一个角落里搜到了一个跟我一样碰到问题的兄弟,他最后自己查出来了,错误简单明了,是因为数据库字段不够长!

       回头一想就明白了,我这里的strpath是一获取的文件路径,是递归程序,程序可能深入无限子文件夹,路径有可能很长。前一天调试时由于子文件不深,所以数据库字段够长,这次太深了,就不够长了,系统于是直接将该字段做为空字段写入数据库。而关键字是不能为空的,自然出错。

       问题是思考起来,我认为是VB和ADO作者的问题,因为对于要求写入长度超出数据库长度,最好能提示直接的错误,或者考虑将超长部分截掉,写入数据库并提示错误,这样通过观察最后数据库中的值,我们也能很容易发现这个不够长的问题。而如VB这般提示不能插入空记录,不熟的同志确实不好办啊。。。

      这让我想起了上次暑假另一个同事调试SQL语句时遇到的问题,将一个表中的学号数据导入另一张表时,发现游标每次写入的学号值竟然完全相同,后来通过好长时间的调试,才发现是因为目标表的学号字段不够长,所以导致源表读数据时取得都是学号前几位,完全一样。。。。

       所以同样的微软出的东西,不同软件在遇到字段超长时的处理手法都不一样,说明开发者内部需要规范一下。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值