Как быть продуктивным в разработке Access VBA + SQL? - PullRequest
5 голосов
/ 09 июля 2009

Я на 80% разработчик ruby ​​на rails, но мне все еще нужно поработать с Access VBA.

Некоторые из них - очень дерьмовые системы, созданные много лет назад, используемые крупным предприятием во всем мире, так что большинство работ просто улучшают старую систему.

Методы в основном представляют собой MS Access в качестве интерфейсной таблицы со связанными таблицами, которая связывается с сервером SQL через ODBC в качестве серверной части.

Теперь, я действительно думаю, что мне нужна помощь, просто хочу знать, есть ли кто-нибудь, кто может создать элегантное приложение VBA, следуя объектно-ориентированному шаблону?

Еще лучше, если вы покажете мне фрагмент кода, чтобы продемонстрировать, насколько он хорош, спасибо.

Ответы [ 5 ]

8 голосов
/ 10 июля 2009

Ну, первая проблема, о которой нужно помнить, это то, что не существует волшебного ярлыка для изучения доступа к MS. За эти годы я изучил множество платформ разработки, начиная от мэйнфрейм-систем, систем обработки данных и вплоть до ручного ассемблера на ПК. Я написал две системы начисления заработной платы с нуля (в эти системы включены формулы дохода Канады для налогов). Одна система была написана с нуля на Паскале, где я даже написал свой собственный движок данных.

Не заблуждайтесь, ms-access - сложная система разработки.

Вы можете создавать великолепные приложения в доступе. взгляните на эти снимки экрана:

http://www.fairsoftware.com/screenshots.aspx

Обратите внимание на классные ленты на снимках экрана выше.

Проблема в том, что вы не можете выучить Unix за день, и вы не можете выучить Oracle за день. Вы также не можете изучить доступ к MS за день. Если те приложения, которые вы получили для обслуживания, сложны, то вам нужно нанять разработчика с опытом работы 4-5 лет. Мысль о том, что каким-то образом вы будете быстрее набирать скорость в ms-access, чем vb.net или c #, на самом деле является ложной концепцией.

На самом деле я бы сказал, что вы можете изучать Oracle быстрее, чем вы можете изучать доступ к MS. Хотя кривая обучения в доступе к MS не такая крутая, она очень длинная.

VB6 - это прогулка в парке по сравнению с доступом. Формы VB6 очень просты, но формы в доступе очень сложны (у нас примерно в 3 раза больше событий и свойств для данной формы). Например, в доступе у нас есть два события, которые запускаются при загрузке формы (при открытии и при загрузке). Формы VB6 (и даже формы .net) имеют только одно событие. На открытии мероприятия есть возможность отмены. Если вы установите Cancel = true, то форма не будет загружаться и не будет отображаться.

Логически это означает, что форма вызывает два разных события для двух разных целей при вызове формы. Таким образом, событие открытия будет иметь код, используемый для проверки и тестирования определенных условий данных (и позволит вам отменить). Если событие открытия не отменено, то происходит событие загрузки, и форма загружается.

Логически, на этом этапе это означает, что код, который устанавливает переменные или начальные значения элементов управления в форме, должен быть помещен в событие загрузки (фактически, элементы управления не могут быть изменены, а только проверены в событии открытия). , Таким образом, существует очень хорошая детализация и различие между двумя процессами, которые происходят в типичной загрузке формы. Также интересно отметить, что у большинства продуктов на рынке нет этих двух отдельных событий.

Как разработчик, вы размещаете соответствующий код и используете правильное событие для данной цели. Потребуется некоторый опыт использования доступа, чтобы выяснить, какое событие использовать для этих вещей. Вы можете спросить, есть ли книга, которая объясняет эту проблему, но это все равно, что спросить, есть ли книга, которая говорит вам, когда использовать поле со списком над списком? Я не думаю, что есть такая книга.

Документация для поля со списком объяснит, что такое поле со списком, и как его использовать. То же самое касается доступа к документации для открытого события. Вы можете прочитать, что делает on-open, но тогда вам, как разработчику, придется выяснить, когда уместно использовать это событие. То же самое касается случаев, когда целесообразно использовать поле со списком или поле со списком. В конце концов, единственным решением и тем, как узнать эти проблемы, будет ваш опыт работы с продуктом.

У меня есть статья, в которой говорится об использовании объектов класса в MS-доступе и о том, когда их использовать, здесь:

http://www.members.shaw.ca/AlbertKallal/Articles/WhyClass.html

Если вы ищете примеры кода от всего до форм и отчетов с использованием Windows API, отличная ссылка здесь:

http://www.mvps.org/access/

1 голос
/ 28 декабря 2009

Эта статья устарела, но дает отличную возможность рассмотреть Access как часть долгосрочной прикладной стратегии предприятия.

http://www.fmsinc.com/MicrosoftAccess/Strategy/index.asp

Сет

1 голос
/ 10 июля 2009

Одна вещь, которую вы не научите простому изучению Access, - это как создавать и использовать автономные модули классов. Они имеют некоторые аспекты объектной ориентации, но не очень много, но они могут быть чрезвычайно полезны для того, чтобы сделать ваш код более управляемым, так как вы можете обернуть множество операций в автономном модуле класса и затем рассматривать его как объект, который может иметь несколько экземпляров. Вы не получаете наследства, полиморфизма и многих других модных слов, которые идут вместе с Евангелием ОО, но стоит взглянуть на то, что они могут сделать, если вы никогда не использовали их широко.

1 голос
/ 09 июля 2009

У меня есть сочувствие - Access VBA не является объектно-ориентированным в каком-либо смысле, как Ruby. Вам придется изменить свое мышление при решении вопросов разработки в Access; такие приложения почти всегда ориентированы на концепцию строк и наборов данных, а не объектов. Пользовательский интерфейс часто привязан к строкам данных и задается таким образом, чтобы скрыть многие данные.

Сказав, что в Access можно создавать по-настоящему достойные обслуживаемые приложения с осторожностью и вниманием. Удачи.

0 голосов
/ 09 июля 2009

Взгляните на оператор Implements , то есть полиморфизм через интерфейсы. Это примерно так же хорошо, как VBA.

...