Ошибка группировки объектов в MS ACCESS 2003 с использованием соединения OLEDB - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть база данных MS ACCESS 2003, в которой есть одна таблица "TABLEA".

Затем я использую соединение OLEDB и создаю таблицу, а затем заполняю данные программно как:

 string create_table_script = @" CREATE TABLE [" + Path.GetFileNameWithoutExtension(filename) + @"](
                        [AutoID] COUNTER PRIMARY KEY  ,
                        [CAS] text(255) ,
                        [Listed French Ingredient No] text(255) ,
                        [Name] text(255) ,
                        [GC] text(20) ,
                        [Grp_Code] text(10) ,
                        [Galsyn] Memo ,
                        [Notes LCN] text(255) ,
                        [Notes LFIN] text(255) ,
                        [%w/w] text(255) )";



        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + fullpath + ";" + " User Id=admin; Password=";

        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            OleDbCommand SelectCommand = new OleDbCommand(create_table_script, connection);

            connection.Open();

            try
            {
                SelectCommand.ExecuteNonQuery();

            }
            catch (OleDbException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                connection.Close();
            }

        }

После заполнения этой таблицы,

Я получаю это сообщение только один раз, когда открываю эту базу данных доступа

"31613 Вы выбрали" Таблицы и связанные представления "в качестве способа группировки объектов вбаза данных. Access должен обновлять информацию об объектных зависимостях для создания групп. Это займет некоторое время для больших баз данных. Продолжить? "

Я не знаю, где я ошибаюсь.Я изумлённо для этого, но не получаю никакой пользы.Я думаю, что что-то не так в создании таблицы

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 15 мая 2012

Это лучший способ создать таблицу MS Access с использованием кода C #.

public string con_string;       
public OleDbConnection My_conn;// = new OleDbConnection();
public OleDbDataAdapter My_ada;
public OleDbCommand cmd;
public DataSet myds;// = new DataSet();
public void Make_Connention()
    {


        {
            con_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =";
            con_string += AppDomain.CurrentDomain.BaseDirectory.ToString() + "<yourdb>.mdb";
        }            
        My_conn = new OleDbConnection();
        My_conn.ConnectionString = con_string;
    }
public void IF_EXISTS_DELETE_AND_CREATE()
    {
        try
        {
            Make_Connention();
            string cn = con_string;
            OleDbConnection connection = new OleDbConnection(cn);
            object[] objArrRestrict;
            objArrRestrict = new object[] { null, null, null, "TABLE" };
            connection.Open();
            DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, objArrRestrict);
            connection.Close();
            string[] list;
            if (schemaTable.Rows.Count > 0)
            {
                list = new string[schemaTable.Rows.Count];
                int i = 0;
                foreach (DataRow row in schemaTable.Rows)
                {
                    list[i++] = row["TABLE_NAME"].ToString();
                }
                for (i = 0; i < list.Length; i++)
                {
                    if (list[i] == "TEMP")
                    {
                        string deletedl = "DROP TABLE TEMP";
                        using (OleDbConnection conn = new OleDbConnection(cn))
                        {
                            using (OleDbCommand cmd = new OleDbCommand(deletedl, conn))
                            {

                                conn.Open();
                                cmd.ExecuteNonQuery();
                                conn.Close();
                            }
                        }
                        break;
                    }
                }
            }
            string ddl = "CREATE TABLE TEMP (ID COUNTER,USERID INTEGER NOT NULL,[ADATE] TEXT(20), [ATIME] TEXT(20))";
            using (OleDbConnection conn = new OleDbConnection(cn))
            {
                using (OleDbCommand cmd = new OleDbCommand(ddl, conn))
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }
            }
        }
        catch (System.Exception e)
        {
            string ex = e.Message;
        }
    }
0 голосов
/ 01 ноября 2011

Это проблема доступа, связанная с навигацией в «Панели навигации (панель затвора)», и не имеет отношения к способу создания таблицы.Вы можете спокойно проигнорировать эту проблему, потому что она специфична для Access и не связана с OleDb

...