2014-01-20 5 views
0

pricelist, emploee info 등의 sqlserverce 데이터베이스를 사용하는 프로젝트를 만들었습니다. PDF로 제공하고 새 전자 메일을 열어 클라이언트로 보냅니다.관리자로서 프로젝트를 실행하면 데이터베이스가 도움이되지만 system.runtime.interopservices.comexception이 발생합니다.

첫 번째 문제는 "지정된 테이블이 존재하지 않습니다 [XXXXX]"입니다. 나는 관리자로서 프로젝트를 실행하면 데이터베이스와의 연결에 도움이된다는 것을 알았다.

그러나 다른 문제가 발생합니다 Outlook이 열려있을 때 (전망이 닫힐 때 아무 문제) 관리자는 제공하지 않습니다로들이받은 프로젝트 :

System.Runtime.InteropServices.COMException Retrieving the COM class factory for component with CLSID ..... (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). 

프로젝트가 새 이메일을 만들려고합니다.

두 조각을 함께 사용할 수있는 임시 해결책이나 방법이 있습니까? 리드가 있니? 나는 조금 봤지만 두 번째 문제를 피하기 위해 레지스트리를 변경해야한다는 것을 알았다. 다른 방법이 있습니까?

Outlook.Application objApp = new Outlook.Application(); 
       Outlook.MailItem mail = null; 
       mail = (Outlook.MailItem)objApp.CreateItem(Outlook.OlItemType.olMailItem); 
       //The CreateItem method returns an object which has to be typecast to MailItem 
       //before using it. 
       mail.Attachments.Add((object)saveFile.FileName, Outlook.OlAttachmentType.olByValue, 1, Type.Missing); 
       //The parameters are explained below 
       mail.To = email; 
       mail.BCC = "[email protected]"; 
       mail.Display(); 

이 데이터베이스 연결을위한 코드입니다 (프로그램에 몇 번 발생) :

System.Data.SqlServerCe.SqlCeConnection sqlconnection = new System.Data.SqlServerCe.SqlCeConnection(); 
    System.Data.DataSet DtSet = new System.Data.DataSet(); 
    System.Data.SqlServerCe.SqlCeDataAdapter sqladapter; 
    string katalog = Application.StartupPath + "\\Bazadanych.sdf"; //Data Source = C:\\Users\\user\\Documents\\Visual Studio 2010\\Projects\\BMGRP\\Oferty BMGRP\\Oferty BMGRP\\bin\\Debug\\BazaDanych.sdf 

    sqlconnection.ConnectionString = "Data Source = " + katalog + "; Max Database Size=40"; //zmienić na katalog root programu 
    sqlconnection.Open(); 

    string sql = "SELECT * From Przedstawiciele"; 
    sqladapter = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, sqlconnection); 


    sqladapter.Fill(DtSet); 
    comboBox1.DataSource = DtSet.Tables[0]; 
    comboBox1.DisplayMember = "imie"; 

    sqlconnection.Close(); 

이메일에 대한 코드입니다. 프로그램은 기본적으로 프로그램 파일에 설치됩니다.

+2

코드 또는 얼굴 클로저를 표시하십시오. 데이터베이스를 저장할 문자열은 어디에 있습니까? Program Files 폴더에 있습니까? – spender

+0

@spender 예, 데이터베이스가 프로그램 파일에 있습니다. –

답변

0

추가 연구에 따르면 내가하고 싶은 일 (예 : 관리자가 프로젝트를 실행하고 Outlook이 켜져있을 때 이메일을 작성)을 수행 할 수 없다는 것이 나타났습니다. 그래서 유일한 해결책은 데이터베이스 문제를 해결하는 것이 었습니다 : 이것은 다른 폴더에 응용 프로그램을 설치 한 다음 @spender가 제안한대로 프로그램 파일을 만드는 것입니다. 도움이되었습니다.