首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Delphi中查找符合特定格式的Access数据库中所有表的列表

如何在Delphi中查找符合特定格式的Access数据库中所有表的列表
EN

Stack Overflow用户
提问于 2009-12-05 18:56:12
回答 3查看 4.3K关注 0票数 1

我需要计算给定数据库(MDB格式)中的表名列表,这些表名具有特定的格式(例如,其中包含DateTime字段"Date Applied")。我该怎么做呢?

注意:我正在使用Delphi 7,ADO组件,Microsoft JET 4.0连接到MDB类型的数据库。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-05 19:35:39

模式可能适合:

代码语言:javascript
复制
   Set rs = cn.OpenSchema(adSchemaColumns, _
   Array(Empty, Empty, Empty, SelectFieldName))

其中adSchemaColumns =4

rs是一个记录集对象

cn a连接对象

SelectFieldName是列名,在本例中为"Date Applied“。

此架构的约束为:

代码语言:javascript
复制
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME 

返回的列(字段)包括:

代码语言:javascript
复制
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
COLUMN_GUID
COLUMN_PROPID
ORDINAL_POSITION
COLUMN_HASDEFAULT
COLUMN_DEFAULT
COLUMN_FLAGS
IS_NULLABLE
DATA_TYPE
TYPE_GUID
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_SCALE
DATETIME_PRECISION
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
DESCRIPTION 

-- Obtaining Schema Information from a Database](http://msdn.microsoft.com/en-us/library/kcax58fh(VS.80%29.aspx%29)

票数 2
EN

Stack Overflow用户

发布于 2009-12-08 01:38:04

connection组件上有两种方法,它们对这类工作很有用。第一个是:

代码语言:javascript
复制
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False); 

它用当前数据库中所有可用表的列表填充TStrings后代。下一种方法是:

代码语言:javascript
复制
procedure GetFieldNames(const TableName: string; List: TStrings);

它填充特定表的所有字段的列表。然后,您可以创建一个简单的例程来遍历要查找的特定字段的所有表的所有字段。

票数 4
EN

Stack Overflow用户

发布于 2009-12-05 19:36:12

这是一个vbscript/asp类型的解决方案。您可以将其应用到Delphi中

代码语言:javascript
复制
Const adSchemaTables = 20


Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open _
    "Provider = Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source = 'C:\Scripts\Test.mdb'" 

Set objRecordSet = objConnection.OpenSchema(adSchemaTables)

Do Until objRecordset.EOF
    Wscript.Echo "Table name: " & objRecordset.Fields.Item("TABLE_NAME")
    Wscript.Echo "Table type: " & objRecordset.Fields.Item("TABLE_TYPE")
    Wscript.Echo
    objRecordset.MoveNext
Loop
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1851883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档