クエリに対して作成したフォームで構文エラーが表示されます。変更するレコードへのアクセスを制限するフォームを作成しました。フォームにフィルターを設定しようとすると、フィルターしようとするすべての属性の構文エラーが表示されます。これは、クエリコード内の内部結合に()
がないことに関係があると思いますが、奇妙なのは、クエリを問題なくフィルタリングできることです。以下はクエリコードです。
SELECT CUSTOMER.[Product Number], SALESPERSON.[Salesperson Number],
SALESPERSON.[Salesperson Name], SALESPERSON.[Email Address]
FROM SALESPERSON INNER JOIN CUSTOMER ON
SALESPERSON.[Salesperson Number] = CUSTOMER.[Salesperson Number];
フォームのみが構文エラーを生成する理由、またはこれを修正する方法はありますか?
フォームのデザインビューに移動し、スペースのあるフィールド名を[]で囲むことで、すぐに修正できました。構文の問題に関する迷惑なポップアップなしで、組み込みのフィルターを使用できるようになりました。
同じ問題がありました。 Dedrenが言うように、問題はクエリではなく、フォームオブジェクトのコントロールソースです。 [コントロールソース]の各オブジェクトを[]で囲みます。例:Contol Source: [Product number]
、Control Source: Salesperson.[Salesperson number]
など.
Makitaは、クエリで参照している元のテーブルに行くことをお勧めします。スペースがないようにフィールドの名前を変更します。例:SalesPersonNumber
、ProductNumber
など。これにより、将来の多くの問題も解決します。 。幸運を祈ります!
スペースを削除して、フィールド名を有効にしてみてください。長いショットですが、実際に私を助けてくれました。
Recordsourceが動的なフォームでこれを行いました。
SQLは大丈夫でした、答えはエラーをトラップすることです!
Private Sub Form_Error(DataErr As Integer, Response As Integer)
' Debug.Print DataErr
If DataErr = 3075 Then
Response = acDataErrContinue
End If
End Sub
余分な()ブラケットは、フローの場合に問題を引き起こす可能性があります。これにより、クエリ式に構文エラー(演算子の欠落)も作成されます。
ダメダメダメ。
これらの答えはすべて間違っています。あなたの脳には根本的な欠如があり、今私はそれを改善しようとしています。
ここでの大きな問題は、命名スキームです。冗長で、望ましくない文字が含まれており、恐ろしく一貫性がありません。
最初:Salesperson
と呼ばれるテーブルは、_Salesperson.Salesperson number
_、_Salesperson.Salesperson email
_と呼ばれるテーブルの各フィールドを持つ必要はありません。すでにテーブルSalesperson
にいます。この表のすべてはSalesperson
に関連しています。あなたはそれを言い続ける必要はありません。
代わりに、ID
、Email
を使用してください。 Number
は予約語である可能性があるため、使用しないでください。データベースの有効期間中、すべてのフィールド名の周りに[]を入力することに本当に努力していますか?
Student
というテーブルの主キーは、ID
またはStudentID
のいずれかですが、一貫性があります。外部キーは、onlyが指すテーブルの名前にID
を続けたものでなければなりません。例:_Student.ID
_および_Appointment.StudentID
_。 ID
は常に大文字です。あなたのIDEが、あなたのIDEがID
になります。アクセスもID
が好きだからです。
Second:すべてのフィールドにスペースや特殊文字を付けずに名前を付け、できるだけ短くして、予約語と競合する場合は別の語を見つけます。
代わりに:_phone number
_はPhoneNumber
を使用するか、さらに良いことに単純にPhone
を使用します。 _what time user made the withdrawal
_を選択した場合、毎回それを入力する必要があります。
Third:そしてこれは最も重要 one:選択した命名スキームが常に一貫していることです。 「そのテーブルの郵便番号が必要です。名前はPostalCodeになります」と言うことができるはずです。命名規則に一貫性があるため、検索する必要さえなく、そのことを知っておく必要があります。
要約:簡潔で、冗長ではありません。名前をスペースなしで短くし、テーブル名を繰り返したり、予約語を使用したり、各単語を大文字にしたりしないでください。とりわけ、一貫性を保ってください。
アドバイスをいただければ幸いです。これが正しい方法です。私の答えは正しいものです。 絶対的な強迫観念に至るまで、あなたの命名スキームを非常につまらないものにしてくださいこの惑星での残りの人生のために。
注:実際には、テーブルのデザインビューとクエリでフィールド名を変更する必要があります。
同じフォームのメインテーブルの「デザインビュー」に移動し、スペースのあるフィールド名の間にnderline(_)を挿入することで、すぐに修正しました。構文の問題に関する迷惑なポップアップなしで、組み込みのフィルターを使用できるようになりました。
(Dredenが言うように)スペースのあるフィールド名を[]で囲みますクエリを保存し、閉じてから再度開きます
Access 2016を使用して、フィールド名の周りに[]を追加した後、クエリが保存されるまで、新しいクエリでエラーメッセージが表示されていました。
クエリを保存し(オブジェクトのリストに表示)、閉じて再度開くと、エラーメッセージが消えます。これはAccessのバグのようです。