我想根据所给的内容查询一个数据库里内容所在的列!条件:
     可能是多张表,并不知道表中结构.
     要查询每张表中是否有这条信息,然后在查出他的列名和表名.

解决方案 »

  1.   

    举例说明你的要求
    要用VBA代码来解决,速度也不会快
      

  2.   

    通过系统表或者dao.tabledef,得到所有表名。
    然后通过ADO.recordset.fields  或者 dao.tabledef.fields 得到所有列
    然后逐一搜索。
      

  3.   


    比如我有一个已知的"ABC"的内容.我知道存在数据库中的某一张表中,但并不知道具体在那一张表中.
    我就根把所给的"ABC"查出所在的表和列名明白了吗?
      

  4.   


    http://blog.csdn.net/ACMAIN_CHM/archive/2008/12/24/3598577.aspx
    获取ACCESS表结构 
      

  5.   

    我要的不是获取ACCESS表结构
      

  6.   

    Dim dd As New ADOX.Catalog
    Dim ff1 As New ADOX.Table
    Dim ff3 As New ADODB.Connection
    Dim ff4 As New ADODB.Recordset
    Set ff3 = CurrentProject.Connection
    Set dd.ActiveConnection = CurrentProject.Connection
    For Each ff1 In dd.Tables
    If ff1.Type = "table" Then
    ff4.Open ff1.Name, ff3, adOpenDynamic, adLockOptimistic
    Do While Not ff4.EOF
    For Each ffq In ff4.Fields
    If ffq.Type = 202 Then  这里判断你的值
    MsgBox ffq.Name & " aaaaa " & ffq.Value
    End If
    Next
    ff4.MoveNext
    Loop
    ff4.Close
    End If
    Next
      

  7.   

    上述是VBA示例,自行更改为你的语言,一个思路
      

  8.   

    基本思路:
    用ADO取得表名->根据表名打开表记录集->循环记录集->判断每个字段的类型、值是否为要求
    的结果,比如字符'abc',数字123
      

  9.   

    1)首先可能查出多个值;
    2)其次,获取access所有列名不能用普通的办法。    DataTable columns = new DataTable();
       columns =this.odcConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new Object[] { null, null, DataName, null });其中columns里面的内容是按字符串排序好了的
    3)能获取到列名就可以查询了 只不过算法还得好好研究下 我没试过 关注中...
      

  10.   


    C#则更简单!using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\access\xx.mdb;User Id=admin;Password=;";
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    connection.Open();
                    DataTable schemaTable = connection.GetOleDbSchemaTable(
                        OleDbSchemaGuid.Columns,
                        new object[] { null, null, null, null });                foreach (DataRow row in schemaTable.Rows)
                    {
                        string queryString = "select top 1 1 from [" + row[2] + "] where [" + row[3] + "] like '%abc%'";
                        using (OleDbCommand command = new OleDbCommand(queryString, connection))
                        {
                            if(command.ExecuteScalar() != null)
                                Console.WriteLine("{0} - {1}", row[2], row[3]);
                        }
                    }
                }
                Console.Read();
            }
        }
    }
      

  11.   

    不高深,ADO.NET里有获取表结构的方法   刚才楼上的方法可以,你自己根据这个再去多深入了解一下就可以了,DataTable schemaTable = connection.GetOleDbSchemaTable( OleDbSchemaGuid.Columns,
                        new object[] { null, null, null, null });