Office中国论坛/Access中国论坛

标题: 求助:如何用代码设置每个文本字段的IMEMode? [打印本页]

作者: godfrey    时间: 2008-8-20 10:10
标题: 求助:如何用代码设置每个文本字段的IMEMode?
在网上搜到一片帖子www.office-cn.net/Article/Class5/Class9/200502/770.html ,说用DAO设置field.properties("IMEMODE")=2遍历所有文本字段就可以关掉Ime:
    For Each myFld In myT.Fields
         If myFld.Properties("type") = dbText And Right(myT.Name, 4) Like "_???" Then
            myFld.Properties("ImeMode") = 2
            debug.print myFld.Name, myFld.Properties("ImeMode")           
            '1 开
            '2 关
            '0 随系统设置
        End If
    Next

问题是field的properties里面根本就没有ImeMode这一项,所以上述设置根本不起作用啊?(设置完马上debug.print,只能回显一个空值。)

请问老大这是为什么,如何实现?
作者: godfrey    时间: 2008-8-20 12:05
顶起来到高手看到为止!![:47]
作者: liwen    时间: 2008-8-20 14:37
估计楼主VBA没有引用DAO
作者: godfrey    时间: 2008-8-20 15:02
原帖由 liwen 于 2008-8-20 14:37 发表
估计楼主VBA没有引用DAO

不引用连执行都执行不了啊

不过我听你的刚才把引用换了一下,从DAO3.6换成DAO3.51
奇怪的事情发生了
对个别表里面的字段产生作用了(IMEMODE变成了OFF)!
但是还有大部分表没有发生作用
不知道为什么,正在研究

Thanks anyway
作者: godfrey    时间: 2008-8-20 15:19
奇怪了,同一个数据库的两张表,各有一些文本字段
循环到第一张表顺利将每一个字段的.properties("IMEMODE")设为2 (Off),到第二张表就报错说“run-time error '3270' Property not found”!
难道同是TEXT 也会有些有IMEMODE属性,有些没有?晕死
看来问题复杂了,期待高高手
for each myfield in mytable.fields
if myfield.properties("Type")=dbText then myfield.properties("ImeMode")=2
next myfield
作者: godfrey    时间: 2008-8-20 15:56
标题: 呼唤专家:为什么文本字段的properties会不同?
我用以下这段程序分别过两个表中的文本字段,惊奇地发现了他们的不同:
For Each myFld In mydb.TableDefs("BSC_BRI").Fields
    For i = 0 To myFld.Properties.Count - 1
    Debug.Print i, myFld.Properties(i).Name
    Next i
Next myFld
在可以设置的表里,每个文本字段有27个属性,其中第25个是IMEMODE:
0            Value
1            Attributes
2            CollatingOrder
3            Type
4            Name
5            OrdinalPosition
6            Size
...
17           FieldSize
18           OriginalValue
19           VisibleValue
20           ColumnWidth
21           ColumnOrder
22           ColumnHidden
23           DisplayControl
24           IMEMode
25           IMESentenceMode
26           UnicodeCompression
在不可以设置IMEMODE的表里,每个文本字段有20个属性,其中没有IMEMODE:
0            Value
1            Attributes
2            CollatingOrder
3            Type
4            Name
...
17           FieldSize
18           OriginalValue
19           VisibleValue
为什么会这样?为什么呢~~~~~~~~~[:44]
作者: liwen    时间: 2008-8-20 16:03
上传实例才好分析
作者: godfrey    时间: 2008-8-21 11:47
标题: 感谢斑竹耐心
附件中有两个表,每个表均由一些文本字段构成。在模块中有两个子程序,分别DISPLAY这些文本字段的属性和修改其中的"IMEMode"属性。
BSC_BRI表中的文本字段均有27个属性,其中含有"IMEMode"属性。
PCMS_CRE表中的文本字段均只有20个属性,其中不含有"IMEMode"属性。
因此修改IME程序对第一个表有效,对第二个表报错。
我的问题是:同是文本字段,为何在不同的表中属性的数量都不同呢?
作者: liwen    时间: 2008-8-21 15:30
这两个表不是从一个库里来的吗?还真有这种情况。
那个不含“IMEMode"属性的表,我只是将字段类型重新确认了一下就正常了。
作者: godfrey    时间: 2008-8-21 16:51
第二个表是我用Docmd.runsql "Create Table XXX A1 Text(50), A2 Text(50),..."这么生成出来的。
“那个不含“IMEMode"属性的表,我只是将字段类型重新确认了一下就正常了。”
我明白了,谢谢斑竹!




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