Office中国论坛/Access中国论坛

标题: [求助]组合框的问题 [打印本页]

作者: 轻风    时间: 2011-11-2 16:02
标题: [求助]组合框的问题
假设一表中有数值型字段和文本型字段,组合框中的行来源初始设置为表中数值型的那个字段。由于需要用代码变更行来源为文本型的那个字段,再选择或输入文本时提示错误,要如何解决?


作者: todaynew    时间: 2011-11-2 16:24
本帖最后由 todaynew 于 2011-11-2 16:26 编辑

[attach]47188[/attach]

[attach]47189[/attach]


Private Sub Command4_Click()
Select Case Me.Command4.Caption
    Case "改为数字"
        Me.Combo0.RowSource = "SELECT Tbl.数字型 FROM Tbl;"
        Me.Command4.Caption = "改为文本"
    Case "改为文本"
        Me.Combo0.RowSource = "SELECT Tbl.文本型 FROM Tbl;"
        Me.Command4.Caption = "改为数字"
End Select
Me.Combo0.Value = Null
End Sub

Private Sub Form_Load()
Me.Combo0.RowSource = ""
Me.Command4.Caption = "改为文本"
Call Command4_Click
End Sub

作者: 轻风    时间: 2011-11-2 16:58
怪了,我怎么不行?
[attach]47190[/attach]
作者: todaynew    时间: 2011-11-2 16:59
本帖最后由 todaynew 于 2011-11-2 17:00 编辑
轻风 发表于 2011-11-2 16:58
怪了,我怎么不行?



先要把组合框的数据源清空。至于为何如此,我也说不明白。
作者: pq318    时间: 2011-11-2 19:37
高手啊,佩服!
作者: t小宝    时间: 2011-11-2 19:53
好象我以前也遇到过这个问题
作者: 轻风    时间: 2011-11-2 20:19
本帖最后由 轻风 于 2011-11-2 20:20 编辑
todaynew 发表于 2011-11-2 16:59
先要把组合框的数据源清空。至于为何如此,我也说不明白。


这样是可以了。奇怪,我试了好久,也试过先清空行来源,一直不行,不知是哪一步错了,反正搞得我好晕。明天用这方法放到我程序中试试再说。谢谢老汉!T兄也遇到过有没他解?
作者: 轻风    时间: 2011-11-3 08:26
本帖最后由 轻风 于 2011-11-3 08:31 编辑

早上才想起来,在我的程序中行来源本来就是空的。经过再次试验,发现:跟是否先清空行来源无关,只要组合框在第一次获得焦点时行来源是文本型字段,之后随便怎么换都没问题。

这样可有点麻烦,在我的程序中这个组合框是根据另一个组合框选择的字段名再确定行来源的,那如果先选择了数值型并进入了组合框,再选择文本型就不行了。
作者: 轻风    时间: 2011-11-3 08:47
而且还非得用点击获得焦点?晕,彻底凌乱了。
作者: t小宝    时间: 2011-11-3 09:45
轻风 发表于 2011-11-3 08:26
早上才想起来,在我的程序中行来源本来就是空的。经过再次试验,发现:跟是否先清空行来源无关,只要组合框 ...

你这一提醒,我也想起来了,就是这样。。。
作者: 轻风    时间: 2011-11-3 10:16
本帖最后由 轻风 于 2011-11-3 10:29 编辑
t小宝 发表于 2011-11-3 09:45
你这一提醒,我也想起来了,就是这样。。。


好象又不对了,把老汉那个改一下,先按一次按钮改为文本型,再按一次改为数值型,然后选择一个数字,这时是组合框第一次获得焦点,然后再按一次按钮改为文本型,再选择也没有报错呀?为什么我同样方法却不行,不知哪里有出入。

[attach]47206[/attach]


作者: 轻风    时间: 2011-11-3 10:49
本帖最后由 轻风 于 2011-11-3 10:53 编辑

附件中两个库,Database1.mdb是我的程序提取出来并简化的,Database.mdb是老汉那个方法做的,同样的先按一下按钮改为数字,并在组合框里选择一个数字,再按一下按钮改为文本,再选择时,我的会报错,老汉的不会。

我已经很晕了,请大伙帮我看看,两个差别在哪?
作者: todaynew    时间: 2011-11-3 12:01
本帖最后由 todaynew 于 2011-11-3 12:01 编辑
轻风 发表于 2011-11-3 10:49
附件中两个库,Database1.mdb是我的程序提取出来并简化的,Database.mdb是老汉那个方法做的,同样的先按一下 ...


两个实例我试着都没问题。

你的实例中有一个引用我测试的时候丢失了。我把这个引用没要,不知道是不是这个引用也引起这个问题?
作者: 轻风    时间: 2011-11-3 15:16
todaynew 发表于 2011-11-3 12:01
两个实例我试着都没问题。

你的实例中有一个引用我测试的时候丢失了。我把这个引用没要,不知道是不 ...

我是用2010做的,转到2003打开时会有这个引用错误。我也换了台装2003的电脑打开,去掉这个引用,错误依旧。
作者: 轻风    时间: 2011-11-3 15:22
这现象越来越奇怪了,在我的那个例子中,打开窗体后,只要鼠标划过那个组合框后(不用点击,也不用获得焦点),就不会出现错误。
有图有真想,下图两次操作中,第一次没划过组合框,出现错误。第二次划过了,就没有问题。
难以解释!
[attach]47209[/attach]

作者: t小宝    时间: 2011-11-3 16:08
轻风 发表于 2011-11-3 15:22
这现象越来越奇怪了,在我的那个例子中,打开窗体后,只要鼠标划过那个组合框后(不用点击,也不用获得焦点 ...

我测试确实也是这样,但是只要把组合框的文本对齐属性由“左”改为“常规”,这个奇怪的现象就消失了
access真是奇怪哈!
作者: todaynew    时间: 2011-11-3 17:18
轻风 发表于 2011-11-3 15:22
这现象越来越奇怪了,在我的那个例子中,打开窗体后,只要鼠标划过那个组合框后(不用点击,也不用获得焦点 ...

估计是微软设计时的毛病。
作者: 轻风    时间: 2011-11-4 08:26
t小宝 发表于 2011-11-3 16:08
我测试确实也是这样,但是只要把组合框的文本对齐属性由“左”改为“常规”,这个奇怪的现象就消失了
ac ...

T版真是细致,我一直在找两个实例的差别,没想到会是这个区别。不管怎么样,总是找出了原因。谢谢两位版主。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3