2016-12-16 16 views
0

私はAccess 2007を使用しています。子どもの特別なニーズをリストするリストボックスを含むフォームがあります。リストボックスは、子供のテーブルと特別なニーズが管理されたテーブルとの多対多の関係にあります。私は新しいレコードを追加しようとすると、リストボックスの値集合ソースが新しいレコードをフォームに追加するときにリストボックスをクリアする

SELECT Child.ID, Need.Category 
FROM Need INNER JOIN 
    (Child INNER JOIN [Child-Need] ON Child.ID = [Child-Need].[Child FK]) 
    ON Need.ID = [Child-Need].[Need FK] 
ORDER BY [Category]; 

で、リストボックスの内容は、既存のレコードに関連する値にロックされ続け、明確でありません。

リストボックスの内容をクリアして、ユーザーが新しい子供に関連するニーズを追加できるようにするにはどうすればよいですか?

その後、フォームのレコードからレコードに移動するとき、リストボックスの内容は、表示される最初のレコードの内容に残ります。おそらく、私は重大なエラーを持っているように見えます、おそらく私のSQLに!

+1

を参照してください? – GavinP

+0

Alas、no。それを試みた! –

+0

これはバインドされたフォームですか? – GavinP

答えて

0

フォーム負荷で以下のコードを使用してみてください:

Dim intItemsInList As Integer 
Dim intCounter As Integer 

intItemsInList = Me![lstTest].ListCount 

For intCounter = 0 To intItemsInList - 1 
    Me![lstTest].RemoveItem 0 
Next 
+0

残念ながらそれは動作しません。レコードがロックされているため、RemoveItemでエ​​ラーが発生します。 –

1

値集合ソースの形式で表示される現在の子への参照を持っていません。

私はあなたが

SELECT Child.ID, Need.Category 
FROM Need INNER JOIN 
    (Child INNER JOIN [Child-Need] ON Child.ID=[Child-Need].[Need FK]) 
    ON Need.ID=[Child-Need].[Need ID] 
WHERE Child.ID = Forms!frmChild!ID 
ORDER BY [Category]; 

(フォーム名でfrmChildを交換する)ようなものが必要だと思います。

フォームのOnCurrentイベントにはmyListbox.Requeryが必要なので、別のレコードに移動すると現在のデータが表示されます。

編集:それはサブフォームの場合、それは

WHERE Child.ID = Forms!frmFamily!frmChild.Form!ID 

のようなものだ `listboxName.requery`をRefer to Form and Subform properties and controls

+0

それは、Accessが受け入れるWHERE句の2番目の部分のための定式化を見つけることができないことを除いて、正しいと感じます。フォームが開くとき、そして子レコードのすべての変更時にIDとしてパラメータとして私に尋ねます。私がそれを供給すると、正しいデータが現れます。あなたは非常に近いです:私は 'Child.ID = Forms!frmFamilies!frmChild.Form!ID'になります。 –

+0

子フォームのOnCurrentイベントのコードの一部としてリストボックスのRowSourceを追加した場合、Accessはフォームを開く際にパラメータを要求しません。それが今では機能します。ありがとうございました! –

関連する問題