Чтение из базы данных доступа и заполнение массива на основе двух полей из разных таблиц - PullRequest
0 голосов
/ 06 марта 2012

Я пишу приложение Excel, которое по сути выбирает значения на основе пользовательского ввода. Пользователь выбирает номер проекта, затем может выбрать из списка типов инструментов, оба из которых уже существуют в базе данных доступа. Однако, если с проектом не связан этот инструмент, я не хочу, чтобы этот инструмент отображался в списке. Например, скажем, пользователь выбрал проект № 15. С этим проектом связано 3 инструмента, например, их названия - «A», «C», «D». Другими словами, инструмент B не имеет никакого отношения к этому проекту.

У меня есть две разные таблицы базы данных, на которые я смотрю. Одна таблица имеет все имена инструментов и называется ToolNames. В другой таблице есть все файлы инструментов, в которых перечислены ассоциации проекта, она называется ToolFiles. Таким образом, в базе данных может быть несколько копий инструмента «C», которые просто зависят от количества данных в них.

Мне действительно нужно запросить таблицу ToolNames, основываясь на входных данных пользователя, которые можно проверить в таблице ToolFiles. Возьмите номер проекта, просмотрите базу данных ToolFiles для инструментов, а затем заполните имена записей инструментов с этим номером проекта, а затем запросите базу данных ToolNames и выберите только имена инструментов, которые обнаружились в базе данных ToolFiles. База данных ToolFiles может иметь несколько имен и дублированных имен инструментов.

Это заявление о присоединении, которое я имею до сих пор:

strSQL = "SELECT * " _
        & "FROM ToolNames t " _
        & "INNER JOIN ToolFiles f " _
        & "ON t.ToolName = f.Tool_Name " _
        & "WHERE f.Tool_Name = '" & theSelectedProjName & "' "
rs.Open strSQL  ' , cn, 3, 3

где ToolNames - это таблица, из которой я хочу получить значения, ToolFiles - это таблица, с которой я хочу сравнить поле с двумя именами инструментов.

Я знаю, что это сложный вопрос, и его трудно объяснить. Дайте мне знать, если есть что-то, что я могу уточнить. Заранее спасибо!

1 Ответ

0 голосов
/ 06 марта 2012

Почему бы не запросить базу данных, присоединив ToolNames к ToolFiles?Что-то вроде:

SELECT ToolName
FROM ToolNames t
INNER JOIN ToolFiles f
ON t.ToolID = f.ToolID
WHERE f.ProjectID = [ProjectID]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...