加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 22:46:33 所属栏目:大数据 来源:网络整理
导读:前几天领导让写个VBA程序,处理一下毕业论文文档错误数统计。主要是以前论文的错误统计次数是人工修订后,数出来的,现在要用程序自动读出来,导出成excel文件,顺便检查学号等是否已经正确填写。要求有程序界面,想来想去,还是操刀一下N年没用了的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语句时遇到的问题,将一个表中的学号数据导入另一张表时,发现游标每次写入的学号值竟然完全相同,后来通过好长时间的调试,才发现是因为目标表的学号字段不够长,所以导致源表读数据时取得都是学号前几位,完全一样。。。。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读