ник: Vik
В свое время была похожая задачка. Таблица административных единиц KOATUU (область/район/сельсовет/населеный пункт) отображалась через TreeViev.
При выборе любой админединицы необходимо было отобразить информацию по всех входящив в нее "детях".
Решил следующим образом:
1. Таблицу дополнил полем Cheked (Boolean) для меток выделенных записей, которое в начале равно Fаlse.
2. При выделении узла поле Cheked этой записи получает значение True.
3. Дальше выполнялся через .Execute запрос на обновление, который менял Cheked на True для всех записей, являющихся дочерними (в Вашем случае - родительскими) относительно записей, в которых Cheked = True.
4. Execute повторно выполняется до того времени, пока количество обновленных записей (.RecordsAffected) > 0 .
5. В результате быстро, качественно и недорого в таблице все необходимые Вам записи имеют Cheked = True.
strSQL1 = "UPDATE Koatuu SET Koatuu.Checked = True " _
& "WHERE ((Koatuu.Key) = '" & CurKey & "');"
strSQL2 = "UPDATE Koatuu SET Koatuu.Checked = True " _
& "WHERE (((Koatuu.Checked)=False) AND ((Koatuu.Parent) " _
& " In (SELECT Koatuu.Key FROM Koatuu WHERE (((Koatuu.Checked)=True)))));"
Set qdf = dbs.QueryDefs("Temp")
qdf.SQL = strSQL1
qdf.Execute
qdf.SQL = strSQL2
Do
DoCmd.SetWarnings False
qdf.Execute
DoCmd.SetWarnings True
Loop While qdf.RecordsAffected > 0
|