Как настроить среду разработки в Доступе MS

Мое решение найти ближайший индекс вместо значения

def nearest_ind(items, pivot):
    time_diff = np.abs([date - pivot for date in items])
    return time_diff.argmin(0)
7
задан Dave Nicks 21 May 2009 в 13:04
поделиться

8 ответов

Если все ваши пользователи используют внешний интерфейс, это НЕПРАВИЛЬНАЯ КОНФИГУРАЦИЯ.

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

Мне непонятно, как можно было бы разрабатывать ту же копию внешнего интерфейса, которую используют конечные пользователи, поскольку, начиная с A2000, это запрещено (из-за «монолитной модели сохранения», где весь VBA проект хранится в одном поле BLOB в одной записи в одной из системных таблиц).

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

  1. отключите КОМПИЛЯЦИЯ ПО ЗАПРОСУ в параметрах VBE.

  2. убедитесь, что вам требуется OPTION EXPLICIT.

  3. компилируйте код часто, после каждых нескольких строк кода - чтобы упростить эту задачу, добавляйте кнопку COMPILE на панель инструментов VBE (пока я на ней, я также добавляю кнопку CALL STACK).

  4. периодически делайте резервную копию своего внешнего интерфейса и декомпилировать и перекомпилировать код. Это достигается запуском Access с переключателем / decompile, открытием внешнего интерфейса, закрытием Access, открытием внешнего интерфейса с помощью Access (с нажатой клавишей SHIFT для обхода кода запуска), затем сжатием декомпилированного внешнего интерфейса (с помощью SHIFT клавишу), затем компилируем весь проект и в последний раз уплотняем. Вы должны сделать это до любого крупного выпуска кода.

Еще несколько мыслей:

  1. вы не говорите, сервер ли это Windows. Серверы Linux, доступ к которым осуществляется через SAMBA, в прошлом демонстрировали проблемы (хотя некоторые люди клянутся ими и говорят, что они намного быстрее, чем серверы Windows), и исторически на серверах Novell необходимо было настроить параметры, позволяющие надежно редактировать файлы Jet. Есть также некоторые настройки (например, OPLOCKS), которые можно настроить на сервере Windows для улучшения работы.

  2. Храните свои MDB Jet в общих папках с короткими путями. \ Server \ Data \ MyProject \ MyReallyLongFolderName \ Access \ Databases \ будет намного медленнее читать данные, чем \ Server \ Databases. Это действительно имеет огромное значение.

  3. связанные таблицы хранят метаданные, которые могут устареть. Есть два простых шага и один решительный, чтобы исправить это. Сначала уплотните заднюю часть, а затем уплотните переднюю часть. Это очень просто. Если это не помогает, полностью удалите ссылки и воссоздайте их с нуля.

  4. вы также можете рассмотреть возможность распространения MDE среди ваших конечных пользователей вместо MDB, поскольку он не может распаковать (что может сделать MDB).

  5. см. Tony Toews's Performance FAQ для получения другой обобщенной информации о производительности.

12
ответ дан 6 December 2019 в 19:41
поделиться

1) Повторно связать таблицы доступа из кода http://www.mvps.org/access/tables/tbl0009.htm

Когда я готов опубликовать новый MDE для пользователей, я повторно связываю таблицы, создаю MDE и копирую MDE в server.

2) Я специально создал бесплатную утилиту Auto FE Updater, чтобы я мог вносить изменения в FE MDE так часто, как я хотел, и был вполне уверен, что в следующий раз, когда кто-то запустит приложение, оно загрузит Последняя версия. Для получения дополнительной информации об ошибках или утилите Auto FE Updater см. Бесплатную утилиту Auto FE Updater по адресу http://www.granite.ab.ca/access/autofe.htm на моем веб-сайте, чтобы сохранить FE на каждом ПК в актуальном состоянии.

3) Теперь, работая на сайте у клиентов, я делаю обновления в структуре таблицы в нерабочее время, когда все находятся вне системы. См. КАК: определить время простоя или бездействие пользователя в Access 2000 (Q210297) http: //support.microsoft.com/?kbid=210297 ACC: Как определить время простоя или бездействия пользователя (Q128814) http://support.microsoft.com/?kbid=128814

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

Кроме того, предварительный просмотр печати иногда не позволял пользователям запускать пункт меню для экспорта отчета в Excel или другие. Поэтому вам нужно было щелкнуть правой кнопкой мыши на предварительно просмотренном отчете, чтобы вернуть некоторую внутреннюю сосредоточенность на отчете, чтобы они могли затем экспортировать его. Этому также способствовало увеличение таймера до пяти минут.

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

4) Что касается другого человека, комментирующего сценарии и тому подобное, для обновления схемы см. Compare'Em http: / /home.gci.net/~mike-noel/CompareEM-LITE/CompareEM.htm. Хотя у него есть свои особенности, он создает код VBA для обновления таблиц, полей, индексов и отношений.

2
ответ дан 6 December 2019 в 19:41
поделиться

Используйте VBA, чтобы разъединить и повторно связать ваши таблицы с новой целью при переключении с разработчика на продукт. Мне потребовалось много лет, чтобы запомнить синтаксис - я просто знаю, что эту функцию просто написать.

Или используйте MS-Access, чтобы общаться с MS-Access через ODBC, или какое-либо другое соединение для передачи данных, которое находится за пределами client mdb.

Как и в случае со всеми базами данных файловой базы, вы в конечном итоге столкнетесь с проблемами при пиковом использовании или при переходе к небольшому магическому числу где-то между 2 и 30.

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

Что касается производительности, данные обрабатываются на стороне клиента, поэтому вы можете использовать что-то вроде netmeter, чтобы посмотреть, сколько данных передается по сети.

1
ответ дан 6 December 2019 в 19:41
поделиться

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

Изменить, чтобы ответить на комментарий: Нет простого способа управлять исходным кодом базы данных Access в ее собственном формате, но файлы схемы - это просто текстовые файлы, как и любые другие. Следовательно, вы можете регистрировать их в программном обеспечении управления версиями по вашему выбору для упрощения управления версиями / отката.

Или, конечно, это зависит от того, что у вас есть набор сценариев, настроенных для восстановления вашей базы данных из схемы . Как только вы это сделаете, обычно довольно просто создать вариантную / альтернативную версию, которая перестраивает ее в другом месте, что позволяет вам создавать тестовые среды из любой предыдущей зафиксированной версии схемы. Надеюсь, это немного проясняет!

0
ответ дан 6 December 2019 в 19:41
поделиться

Многие хорошие предложения от других людей. Вот мои 2 миллицента. Мои внутренние данные находятся на сервере, доступ к которому осуществляется через сопоставление дисков. В моем случае привод Y. Производственные пользователи получают отображение через сценарий входа в систему с использованием активного каталога. Затем с помощью командного файла легко выполняются следующие сценарии:

  • Разработка для локального компьютера путем выполнения команды subst в командном файле
  • запуск отчетов по данным прошлых ночей путем указания Y на сервер резервного копирования (только чтение)
  • запускать отчеты по данным на конец месяца, указывая на правильный каталог
  • , тестировать специальные сценарии, сохраняя специальный каталог

В моей среде (в среднем 5 одновременных пользователей, 1000 строк, а не 10 000) произошло повреждение , но это редко и управляемо. Лишь однажды за последние несколько лет мы прибегали к резервному копированию в предыдущие дни. Мы используем SQL Server для наших более объемных задач, но это не так удобно для разработки, вероятно, потому что у нас нет администратора SQL на сайте.

1
ответ дан 6 December 2019 в 19:41
поделиться

Вы должны понимать, что общий MDB-файл для данных не является надежным решением. Microsoft предположила бы, что SQL Server или какая-либо другая база данных на основе сервера будет гораздо лучшим решением и позволит вам использовать тот же интерфейс доступа. Мастер миграции поможет вам выполнить переключение, если вы захотите пойти по этому пути.

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

Чтобы понять проблемы с производительностью, вы должны понимать, что для сервера файл mdb с данными в нем просто файл. Поскольку на сервере не выполняется код, сервер не распознает транзакции, блокировку записей и т. Д. Он просто знает, что существует файл, который группа людей пытается читать и записывать одновременно.

С системой баз данных, такой как SQL Сервер, Oracle, DB2. MySQL и т. Д. Программа базы данных запускается на сервере и смотрит на сервер как на единую программу, обращающуюся к файлу базы данных. Это программа базы данных (работающая на сервере), которая обрабатывает блокировку записей, транзакции, параллелизм, ведение журнала, резервное копирование / восстановление данных и все другие приятные вещи, которые требуются от базы данных.

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

-1
ответ дан 6 December 2019 в 19:41
поделиться

Есть два правила для разработки на основе оперативных данных

Первое правило. . . никогда не развиваться против данных в реальном времени. Никогда.

Второе правило. . . никогда не развивать против данных в реальном времени. Никогда.

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

Приложение работает медленно, потому что это MS Access, а не не нравится многим одновременным пользователям (где много - любое число> 1).

-2
ответ дан 6 December 2019 в 19:41
поделиться

Если вы хотите автоматически обновлять внутреннюю схему MDB при выпуске нового FE для клиентов, см. Compare'Em http://home.gci.net/~mike -noel / CompareEM-LITE / CompareEM.htm с радостью сгенерирует код VBA, необходимый для воссоздания MDB. Или код для создания различий между двумя MDB, чтобы вы могли обновить версию уже существующего BE MDB. Это немного странно, но работает.

Я использую его постоянно.

0
ответ дан 6 December 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: