2015-09-09 3 views
0

Я сделал новую программу на C#. С помощью этой программы я хочу открыть форму с идентификатором (например, идентификатором клиента) из моей базы данных Access. Я открываю свою базу данных со следующей строкой: «Process.Start (@« C: \ Users \ Stefan \ Desktop \ Test.accdb »);Как открыть форму с идентификатором в базе данных MS Access?

Но у меня нет идеи, как я могу открыть форму с идентификатором клиента. Как передать идентификатор из командной строки в базу данных, чтобы открыть форму с идентификатором? Не могли бы вы дать мне совет для этого?

Спасибо, Стефан

ответ

1

Вы можете создать макрос в базе данных Access. Назовите его (в качестве примера) OpenCustomerForm. Этот макрос должен содержать только команду для выполнения функции, определенной в модуле VBA.

Например

RunCode CustomerFormByID() 

Затем в модуле VBA (имя модуля не важно) создать функцию с именем CustomerFormByID

Public Function CustomerFormByID() 
    Call DoCmd.OpenForm("NameOfFormThatShowCustomers", _ 
         acNormal, "", _ 
         "ID=" & Command, acFormEdit) 
End Function 

Эта функция попытается открыть форму имени тот, который вы используете для показа своих клиентов. Важная часть здесь - условие WHERE, в которое вы помещаете первичный ключ таблицы ваших клиентов (предположительно его именованный идентификатор) и функцию Command, которые возвращают то, что передается в командной строке после переключателя/cmd.

Теперь в C# вызывается все с помощью

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "Test.accdb"; 
psi.WorkingDirectory = @"C:\Users\Stefan\Desktop"; 
psi.Arguments = "/x OpenCustomerForm /cmd " + customerID.ToString(); 
Process.Start(psi); 
+0

Благодарим за быстрый ответ. Могу ли я открыть форму без макроса в базе данных? – Stefan

+0

Единственный способ (AFAIK), чтобы взаимодействовать с доступом через командную строку, передает имя макроса (или использует предопределенный макрос Autoexec), в противном случае вам нужно выяснить, есть ли способ связаться с Access с помощью Interop – Steve

Смежные вопросы