2016-12-13 11 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 

私はエラーが表示さForm_GENERIC.RecordSourcestrSQLを割り当てる場合。私は、メインフォームGENERICレコードソースに形成された文字列からデータを送信することはできません - それは誤り

ランタイムエラー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

文字列を連結するときは、各行の先頭または末尾にスペースを入れてください。それ以外の場合は、文字列が一緒にプッシュされ、エラーが表示されます。

など。あなたはこの

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 
関連する問題