首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

access字段顺序的有关问题,很搞

2012-01-20 
access字段顺序的问题,很搞环境:winxp+access2003+VB6.0步骤;1、在access中创建一张表,加入若干个字段,fld1

access字段顺序的问题,很搞
环境:winxp+access2003+VB6.0
步骤;1、在access中创建一张表,加入若干个字段,fld1、fld2、fld3。
            2、因为某些原因,在access中调整了字段的位置,变成fld1、fld3、fld2。
在vb中写下如下代码:

Dim   mycat   As   New   ADOX.Catalog

Dim   i   As   Integer
Dim   msg   As   String


       
        mycat.ActiveConnection   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=E:\a.mdb;Persist   Security   Info=False "

        For   i   =   0   To   mycat.Tables( "test ").Columns.Count   -   1
                msg   =   msg   &   mycat.Tables( "test ").Columns(i).Name   &   "       类型:       "   &   mycat.Tables( "test ").Columns(i).Type   &   vbCrLf
        Next
        MsgBox   msg,   64,   "
test "

上述代码的目的是想将test表中所有字段的名字和类型打印出来。但是,发现,即使access中,字段的位置从fld1、fld2、fld3变成了fld1、fld3、fld2,打印出来的顺序还是fld1、fld2、fld3。有什么方法可以将access表字段的属性名字用for循环以fld1、fld3、fld2打印出来(更进一步,如果顺序变成fld2、fld3、fld1或者其他,for循环也能正常处理)

[解决办法]
dim msg()
For i = 0 To mycat.Tables( "test ").Columns.Count - 1
redim preserve msg(i)
msg(i) = mycat.Tables( "test ").Columns(i).Name & " 类型: " & mycat.Tables( "test ").Columns(i).Type & vbCrLf
Next
然后输出时,按你想要的顺序输出
[解决办法]
字段是有规律的话, 可以尝试这样

Dim fld As ADOX.Column

For i = 0 To mycat.Tables( "test ").Columns.Count - 1

Set fld = mycat.Tables( "test ").Columns( "fld " & i)

Debug.Print fld.Name & " 类型: " & fld.Type

Next

[解决办法]
俺一般是这样输出字段类型
rs.Open "select * from xxxx where 1 <> 1 ", cn, adOpenForwardOnly, adLockReadOnly, adCmdText
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name, rs.Fields(i).Type
Next
rs.close
cn.Close
而且,“即使access中,字段的位置从fld1、fld2、fld3变成了fld1、fld3、fld2”这句话有歧义:
1。通过表设计视图修改了字段顺序
2。在显示表数据的视图调整字段顺序
很明显,第2中方法不可能影响输入顺序

热点排行