Доступ к таблицам из разных файлов .mdb - PullRequest
0 голосов
/ 01 февраля 2010

Мне нужно показать сетку сохраненных проектов (сравните «заказы») в сетке данных, где проекты сохраняются в базе данных Access 2000 с похожей схемой следующим образом:

ID     Name      Country_ID   Plant_Type
1      'Test'    1            1
2      'Second'  2            2

Давайте назовем файл "Projects.mdb". Это тогда показано в таблице данных как:

ID     Name      Country      Plant Type
1      'Test'    'Germany'    'Free Range'
2      'Second'  'France'     'Inclined Roof'

, где страны и «Типы растений» выбираются из другой таблицы в другом файле .mdb (также Access 2000, назовите его «Language.mdb», хотя в нем много разных фоновых данных), в зависимости от на предпочтения языка текущего пользователя. К сожалению, это не альтернатива объединить эти .mdb в один файл.

Чтобы показать сетку данных, я до сих пор связывал таблицы из «Language.mdb» в «Projects.mdb», но это оборачивается, когда проект устанавливается на другой компьютер с созданным мною MSI-файлом (мы Мне бы хотелось, чтобы это было легко упаковано и установлено), поскольку «Language.mdb» не существует в связанном пути на целевом компьютере (в основном проблема здесь ). Я могу предложить следующие решения:

  • Заставить всех пользователей устанавливать по одному и тому же пути, чтобы ссылки работали (нежелательно)
  • Используйте строки соединения в запросе, как показано здесь, на MSDN (все еще пробую, но мне нужно поработать над деталями)
  • создайте сценарий после установки, который связывает таблицы в соответствии с правильным путем.

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

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Чтобы обойти проблему «разных путей установки», я использую код (при каждой загрузке базы данных), который сначала ищет любые внутренние базы данных в текущей папке db; если он не найден, он просит пользователя найти отсутствующий файл .mdb. Затем код связывает базы данных. Как только базы данных успешно связаны, база данных сохраняет путь и сначала проверяет этот путь при последующих загрузках.

0 голосов
/ 01 февраля 2010

Разделяется ли Project должным образом, чтобы разрешить интерфейс на компьютере каждого пользователя? Если да, то не можете ли вы сохранить путь на внешнем интерфейсе и только повторно связать его, если он изменится? Код для повторного связывания таблиц по большей части довольно прост. Пользователю может быть разрешено просматривать местоположение, а свойство Connect может быть соответствующим образом обновлено.

0 голосов
/ 01 февраля 2010

Ну, исходя из ограничений, которые вы наложили на решение. Я бы выбрал вариант 2 или 3. Для этого нет элегантного решения.

Я бы, однако, склонялся к вашему третьему варианту, как «одноразовому» исправлению для связывания файлов, чтобы путь между ними был известен, и вы не добавляли информацию о пути динамически в каждый запрос.

примечание

Я просто упомяну, но я уверен, что вы уже знаете это, что, если вы хотите сделать что-то подобное, просто неправильно делать это с Access, не говоря уже о доступе к 2000 в это время для клиента. развертывания. Я настоятельно рекомендую дополнительно по-настоящему оценить решение и посмотреть, сможете ли вы слить его с одним или перейти на SQL Server Express или что-то, что вы могли бы отправить пользователю в качестве установщика

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