バッチ番号を列としてではなくテーブル名に入れることで、スキーマでデータをエンコードしています。これはベストプラクティスではないため、私の意見では、正しい答えはデータベース設計を変更することです。
Batch
現在のテーブルのすべての列を含む単一のテーブルを作成しますが、主キーの一部としてBatchNo
名前が付けられた列を追加します。BatchNo
BatchNoテーブルからこのテーブルにすべてのデータをロードしてから、それらのテーブルを削除します。そうすると、クエリは次のようになります。
SELECT Fruit, Date
FROM Batch
WHERE
Fruit = "Apples"
AND BatchNo = [Enter Batch No];
テーブル名にデータを入れないでください。これは、データベースの作成方法ではありません。
少し説明すると、現在の設計がベストプラクティスに違反している理由は、まさに現在直面している問題によるものです。そのような設計で作業し、合理的でデータ駆動型の方法。
ユーザーにテーブル名を入力させることにより、ユーザー提供のテーブル名を許可されたテーブル名のホワイトリストと比較することにも注意を払わないと、SQLインジェクションの危険性も生じます。これはAccessではそれほど大きな問題ではないかもしれませんが、それでも間違った道を進んでおり、専門的なデータベース作業以外の何かのためにトレーニングを行っています。キャリアを伸ばしたいと思ったら、正しいやり方を学ぶために「きれいな状態」から始める前に、まずたくさんのことを学ばなくてはならないのは残念です。