2016-12-13 129 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。我无法从形成串数据发送到主窗体通用的记录源 - 这导致错误

运行时错误3141:SELECT语句包含保留字或拼写错误,或缺少,或标点符号的参数名不正确

绝对需要你的帮助!

+0

如何相关的记录显示?有没有子表单?您的表单描述不足以产生明确的答案。 – MoondogsMaDawg

+0

让我看看我是否得到了这个......当你点击'NAME'字段时,它会过滤当前表单(你没有提到是否有子表单,如果它是一个分开的子表单或什么将显示过滤的记录)。假设它处于电子表格模式。 – Lybren

+1

[如何在VBA中调试动态SQL](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 
相关问题