经过学习学生和机房,遇到很多问题,学生的总结工作没有做好,要在机房的时候做的更好,现在来总结一下。
<strong><span style="font-size:18px;"><span style="font-size:18px;">
mrc.addnew mrc.fields(0)=mrca.fields(1) '添加新的退卡记录到CancelCard表中
<span style="font-size:18px;"> mrc.fields(1)=text1.text '添加学号列数据 mrc.fields(2)=text2.text '添加退卡金额列数据
</span> </span></strong>
引起这个问题的原因简单的说就是数据库的字段类型不匹配或者字符个数超出了数据库的字段的最大限制个数,数据无法添加到数据库中。经检查不是字段类型不匹配的问题,所以问题是后者。
加个trim函数,去掉多余的空格
<strong><span style="font-size:18px;">
private sub command2_click() '删除用户 if HaveSelected=True then myFlexGrid.RemoveItem myFlexGrid.RowSel '删除选中的行 txtSQL="select * from User_Info where userID = '" & Trim(myFlexGrid.TextMatrix(myFlexGrid.RowSel+1,0)) & "'" '查询语句 set mrc = ExecuteSQL(txtSQL,msgtxt) mrc.Delete '删除对应记录 </span></strong>
一般下标越限问题是指数组的下标有一个范围,比如初始设置的a(i)中的i是从0到2的范围,结果运行过程中却出现了i=3,3>2,这就表明越界了;谈到这个MSHFlexGrid控件初始的时候设定为1行3列,结果填充了3行数据,就会报出上面的错误;还有一个原因是逻辑问题,我是先把MSHFlexGrid控件中的数据删除了,再让数据库去查的记录,而且是很无脑的是删除选中那行的下一行;所以我就先把MSHFlexGrid控件的初始行列数改了再改的逻辑顺序,结果就好了。
还有一种情况是我查不到要查询的那条记录,也就是说现在的表格中只有表头和一条数据,选中除标题外的一行数据后,再删除下一条表格中的记录应该是找不到了,这个情况会是报什么错呢?我觉得应该不是下标越限的错误,这个问题还不知道怎么回事,请大家帮忙看看。
大家看第一张图就知道了我设置金额限制,不能低于最小金额5元,这样的提示是很正常的,但是再看第二张图,就发现问题了,44>5,怎么还是显示提示信息?
那么问题来了——这是为什么呢?
<strong><span style="font-size:18px;">
If text2.text< limitCash Then '比较大小 Msgbox"充值金额不能低于最小金额",vbOKonly+vbInformation,"提示" </span></strong>
比较大小的两个数据是字符型的数据,字符型的数据比较大小,字符串比较是从第一个字符开始比较,并且比较的是ASCII码,你比较一下"A" 和"b"谁大谁小,"A" 小于"b",这样后面的就不比较了.也就是"ABCD" 小于 "bumingbai" .
如果第一个字符相同,就比较第二个,依此类推.
,如图,4-'36',5-'37',37>36,当4和44分别与5比较时,4的ascii值<5的ascii值,而44的第一个ascii值<5的ascii,后面的就不再比较了,因此会出现提示信息。
可以将字符串型数据转化为整型数据,再比较大小,就OK了。