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

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

概述                前几天领导让写个VBA程序,处理一下毕业论文文档错误数统计。主要是以前论文的错误统计次数是人工修订后,数出来的,现在要用程序自动读出来,导出成excel文件,顺便检查学号等是否已经正确填写。要求有程序界面,想来想去,还是 *** 刀一下N年没用了的VB好了,原因很简单,1是开发简单,2是小程序,不用像net和java一样还要装个框架才能运行,3是VB支持原生态VBA *** 作代码 前几天领导让写个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语句时遇到的问题,将一个表中的学号数据导入另一张表时,发现游标每次写入的学号值竟然完全相同,后来通过好长时间的调试,才发现是因为目标表的学号字段不够长,所以导致源表读数据时取得都是学号前几位,完全一样。。。。

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

总结

以上是内存溢出为你收集整理的睡不着,谈谈前几天调试VB遇到的空记录写入问题解决及感想全部内容,希望文章能够帮你解决睡不着,谈谈前几天调试VB遇到的空记录写入问题解决及感想所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1290584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存