2016-12-13 2 views
-2

Моя форма делится на заголовок формы, раздел «Детали» и нижний колонтитул формы (режим разработки). Все поля таблицы перечислены в разделе Подробные сведения.MS ACCESS - изменение данных динамически в форме

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

Я написал процедуру на VB:

Private Sub GE_PERSON_Click() 

Dim strSQL As String 

strSQL = "SELECT GENERIC.GE_ID, GENERIC.GE_OPEN AS [OPEN], Workforce.WF_NAME AS PERSON, [GENERIC].[GE_DATEIN] AS RECEIVED, GENERIC.GE_DATEREQUESTED AS [STARTING DATE], GENERIC.GE_CONSECUTIVE AS CONSECUTIVE, GENERIC.GE_AMOUNT AS [DAYS TAKEN], ABSENCE.AB_TYPE AS [ABSENCE TYPE], [GENERIC].[GE_STATUS] AS STATUS" 
strSQL = strSQL + "FROM (GENERIC INNER JOIN Workforce ON GENERIC.[GE_PERSON] = Workforce.[WF_ID]) INNER JOIN ABSENCE ON GENERIC.[GE_TYPE] = ABSENCE.[AB_ID]" 
strSQL = strSQL + "WHERE WORKFORCE.[WF_NAME] = " + Form_GENERIC.GE_PERSON 
strSQL = strSQL + "ORDER BY GENERIC.GE_DATEREQUESTED;" 

Form_GENERIC.RecordSource = strSQL 

End Sub 

Когда Поручаю strSQL к Form_GENERIC.RecordSource я получаю сообщение об ошибке. Я не могу отправить данные из сформированной строки в основной форме Источник GENERIC записи - это вызывает ошибку

Runtime Ошибка 3141: ЗЕЬЕСТ включает зарезервированное слово или аргумент Ошибочные или отсутствуют, или пунктуация неверный

Определенно нужна ваша помощь, ребята!

+0

Как отображаются связанные записи? Есть ли подчиненная форма? Ваше описание формы недостаточно для создания окончательного ответа. – MoondogsMaDawg

+0

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

+1

[Как отлаживать динамический SQL в VBA] (http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

ответ

1

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

E.g. если вы сделаете это

strSQL = "SELECT field1, field2" 
strSQL = strSQL + "FROM table" 

Вы в конечном итоге с этим

"SELECT field1, field2FROM table" 

Добавить пробел, чтобы предотвратить ошибку

strSQL = "SELECT field1, field2" 
strSQL = strSQL + " FROM table" 
       ^
        put a space at the start of each concatenated line 
Смежные вопросы