Определить таблицу в запросе выбора из значения текстового поля - PullRequest
0 голосов
/ 30 апреля 2020

У меня очень простой c запрос выбора в MS Access. Единственная переменная - я хочу, чтобы пользователь выбирал регион из выпадающего списка (поле со списком). Для каждого региона есть разные таблицы, поэтому я хочу, чтобы поле FROM извлекалось из поля со списком.

Мой запрос выглядит так:

    SELECT
       STOCK_CODE, STOCK DESCRIPTION

    FROM
       Forms![frm_MAIN_MENU]![txt_MAIN_MENU_REGION]

Когда я запускаю это, я получаю следующая ошибка:

«Синтаксическая ошибка в поле FROM»

Мне кажется, я где-то читал, что это невозможно? Если кто-то может, возможно, уточнить?

Спасибо

1 Ответ

1 голос
/ 30 апреля 2020

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

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

Сказав, что, если вы действительно хотите сделать это таким образом, это можно сделать в VBA. Предполагая, что [txt_MAIN_MENU_REGION] является вашим комбинированным списком и заполнено вашими регионами:

Private Sub txt_MAIN_MENU_REGION_AfterUpdate()
    On Error GoTo E_Handle
    Dim strSQL As String
    If Not IsNull(Me!txt_MAIN_MENU_REGION) Then
        strSQL = "SELECT STOCK_CODE, [STOCK DESCRIPTION] FROM " & Me!txt_MAIN_MENU_REGION
    End If
    Me!lstRegion.RowSource = strSQL
sExit:
    On Error Resume Next
    Exit Sub
E_Handle:
    MsgBox Err.Description & vbCrLf & vbCrLf & "frmRegion!txt_MAIN_MENU_REGION_AfterUpdate", vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume sExit
End Sub

С уважением,

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