Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教: 全数据库搜索方法!

litao  发表于:2014-04-05 21:00:25  
复制

现有一个陌生的数据库: BD1 。

BD1中有很多表,各表字段情况未知。


现在要在整个数据库BD1中查找“attxt1”,要求列出所有包含“attxt1”的[表名]和[字段名]。

 

Top
litao 发表于:2014-04-05 21:15:31

我想到的方法,逐一搜索所有的表、所有的字段。

跳过:1、表没有记录。2、字段全部是Null。3、字段属性不可能出现“attxt1”的内容。


请老师补充,写出SQL语句。 先谢谢了!!




蒋祁 发表于:2014-04-06 09:26:08
传说中的全文检索?

煮江品茶 发表于:2014-04-06 12:03:04
http://www.accessoft.com/article-show.asp?id=4439

litao 发表于:2014-04-06 13:25:01

@煮江品茶 老师:

         我看了哪篇文章,没有如何遍历SQL数据库的【表】、【字段】的代码啊?



煮江品茶 发表于:2014-04-06 16:49:47

没仔细看吧?简单的方法可以从MSysObjects中获得表名,然后通过列表框或者组合框的字段列表得到各个表的字段。这种方法无需代码,直接利用控件的属性设置即可。


除了这个方法外,还有其他一些方法。比如可以用ADO或者DAO获得表集和字段集。下面是通过ADO获得表集和字段名的两个自定义函数(没测试,你试试):


Public Function GetTables(ByVal cnn_str As String) As Variant
    '引用:Microsoft ADO Ext. 2.8 for DDL and Security
    '功能:获取数据表名数组
    '参数:cnn_str--连接字符串
    
    Dim cnn As New ADODB.Connection
    Dim cat As New ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim i As Long
    Dim Arr() As String
    
    cnn.ConnectionString = cnn_str
    cnn.Open
    Set cat.ActiveConnection = cnn
    
    For i = 0 To cat.Tables.Count - 1
        ReDim Preserve Arr(i)
        Set tbl = cat.Tables(i)
        Arr(i) = tbl.Name
    Next
    
    GetTables = Arr
    
    cnn.Close
    Set cnn = Nothing
    Set cat = Nothing
    Set tbl = Nothing
End Function



Public Function GetTableFields(ByVal cnn_str As String, ByVal tbname As String) As Variant
    '引用:Microsoft ADO Ext. 2.8 for DDL and Security
    '功能:获取数据表列名数组
    '参数:cnn_str--连接字符串,tbname---表名
    Dim cnn As New ADODB.Connection
    Dim cat As New ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim i As Long
    Dim Arr() As String
    
    cnn.ConnectionString = cnn_str
    cnn.Open
    Set cat.ActiveConnection = cnn
    
    Set tbl = cat.Tables(tbname)
    For i = 0 To tbl.Columns.Count - 1
        ReDim Preserve Arr(i)
        Arr(i) = tbl.Columns(i).Name
    Next
    
    GetTablesFields = Arr
    
    Set cnn = Nothing
    Set cat = Nothing
    Set tbl = Nothing
End Function




总记录:5篇  页次:1/1 9 1 :