2011-12-19 1 views
0

액세스 데이터베이스의 BIT (YESNO) 열을 프로그래밍 방식으로 확인란으로 변환하는 방법을 검색하는 동안 DoCmd를 사용하여 기존 데이터베이스의 구조를 복사하는 것이 가능했습니다 . 나는 Microsoft.Office.Interop.Access에 대한 참조를 추가하고 그 2 개 내 코드에 라인 추가 : 나는 Do.Cmd.TransferDatabase을 실행하고있어 내 데이터베이스에 대한 연결을 열 try 블록에서표시 비트 (예 아니요) 데이터 형식이 액세스 테이블의 확인란으로

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

을 :

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

과 나는 System.Runtime.InteropServices.COMException :

이 작업에는 열려있는 데이터베이스가 필요합니다.

누가 잘못 될지 알고 있습니까?

+0

좋아, 나는 데이터베이스에 대한 연결을 열 수 있었다; – Pantelis

+0

DAO를 사용하여 형식을 추가 할 수 있습니다. VBA이지만 C#으로 번역 할 수 있어야합니다. http://wiki.lessthandot.com/index.php/Add_a_Display_Control_(Checkbox,_Combobox) _to_a_YesNo_Field – Fionnuala

+0

감사합니다. 나는 그것을 시도 할 것이다. "Set db = CurrentDb"이 줄은 무엇을합니까? 내가 게시 한 방법에 문제가 있습니다. OpenCurrentDatabase를 호출하면 실제로 .MDB 파일이 열립니다. 그게 내가 원하는 행동이 아니야. 데이터베이스에 연결하기 만하면됩니다. – Pantelis

답변

1

나는 C#을 모른다. 따라서 테이블의 필드 (열)를 체크 박스 디스플레이로 설정하는 방법의 대략적인 예가 될 것이다. 이것이 내가이 질문에 관한 것이라고 생각한다. myAccessInstance.OpenCurrentDatabase ("C : \\ 사용자 \\ 사용자 \\ 바탕 화면 \\ Merge2 \\ playlists.MDB")

//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

+0

안녕하세요, 고마워요! 그게 효과가 있었어. Btw 내가 이전 게시물에 잘못했다, OpenConnection 메서드는 ODBC 데이터 원본에 대한 것입니다. – Pantelis

+0

@Pantelis이 게시물의 내용을보다 정확하게 반영하기 위해이 게시물의 제목을 변경하려고합니다. – Fionnuala

관련 문제