У меня есть база данных Access и приложение С#. Приложение С# делает некоторые вещи для некоторых таблиц в Access, и я хочу обновить форму Access, когда заканчивается код С#. Я пытался это сделать:
void refresh()
{
Access.Application acApp = new Access.ApplicationClass();//create msaccess application
object oMissing = System.Reflection.Missing.Value;
//Run the Test macro in the module
acApp.Run("Function_refresh",ref oMissing,ref oMissing,ref oMissing,ref oMissing,
ref oMissing,ref oMissing,ref oMissing,ref oMissing,
ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing
,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing
,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing
,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing
,ref oMissing,ref oMissing);
acApp.Quit();//exit application
}
Мой код работает, если БД закрыта. Как я могу использовать эту функцию, если база данных уже открыта?
edit: С# выполняет некоторые вставки в таблице Access, поэтому, когда она заканчивается, я хочу обновить форму, когда она открыта.
Мой код работает, если DB закрыт. Как я могу использовать эту функцию, если база данных уже открыта?
Я просто попробовал следующий код для кнопки в приложении С# Winforms, и это сработало для меня. Если у меня открыта моя база данных в Access и форма "LogForm" открыта в базе данных, тогда, когда я нажимаю кнопку на моей форме С#, форма доступа обновляется.
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Access.Application acApp;
this.Activate();
acApp = (Microsoft.Office.Interop.Access.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Access.Application");
Microsoft.Office.Interop.Access.Dao.Database cdb = acApp.CurrentDb();
cdb.Execute("INSERT INTO LogTable (LogEntry) VALUES ('Entry added ' & Now())");
acApp.Forms["LogForm"].Requery();
}
Код адаптирован из статьи поддержки Microsoft
Как использовать Visual С# для автоматизации работающего экземпляра программы Office