如何用VB自动读表中字段的名字、类型、描述等信息?

huiexch 2004-10-13 11:03:59
简单需求,我把字段的中文名写在表中字段的描述里,在程序中遍历此表的每一字段,将描述信息一次读出来,如何搞啊?这里先谢了
...全文
194 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonsky2004 2004-12-22
如果用ADO编程的话,再引用ADOX很麻烦,不如再建一张表来表示特定表中相应字段及其描述之间的关系
例如
表一
name bornyear class
dragon 1980-6-21 0332
...... ........ .....

表二
fieldname Description
name 姓名
bornyear 出生日期
class 班级
回复
yongming520 2004-10-13
lxcc(虫子|需要点勇气和信心) 的更好!
回复
yongming520 2004-10-13
假如你的表是access表的话,那就可以用一个函数就可以了,好象是以open开头的,具体的你去www.access911.net查看一下就知道(我以前用access做后台的时候也碰到过你的问题,现在具体的都忘了,嘿嘿!)
回复
lxcc 2004-10-13
'以下是得到描述信息的,若需要得到字段的名字、类型,可以用rs("FieldName").Name,rs("FieldName").Type得到
Function GetFieldDesc_ADO(ByVal MyTableName As String, _
ByVal MyFieldName As String)

Dim MyDB As New ADOX.Catalog
Dim MyTable As ADOX.Table
Dim MyField As ADOX.Column

On Error GoTo Err_GetFieldDescription

MyDB.ActiveConnection = CurrentProject.Connection
Set MyTable = MyDB.Tables(MyTableName)
GetFieldDesc_ADO = MyTable.Columns(MyFieldName).Properties("Description")

Set MyDB = Nothing

Bye_GetFieldDescription:
Exit Function

Err_GetFieldDescription:
Beep
MsgBox Err.Description, vbExclamation
GetFieldDescription = Null
Resume Bye_GetFieldDescription

End Function

调用方法:
GetFieldDesc_ADO("Employees", "EmployeeID")

回复
cosio 2004-10-13
建议先去看VB的书的!
回复
huiexch 2004-10-13
我不懂,添加ADOX就能读?然后用什么语句读?何况我的VB环境里,没有你说的ADOX的引用啊
回复
lxcc 2004-10-13
用ADOX,添加Microsoft ADO Ext 2.X For...的引用!
回复
huiexch 2004-10-13
sql server里的表设计中,有列名、数据类型、长度、允许空,此外在下面,还有描述、默认值、精度等内容,我把列名的中文放在描述里,所以希望把它读出来
回复
biglopes 2004-10-13
它的意思就是说把字段读出来啊,
比如表1有
自行车数量、汽车数量、拖拉机数量……这些字段,
他想通过程序得到一个这些字段名字的列表,
我也想过,但不知道有什么方法。
回复
starsoulxp 2004-10-13
“描述”是个字段?没看懂你的意思
回复
lxcc 2004-10-13
SQL读系统表吧

select value from sysproperties WHERE id in (select id from sysobjects where name ='YourTableName') and smallid in (select colid from syscolumns where name ='YourColumnName') and name='MS_Description'
回复
huiexch 2004-10-13
这样应该不行,我这个描述要征对字段的,每个字段的描述中放一个中文名
回复
yongming520 2004-10-13
换成了Access数据库,发现OK了,说明sql server 不支持Properties("Description"),那该怎么办呢?
灰鹅战士愁眉苦脸中
========================
那就变通一下,在这个你要操作的表中加一个备注型字段,然后去读取出来,一样可以达到你要的效果!
回复
huiexch 2004-10-13
Access支持Autoincrement、Default、Description、Nullable、Fixed Length、Seed、Increment、Jet OLEDB:...等;而SQL Server只支持Autoincrement、Default、Fixed Length、Nullable、Primary Key、Unique、Column Level Collation Name
回复
huiexch 2004-10-13
换成了Access数据库,发现OK了,说明sql server 不支持Properties("Description"),那该怎么办呢?
灰鹅战士愁眉苦脸中
回复
huiexch 2004-10-13
To lxcc(虫子|需要点勇气和信心) :
我用了你写的函数,出现错误:“在对应所需名称和序数的集合中,未找到项目”。
调试发现是这一句:GetFieldDesc_ADO = MyTable.Columns(MyFieldName).Properties("Description")出错了
回复
发动态
发帖子

1180

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告