Лучший способ сравнения таблиц с использованием только MS Office и C # - PullRequest
0 голосов
/ 10 мая 2011

Работа над любимым проектом, касающимся эффективности и данных, и это миссия:

У меня есть база данных Access с x количеством таблиц, каждая из которых содержит от 2000 до максимум около 15000 записей в формате [отгрузка] [коробка] [серийный номер] [имя] [регион]. Теперь у меня есть другая таблица (называемая Bluuur) с n количеством записей, и я хотел бы сравнить эту таблицу (содержит сериалы) со всеми таблицами в БД Access и вернуть совпадения серийных номеров вместе с именем записи, которая соответствовала , Таким образом, вывод должен быть примерно таким: Тимми 360 (для сравнения, у Тимми было 360 матчей против Блюура)

примечание: я разрабатываю приложение для этого

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Я бы использовал OleDbConnection со строкой подключения, например:

OleDbConnection connToFile = new OleDbConnection(String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=""Excel 8.0;HDR=Yes"";", fileName));

Аналогично для MS Access.Затем загрузите обе таблицы в память и сравните.

Обновление Ладно, извините, что я не получил ваш вопрос изначально.Ответ будет более зависеть от требований:

  1. Является ли таблица в XLS статической или динамической?Если он статический, импортируйте XLS в MS Access и, если вам просто нужно получить значения для себя, используйте редактор запросов для выбора и объединения таблиц, таких как: выберите a.Name, count (b.ID) из таблицыA внутреннее соединениеtableB b для группы a.Name = b.Name по a.Name
  2. Если таблица в XLS является динамической, но вам снова нужно работать с ней для собственных целей, создайте связанный источник данных в MSПолучите доступ к этому файлу XLS и снова используйте редактор запросов для выполнения выбора.
  3. Если цель всего этого - создать веб-страницу / приложение, которое будет подключаться как к Microsoft Access, так и к XLS и присоединитсяданные, и вы будете делать это регулярно, у вас есть 2 потенциальных решения: сделать это в памяти или сделать это с помощью сохраненного запроса, а затем использовать OleDbConnection / OleDbDataAdapter для загрузки данных в приложение и отображения их пользователю.Подход с использованием памяти может быть не самым лучшим по производительности, поэтому напишите запрос MS Access, который объединит и сгруппирует данные, как вам нужно, и использует OleDbConnection для подключения файла MDB MS Access и выполнения запроса.ИЛИ, если вам нужно сделать это для нескольких таблиц в MS Access, напишите текст запроса непосредственно в коде, выполните для каждого соединения, а затем суммируйте результаты.
0 голосов
/ 10 мая 2011

Если я правильно истолковываю данные, то одна таблица (с которой нужно сравнить) отсутствует в БД MS Access.Быстрое решение выглядит следующим образом: импортируйте таблицу «Bluur» в базу данных Access (наиболее вероятно, что это возможно с помощью мастера импорта данных Access).Теперь вы можете использовать простые запросы JOIN для проверки всех остальных таблиц в БД.

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