Access 2007 응용 프로그램에 연결할 수있는 Winforms C# 응용 프로그램이 있습니다. 기본적으로 사용자는 winforms 앱에서 버튼을 클릭하면 실행중인 MS 액세스 응용 프로그램 내에서 특정 양식으로 이동합니다.MS Access 응용 프로그램과 C# Winforms 응용 프로그램 간의 연결
이것이 가능합니까?
감사합니다.
Access 2007 응용 프로그램에 연결할 수있는 Winforms C# 응용 프로그램이 있습니다. 기본적으로 사용자는 winforms 앱에서 버튼을 클릭하면 실행중인 MS 액세스 응용 프로그램 내에서 특정 양식으로 이동합니다.MS Access 응용 프로그램과 C# Winforms 응용 프로그램 간의 연결
이것이 가능합니까?
감사합니다.
예 가능합니다. DDE를 사용해야합니다. 추한 기술이지만 여전히 Access 2007에 있습니다. NDde 라이브러리를 codeplex에 사용하고 있습니다.
using (DdeClient client = new DdeClient("MSACCESS", "MyDB.accdb"))
{
String DdeCommand =
"[OpenForm frmNavigate,,,,,,UserOpenArgs]";
try
{
client.Connect();
client.Execute(DdeCommand, 5000);
}
catch (NDde.DdeException ex)
{
// MessageBox.Show(ex.Message);
Logger.Write(ex.ToString());
}
}
우수합니다. 감사합니다. NDde를 확인합니다. 명확하게하기 위해 Access 애플리케이션은 MS SQL 데이터베이스에 연결된 액세스 양식입니다. .accdb 파일이 없습니다 ... 변경 사항이 있습니까? – user948060
액세스 양식이 올바른지 accdb 또는 accde 파일이 있어야합니까? 우리는 SQLServer 연결된 테이블을 사용하고 개발을위한 accdb 파일을 가지고 있으며이를 배포 용 accde 파일로 변환합니다. 이것도 함께 작동합니다. – user957902
user957902 : 나는 adp 파일을 가지고있다. – user948060
DDE를 사용하는 대신 자동화를 고려하십시오. 관련 PIA 라이브러리에 대한 참조를 추가해야하며 다음과 같이 Access 개발자에게 다소 익숙한 코드를 추가해야합니다.
var access = new Access.Application();
access.OpenCurrentDatabase("MyDB.accdb");
access.OpenForm("frmNavigate");
자동화를 사용하면 항상 Access의 새 인스턴스가 시작된다는 것을 알게되었습니다. DDE는 이미 실행중인 인스턴스를 찾습니다. – user957902
@ user957902 'System.Runtime.InteropServices.Marshal.GetActiveObject'를 사용하여 기존 인스턴스를 가져올 수 있습니다 (이 방법에도 문제가 있음). 예제는 http://support.microsoft.com/kb/316126을 참조하십시오. – phoog
이것은 아마도 사용자가 찾고있는 대답이 아니지만 왜 WinForms로 Access 애플리케이션을 다시 작성하지 않습니까? – jrummell
액세스 응용 프로그램은 회사 전체에서 일상 업무를 수행하는 데 사용되는 큰 규모의 기존 응용 프로그램입니다. 사실 winforms 앱은 Acess 앱을 대체하지만 그 중 일부는 아닙니다. 사용자는 새 앱에서 기존 앱으로 다시 연결할 수 있어야합니다. – user948060