人物 Person_Pet ペット
データ入力フォームを作成する必要があります。Person という名前のテーブルがあり、その中に適切なフィールドがあるとします。私のフォームでは、ユーザーが持つことができるすべての可能なペットを表す (1 つまたは複数の) チェックボックスから選択できるようにする必要があります (アイテムの固定リスト: 犬、サーバル、ラマ、ジャッカロープ、エミュー、ドラゴン、スパイダー...) .
フォームには、可能な選択肢を表すチェックボックスが 1 つ必要です。その人がペットの犬を飼っている場合、そのチェックボックスは true である必要があり、犬を飼っていない場合は false である必要があります (サブフォームとしてこれを実行しようとして行き詰まったので、明らかなことを述べていると思います。 「多対多」と「偽」の価値のあるものを表示する. 彼らは複数を選択することができます.
最終的には、新しいフォームを作成するか、変更などのためにデータ入力フォームを再利用する必要があります。
これはサブフォームですか?Person テーブル、Pet テーブル、Person_Pet (id/joining) テーブルがあります。私は VBA でこれをすべて行おうとしていますが、難しい方法を選んだと思いますが、方向を変えるのに遅すぎることはありません。
編集:これから始めたらどうですか?考えられるすべてのペットのリストが表示され、 p.personid が null の場合、チェックボックスはチェックされません。null でない場合はチェックされます。これは可能ですか?(書式設定を許してください、アクセスSQLライターは明らかにタブが何であるかを知りません。テーブル名をすばやく検索して置換する必要があったため、sytanxエラーを許します)
select pet.*, p.personid
from pet pet
left outer join
(select pi.petID, pi.personid
from person,
pet_person pi,
pet
where person.id = pi.personID and
pet.id = pi.petID) as p
on p.petID = pet.id
編集:
わかった。そこに大きな答えがあります。私もそれを解決しました。私はあなたの答えを見ていませんが、少しだけ見ていきます。これが私の答えです...(サブフォームはありません。すべてメインフォームの「人」フォームにあります)
- チェックボックスを作成し、chk1、chk2、chk3 などの名前を付けます。
- それらが私のlil petテーブルの適切なフィールドに対応していることを確認してください....犬= chk1、serval = chk2 ...など
- このvbaを実行します(そしてForm_Current()から関数を呼び出してme.idに渡します):
Function update_checkboxes(issueID As Variant) Dim query As String Dim rs As DAO.Recordset Dim db As Database Set db = CurrentDb Dim a As String
If Not IsNull(issueID) Then
query = "SELECT iif(joined.issueid is null, 0, 1) as binval, payer.* " & _
"FROM payer AS payer LEFT JOIN (select ri.issueid, ri.payerid " & _
"from issue i, payer r, payer_issue ri " & _
"where i.id = ri.issueid and r.id = ri.payerid and ri.issueid = " & issueID & _
") AS joined ON joined.payerid = payer.id;"
Else
query = "select 0 as binval, payer.* from payer"
End If
Set rs = db.OpenRecordset(query)
rs.MoveFirst
Do While Not rs.EOF
s = rs.Fields("CorrespondingChkboxNumber")
Me.Controls("chk" & s).Value = rs.Fields("binval")
rs.MoveNext
Loop
rs.Close
End Function
うん。そのコピペコード形式のstackoverflowのことは私を嫌っています。ごめん。うーん。発行者 = 人、支払人 = ペット。対応するチェックボックスがアイデアではないことはわかっています。文字列フィールドを検索/チェックする必要がありますが、これは、次の場合を除き、最終的に使用する可能性があると思われるものの概念を示しています..... .........
フォローアップの質問: レコードが変更されるたびにこれらの vba クエリを実行すると、重大な時間制約の問題/結果/合計がありますか?
ところで。ご参考までに。選択された回答で可能な回答を示したいという欲求は、物事が何であるかと同じくらい重要である場合があるためです。一部の地域/郡/自治体では、ピットブルを許可しません。カリフォルニア州全体が明らかにフェレットを禁止しています。私はピットブルを飼っています。私はフェレットを飼っていません。私たちは皆、訓練するペットのドラゴンがいたらいいのにと思っています。これらはすべて、一部の地域ではペット禁止リストに載っているため、.... これらの両方を表示する必要があります。リストボックスでもできますが、少し見にくいと思います。考えられるすべてのペットを目に見えるようにリストすることで、どのペットがフラグを立てているかがわかります。最終的には、私が何を持っているかだけが本当に重要ですが........それでも。しかし明らかに、私は人やペット、そして彼らが住む場所のためのかわいい小さなアクセスデータベースを作っているわけではありません.