2011-12-19 26 views
0

雖然谷歌搜索如何在BIT(YESNO)列在Access數據庫轉換爲複選框編程,一個可能的解決方案,我發現這是由使用的DoCmd複製現有數據庫的結構。 我已經加入到Microsoft.Office.Interop.Access參考,並添加這些2號線在我的代碼:顯示位(YESNO)數據類型複選框在Access表

using Access = Microsoft.Office.Interop.Access;  
Access.Application myAccessInstance = new Access.Application(); 

在try塊,我打開我的數據庫的連接,我執行Do.Cmd.TransferDatabase

myAccessInstance.DoCmd.TransferDatabase(0, "Microsoft Access", "C:\\Users\\user\\Desktop\\Merge\\playlists.MDB", 0, "PlaylistNames", 
       "PlaylistNamesCopy", true); 

和我得到一個System.Runtime.InteropServices.COMException

此操作需要一個開放的數據庫。

有誰知道是怎麼回事了?

+0

好的,我不得不打開到數據庫的連接:( 「C:\\用戶\\用戶\\桌面\\ Merge2 \\ playlists.MDB」) myAccessInstance.OpenCurrentDatabase; – Pantelis 2011-12-19 10:35:41

+0

您可以使用DAO添加的格式,這是VBA,但它應該可以翻譯爲C#:http://wiki.lessthandot.com/index.php/Add_a_Display_Control_(Checkbox,_Combobox)_to_a_YesNo_Field – Fionnuala 2011-12-19 11:24:43

+0

感謝。我會嘗試的。 「Set db = CurrentDb」這行代表什麼? 我發佈的方法有問題。通過調用OpenCurrentDatabase實際打開.MDB文件。那不是我想要的行爲。我只需要建立到數據庫的連接。 – Pantelis 2011-12-19 11:56:11

回答

1

我不知道C#,所以這是如何在一個表中設定一個字段(列)的複選框顯示,這是什麼,我相信這個問題是關於一個粗略的例子。

//Added reference to COM Microsoft DAO 3.6 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DAO.DBEngine dbEng = new DAO.DBEngine(); 
      DAO.Workspace ws = dbEng.CreateWorkspace("", "admin", "", DAO.WorkspaceTypeEnum.dbUseJet); 
      DAO.Database db = ws.OpenDatabase("z:\\docs\\dbfrom.mdb", false, false, ""); 
      DAO.TableDef tdf = db.TableDefs["Test"]; 

      DAO.Field fld = tdf.Fields["AYesNo"]; 
      //dbInteger 3 
      //accheckbox 106 
      DAO.Property prp = fld.CreateProperty("DisplayControl", 3,106); 
      fld.Properties.Append(prp); 
     } 
    } 
} 
+0

謝謝,我會嘗試。 OpenDatabase()不是我想要建立與數據庫的連接,但我知道我可以使用OpenConnection和Workspace對象。 – Pantelis 2011-12-19 13:41:22

+0

嘿,夥計,謝謝一堆!這工作。順便說一句,我錯在我以前的帖子,OpenConnection方法是爲ODBC數據源。 – Pantelis 2011-12-19 14:28:44

+0

@Pantelis我將改變這篇文章的標題,以更準確地反映內容。 – Fionnuala 2011-12-19 14:32:52

相關問題