access字段顺序的问题,很搞

zwzw911 2007-07-05 07:45:58
环境: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循环也能正常处理)
...全文
893 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwzw911 2007-08-14
  • 打赏
  • 举报
回复
蚜虫的方法比较简单
yachong 2007-07-07
  • 打赏
  • 举报
回复
错了一个字:
第2中方法不可能影响输出顺序
--
yachong 2007-07-07
  • 打赏
  • 举报
回复
俺一般是这样输出字段类型
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中方法不可能影响输入顺序
cangwu_lee 2007-07-07
  • 打赏
  • 举报
回复
字段是有规律的话, 可以尝试这样

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
clear_zero 2007-07-05
  • 打赏
  • 举报
回复
同意楼上的方法
zzyong00 2007-07-05
  • 打赏
  • 举报
回复
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
然后输出时,按你想要的顺序输出

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧