请教如何查询某个表的表结构

windanything 2003-10-10 12:11:36
在vb中用rdo方式通过dbase odbc驱动程序查询dbf数据文件,我想先判断要查询表的表结构是否正确,请问用什么sql语句能查询得到表的表结构?
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windanything 2003-10-10
  • 打赏
  • 举报
回复
谢谢各位高手了,rdo没有类似的方法吗,不成我改用ado算了。
yoki 2003-10-10
  • 打赏
  • 举报
回复
用Ado中cn的OpenSchema方法呀
如下:

Dim cn As New ADODB.Connection, rs As New ADODB.Recordset

Set rs = cn.OpenSchema(adSchemaColumns)

lstField1.Clear

For i = 1 To rs.RecordCount
If rs!TABLE_NAME = lstTable1.List(lstTable1.ListIndex) Then
lstField1.AddItem rs!COLUMN_NAME & vbTab & rs!NUMERIC_PRECISION
'rs!CHARACTER_OCTET_LENGTH
' & rs!CHARACTER_MAXIMUM_LENGTH
End If

rs.MoveNext
Next
阿建像熊猫 2003-10-10
  • 打赏
  • 举报
回复
Set aconn = New ADODB.Connection
aconstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & inputdataName & ";Persist Security Info=False;Jet OLEDB:"
On Error GoTo err1
aconn.Open aconstring

Set ars = aconn.OpenSchema(adSchemaTables) '''''用它来获得记录集
Do While Not ars.EOF
If ars!Table_Type = "TABLE" Then ''''其中ars!type为字段的类型''''table_name为字段的名称
If ars!Table_Name = "sysconfig" Then
ipputdataok = True
Exit Do
End If
End If
ars.MoveNext
Loop
射天狼 2003-10-10
  • 打赏
  • 举报
回复
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset

Set rs = cn.OpenSchema(adSchemaColumns)

lstField1.Clear

For i = 1 To rs.RecordCount
If rs!TABLE_NAME = lstTable1.List(lstTable1.ListIndex) Then
lstField1.AddItem rs!COLUMN_NAME & vbTab & rs!NUMERIC_PRECISION
'rs!CHARACTER_OCTET_LENGTH
' & rs!CHARACTER_MAXIMUM_LENGTH
End If

rs.MoveNext
Next
txlicenhe 2003-10-10
  • 打赏
  • 举报
回复
SQL的:

SELECT
(case when a.colorder=1 then d.name else '' end) N'表名',
a.colorder N'字段序号',
a.name N'字段名',
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'标识',
(case when (SELECT count(*)
FROM sysobjects
WHERE (name in
(SELECT name
FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid
FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then '√' else '' end) N'主键',
b.name N'类型',
a.length N'占用字节数',
COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
(case when a.isnullable=1 then '√'else '' end) N'允许空',
isnull(e.text,'') N'默认值',
isnull(g.[value],'') AS N'字段说明'
--into ##tx

FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sysproperties g
on a.id=g.id AND a.colid = g.smallid
order by object_name(a.id),a.colorder

1,216

社区成员

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

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