在下再用Combox.additem 和adodc搭配使用时 发现数据库第一条数据丢失
然后运行时也报错
具体代码如下:
Adodc2.Recordset.MoveFirst
Do Until Adodc2.Recordset.EOF = True
Combo1.AddItem Adodc2.Recordset.Fields("id").Value
Adodc2.Recordset.MoveNext
Loop
断点发现 在进行循环的第二次时 错误发生 且数据库中第一条Id字段为空
而用Do Until Adodc2.Recordset.EOF = True
id = Adodc2.Recordset.Fields("id").Value
Combo1.List(i) = Adodc2.Recordset.Fields("id").Value
Adodc2.Recordset.MoveNext
i=i+1
Loop
就成功运行
且 只用固定值 如
While i < 4
Combo1.AddItem "123"
Adodc2.Recordset.MoveNext
i = i + 1
Wend
也会出同样的错误
请问 谁知道为什么 是不兼容么?
发现错误是因为 再additem时 自动清空数据库对应字段
而在下使用的字段是主键 所以报错
并非因为数据问题出错
看来回答者没有明白我的意思
用固定数据 是为了调试问题是在movenext还是additem
我这个也不是数据库数据格式问题
而是 本来好好的数据在执行additem后在数据库就清空了
和判断条件无关 那个顶多算入力check
我现在使用的数据是最简单的 无空 无非法
难道没有了解的高手么?
可以追加分(50起加)
关于lgf126 的建议 我试了只让adodc.movenext做循环 不做additem的操作 数据没有破坏
而且combox的list(i)方法 和movenext没有错误
所以感觉神奇了。
再等等了 没有好答案的话 就用lgf126 的了
顺说我的版本是6.0的 打了sp6
Combox.additem和adodc配合冲突?
答案:5 悬赏:60
解决时间 2021-10-04 15:55
- 提问者网友:書生途
- 2021-10-04 00:01
最佳答案
- 二级知识专家网友:杯酒困英雄
- 2021-01-10 11:41
问题估计是没办法解决了,只是我有些想法,供楼主参考
combox.additem,只能更改combox的内容,绝对不可能会删除数据源!这个方法没有更改数据源的能力!除非楼主对该方法重新手工写过!
所以清除数据库的问题,楼主应该集中精力寻找那些对数据源操作的语句上!
还有combox.additem后面应该用括号将字符或表达式括起来
个人用的是VB2005!该版本的用法是:combox1.items.add("要添加的项目")
combox.additem,只能更改combox的内容,绝对不可能会删除数据源!这个方法没有更改数据源的能力!除非楼主对该方法重新手工写过!
所以清除数据库的问题,楼主应该集中精力寻找那些对数据源操作的语句上!
还有combox.additem后面应该用括号将字符或表达式括起来
个人用的是VB2005!该版本的用法是:combox1.items.add("要添加的项目")
全部回答
- 1楼网友:行雁书
- 2020-05-17 02:51
你还是用adodb吧 adodc实在是有太多不方便的地方
我觉得应该是Adodc2.Recordset.MoveNext 的问题
因为用adodc很少 也不知道什么原因
我的网盘里有combox和adodb的小例子,你要的话可以去我个人资料里找
sample.rar
- 2楼网友:纵马山川剑自提
- 2020-09-18 17:38
可以,你可以先让用户输入a,再for(int i=0;i<=a;i++);如果没什么别的限制条件,就循环a+1次
- 3楼网友:过活
- 2021-08-25 14:10
Combo1.Clear
Adodc2.Recordset.MoveFirst
Do While Not Adodc2.Recordset.EOF
Combo1.AddItem (Adodc2.Recordset.Fields("id").Value)
Adodc2.Recordset.MoveNext
Loop
- 4楼网友:七十二街
- 2019-09-28 10:28
与是不是固定数据无关,additem只是用作添加数据用,数据坏不坏它管不了,你应该加些判断条件,如:
If Adodc2.Recordset.RecordCount > 0 Then
Adodc2.Recordset.MoveFirst
Combo1.Clear
Do While Not Adodc2.Recordset.EOF()
' If Adodc2.Recordset("id").Value > 0 Then'如果是数字类型就用这个
If Trim(Adodc2.Recordset("id").Value) <> "" Then
Combo1.AddItem Adodc2.Recordset("id").Value
End If
If Not Adodc2.Recordset.EOF() Then Adodc2.Recordset.MoveNext
Loop
Combo1.ListIndex = 0
End If
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯