2011-11-01 73 views
0

我有一個MS ACCESS 2003數據庫,其中有一個表「TABLEA」。使用OLEDB連接在MS ACCESS 2003中分組對象錯誤

然後我使用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(); 
      } 

     } 

填寫此表後,

我得到這個消息只有一次,每當我打開這一訪問datatbase

「31613您已選擇」表格和相關視圖「作爲數據庫中對象的分組方式,Access需要更新對象依賴關係的信息才能創建組,這對於大型數據庫將需要一些時間。 接着說?」

我不知道我錯在哪裏。我爲此目鏡了它,但沒有得到任何好處。 我覺得在創建表格時有一些問題

任何幫助表示讚賞。

回答

0

這是與「導航窗格(快門欄)」中的導航有關的Access問題,與您創建表格的方式無關。您可以放心地忽略此問題,因爲它是訪問特定的並且與OleDb無關

2

這是使用C#代碼創建MS Access表的最佳方法。

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; 
     } 
    }