システムwiki

フォームのフィールドは編集できません.

LaurelS 受付中 最終更新日:2022-06-24 04:10

フォームのバインドされたフィールドにデータを入力できない原因は何ですか?フィールドにカーソルを置くことはできますが、数値を入力できません.フィールドは整数またはnullの場合があります.このフォームは、データを入力できる別のフォームに基づいています.これは、フォームのすべてのフィールドで問題になります.以下に3つのスクリーンショットを示します.

1-コントロールに関連すると思われる値.

2.正しいコントロールを見ているデモンストレーション.

3.フォームのレコードソース

SELECT tblScores.*、tblMatchGame.*、tblStudents.Personal_Goals、tblStudents.First_Name、tblStudents.Last_Name、tblPeriods.Sort_Order

tblScores、tblMatchGame、tblStudents、tblPeriodsから

WHERE(((tblScores.Score_ID)= [tblMatchGame].[Score_id])AND((tblStudents.Student_ID)= [tblScores].[Student_ID])AND((tblScores.Period_Code)= [tblPeriods].[Period_Code])AND ((tblScores.Student_ID)= [Forms]![frmMatchGame]![cboStudent_ID])AND((tblScores.Score_Date)= [Forms]![frmMatchGame]![txtScore_Date]))

ORDER BY tblPeriods.Sort_Order;

返信リスト(回答:10)

10 #
Scottge

フォームのレコードソースとしてマルチtableクエリを使用することはお勧めできません.多くの場合、そのようなクエリは編集できません.1つのフォームで複数のtableを処理するには、サブフォームやツールを使用する必要があります.

例:Studentstableを含める必要はありません.コンボボックスを使用してStudentの名前を表示できますが、StudentIDにバインドすることができます.

また、フォームは他のフォームではなく、tableに基づいていることに注意してください.また、フォームにフィールドがなく、tableのフィールドにバインドされている場合とされていない場合があるコントロールがあります.これは微妙ですが重要な違いです.

応答10# ->にスキップ
2 #
LaurelS

最初の投稿を編集しました.

4.Accessクエリデザインを使用して、結合を使用するSQLを取得しました.助けにはならなかった.

SELECT tblMatchGame.*、tblScores.*、tblperiods.Sort_Order

FROM(tblMatchGame INNER JOIN tblScores ON tblMatchGame.Score_ID= tblScores.Score_ID)INNER JOIN tblperiods ON tblScores.Period_Code= tblperiods.Period_Code WHERE

(((tblScores.Student_ID)= Forms!AfrmMatchGameNoInvisibles!cboStudent_ID)And((tblScores.Score_Date)= Forms!AfrmMatchGameNoInvisibles!txtScore_Date))ORDER BY Sort_order;

応答10# ->にスキップ
9 #
LaurelS

フォームのレコードセットを更新可能にするにはどうすればよいですか?シークレットが内部結合と外部結合を使用している場合、誰かが現在のSQLをその形式に変換する方法を教えてもらえますか? Accessを使用してから10年ほど経ちましたが、JOINSがどのように機能するかについて自信がありませんでした.

更新可能にしたいtableはtblMatchGameです.

2つのことが私に希望を与えてくれます.

1-あなたは、複数のtableが常にフォームを更新できないようにするわけではないという意見です:「多くの場合、そのようなクエリは編集できません.」

2-これが基づいていたフォームは複数のtableを使用します.クエリオブジェクトとtabletblStudentを削除しました.私のフォームのレコードソースは次のようになりました:

SELECT tblScores.*、tblMatchGame.*、tblPeriods.Sort_Order

tblScores、tblMatchGame、tblPeriodsから

WHERE tblScores.Score_ID= tblMatchGame.Score_id and tblScores.Period_Code= tblPeriods.Period_Code AND tblScores.Student_ID= Forms!frmMatchGame!cboStudent_ID And tblScores.Score_Date= Forms!frmMatchGame!txt

ORDER BY Sort_order;

更新可能なフォームのレコードソースは次のとおりです:

SELECT tblScores.*、tblStudents.Personal_Goals FROM(tblPeriods INNER JOIN tblScores ON tblPeriods.Period_Code= tblScores.Period_Code)INNER JOIN tblStudents ON tblStudents ON tblScores.Student_ID= tblStudents.Stu ((tblScores.Score_Date)= Forms!frmStudentPointsEntryLD!txtScore_Date))ORDER BY Sort_order;

応答9# ->にスキップ
5 #
Scottge

あなたが尋ねる; 「フォームのレコードセットを更新可能にするにはどうすればよいですか?」秘訣は、複数tableのクエリを使用しないことです!

繰り返しますが、秘密はサブフォームや「トリック」を使用することです

tblScoresにバインドされたメインフォームとtblMatchGameにバインドされたサブフォームを使用してみませんか.tblPeriodをtblScoresに含めて、並べ替え順序を取得できる場合があります.

したがって、編集可能なクエリを取得しようとする代わりに、Accessが提供するツールを使用してください.

応答5# ->にスキップ
4 #
LaurelS

現在設計されているフォームを使用する理由を説明する別の投稿を書くことができます. いくつかの理由があります. 今のところ、このフォームが編集できない理由に集中したいと思いますが、複数のtableを使用して、それが基づいていたフォームは編集可能です.

応答9# ->にスキップ
7 #
GroverP

フォームのレコードソースが編集可能かどうかを確認する方法は、フォームの外でフォームを開き、フォーム内のレコードを直接編集することです.

また、多くの場合、理由についてより多くの情報を提供するエラーメッセージが返されます.

アレンブラウンのサイトには クエリが編集できなくなる原因の簡単な要約.

応答7# ->にスキップ
6 #
LaurelS

提案をありがとう.私はそれをしましたが、エラーメッセージは表示されませんでした.データを変更できないだけです. さらに考えがありますか?

応答6# ->にスキップ
1 #
GroverP

フォームの外部でクエリのレコードを編集できないという事実は、問題がクエリの記述方法にあることを確認します.したがって、実行可能な唯一のオプションは、クエリを修正して編集可能にすることです.これは、おそらくフォームも変更することを意味します.

AllenBrowneのリストを参照してください.彼が言及していることの1つは、あなたが遭遇していることです.データを表示したりクエリをテストしたりできないため、データを完全に分析することはできません.

ただし、編集可能なversionと編集不可能なversionの違いは、後者にはtblMatchgameと呼ばれるtableへの結合が含まれていることです.そのtableを除外すると違いが生じます.なんで?アレン・ブラウンのリストを参照し、この観察に対して彼がリストしたそれぞれの理由を検討してください.

応答9# ->にスキップ
8 #
GroverP

議論をするつもりもなく、少し口論してもいいですか? 「複数のtableが常にフォームを更新できないようにするわけではないという意見です」

それはスコットの意見だけではなく、破壊可能な事実です.

応答8# ->にスキップ
3 #
LaurelS

わ!私は確かに私がスコットを信じなかったことを示唆するつもりはありませんでした.「あなたは私にそれを言った...」はどうですか 彼が解決策を見つける方法であることを私は大いに期待しています.