Приложение Visual C ++ в качестве интерфейса к базе данных MS Access - многопользовательский доступ к данным и вопросы графического интерфейса в стиле Canvas - PullRequest
4 голосов
/ 09 июля 2009

В компании, в которой я работаю, мне дали возможность написать приложение, которое заменило бы старую рабочую книгу Excel, которая используется для планирования производственной очереди. Поскольку VBA был прост, а Excel прост в использовании, в течение нескольких лет эта книга использовалась несколькими людьми для планирования / добавления изменений / заметок о текущем состоянии производства. Вся рабочая книга имеет несколько функций (дополнительная информация о продуктах хранится на разных листах и ​​т. Д.), Но не хватает многих.

Я набросал, как это выглядит (я воссоздал его по памяти, упростил макет, чтобы его можно было прочитать):

workbook

Это всего лишь эскиз, но оригинальный так же безобразен, непрактичен и ограничен, как этот.

Я надеялся создать приложение на основе простых форм, которое могло бы использоваться по крайней мере несколькими людьми одновременно (у каждого была своя копия, хотя все копии использовали бы одну базу данных MS Access для хранения информации).

Что мне нужно знать, если я планирую это сделать? Каковы рекомендации по созданию многопользовательских приложений?

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

Ответы [ 6 ]

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

DevExpress Winforms Scheduler не является бесплатным - но, похоже, он сделает почти все, что вам нужно. Использование такого компонента, как этот (есть другие), скорее всего, будет дешевле для вашей организации, чем создание с нуля: плюс я обнаружил, что сотрудники DevExpress предоставляют первоклассную поддержку и помощь.

Хотя их образцы ориентированы в основном на C # и VB.NET, с Managed C ++ это будет прекрасно работать.

Как уже говорили другие, избегайте доступа к хранилищу данных. Если это однопользовательская система, возможно, вы захотите рассмотреть простой XML, или если реляционная база данных требуется для таких движков, как базы данных, такие как MySQL или SQL Server, определенно лучше.

3 голосов
/ 14 июля 2009

Как кто-то, у кого довольно большой объем кода застрял в Access, я рекомендую, если это вообще возможно, запустить либо ms sql, либо предпочтительно mysql. Не беспокойтесь слишком сильно, перенести БД в один из них не очень сложно. Тогда у вас есть широкий выбор инструментов на выбор. После перемещения данных определите, что является правильным инструментом. В мире открытого исходного кода есть много хороших графических инструментов для написания отчетов, которые мне нравятся, например, Birt, который может работать с большинством БД. Доступ - это настоящий тупик, хороший для быстрых взломов, но ужасный для жизни ...

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

Если вы уже собираетесь переписать / переопределить то, что у вас есть, я бы держался подальше от доступа.

Возможно, вам лучше (по времени и деньгам) купить контроль у одного из известных поставщиков.

2 голосов
/ 19 июля 2009
  1. Я бы не использовал C ++ для этого, в этом нет особой необходимости. Я бы предложил VB.NET или C # ... если, конечно, вы уже хорошо знакомы с C ++, а не с другими языками.

  2. Отсутствует бесплатный элемент управления, который поставляется с .NET Framework для выполнения того, что вы описали. Сторонние элементы управления, предложенные здесь другими, великолепны. Есть еще один на http://www.janusys.com

  3. Многопользовательские сетевые системы баз данных не должны быть реализованы с использованием Microsoft Access, поскольку они не совсем хорошо работают в этой конкретной среде. Вы могли бы использовать что-то вроде WCF для взаимодействия с файлом MDB для доступа, и чтобы все приложения говорили с компонентом WCF, но это абсолютно ненужный IMO. Я бы порекомендовал использовать Microsoft SQL Server 2008 Express. Очень мощный и бесплатный для определенного количества пользователей. Если вы хотите открыть исходный код, я бы рекомендовал использовать Postgres вместо MySql. Это только моя рекомендация, так как я считаю, что это лучшая система в соответствии со стандартами реляционных баз данных.

  4. Попробуйте использовать некоторые сторонние инструменты, такие как subsonic, для взаимодействия с вашей базой данных. Очень полезно и довольно просто в использовании. www.subsonicproject.com.

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

Я согласен - используйте практически все, кроме доступа к MS. Это может звучать дешево и легко, но есть много других дешевых и простых способов сделать что-то (что не заставит вас спать ночью).

Если вы ищете способы представить это, вы могли бы взглянуть на эту диаграмму Серебра Ганта .

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

Моя память говорит мне, что в Access была опция «Мастер увеличения» для переноса БД в SQL. Это позволит вам использовать сервер SQL вместо одного файла Ms Access.

см. http://support.microsoft.com/default.aspx?scid=kb;en-us;Q237980

Проблема с использованием Acess db заключается в том, что файл блокируется при его открытии. Это означает, что у мультипользователей будет большая проблема, если более чем один человек захочет написать / прочитать. XML также не является хорошим вариантом, потому что это всего лишь один файл, и у него также могут возникнуть проблемы с несколькими пользователями. XML тоже медленный и занимает много памяти. Если ваши данные будут расти, это не будет хорошим вариантом. Реальная база данных SQL не страдает этой проблемой и позволяет нескольким пользователям.

Что касается элементов управления для вашего интерфейса. Я не знаю ни одного стандартного элемента управления, который бы делал то, что вы хотите. Возможно, вам лучше сделать свой собственный элемент управления.

Глядя на ваш эскиз, он выглядит очень похоже на диаграмму Ганта (например, проект Ms)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...