Почему сьрасывается флажок в отчете на NULL при изменинении источника записей отчета?

Kostyanoid
Дата: 12.01.2012 10:01:46
Есть отчет.
В отчете стоит флажок.
Смысл в том, чтобы при включении/выключении флажка в отчет добавлялись/удалялись соответсвующие записи.
Свойство флажка "тройное состояние" установлено "нет".
Тем не менее при загрузке отчета состояние флажка null. Но с этим понятно как бороться.
При этом при изменении источника записей отчета (для реализации вышеуказанного функционала) флажок сбрасывается на null.

Подпрограмма выглядит так:
Private Sub Ôëàæîê_ÀÈÏ_Click()

Dim str, strAIP As String


i1 = Ôëàæîê_ÀÈÏ.Value
If Ôëàæîê_ÀÈÏ.Value = True Then
    strAIP = "((Ëèìèòû.Èñòî÷íèê) = 1)"

Else
    strAIP = "((Ëèìèòû.Èñòî÷íèê) is Null)"

End If

str = "SELECT Îáúåêòû.Îòðàñëü, Ïðîöåäóðû.Êîä_ïðîö, Ïðîöåäóðû.Ïðåäìåò, Ïðîöåäóðû.[Òèï êîíòðàêòà], Ïðîöåäóðû.Ñïîñîá, Ïðîöåäóðû.ÍÌÖÊ, Ïðîöåäóðû.Ëèìèò, Ïðîöåäóðû.[Ñðîê îêîí÷àíèÿ], Ïðîöåäóðû.Ïóáë, Ïðîöåäóðû.Îêîí÷_çàÿâ, Ïðîöåäóðû.Äàòà_ïðîö, Ïðîöåäóðû.Ññûëêà, Äîêóìåíòàöèè.Ñòàòóñ, Ñòàòóñ.Êîä_ñòàò, Îòðàñëè.Êîä_îòðàñëè, Ëèìèòû.Èñòî÷íèê, Ëèìèòû.Ðàñøèôðîâêà, Äîêóìåíòàöèè.Äàòà_ïåð" _
& " FROM (Ñòàòóñ INNER JOIN (Äîêóìåíòàöèè INNER JOIN Ïðîöåäóðû ON Äîêóìåíòàöèè.Ïðîöåäóðà = Ïðîöåäóðû.Êîä_ïðîö) ON Ñòàòóñ.Ñòàòóñ = Äîêóìåíòàöèè.Ñòàòóñ) INNER JOIN (Îòðàñëè INNER JOIN ((Îáúåêòû INNER JOIN Ïðîö_Îáúåêòû ON Îáúåêòû.Êîä_îáúåêòà = Ïðîö_Îáúåêòû.Êîä_Îáúåêòà_Ñâçÿü) INNER JOIN Ëèìèòû ON Îáúåêòû.Êîä_îáúåêòà = Ëèìèòû.Îáúåêò) ON Îòðàñëè.Îòðàñëü = Îáúåêòû.Îòðàñëü) ON Ïðîöåäóðû.Êîä_ïðîö = Ïðîö_Îáúåêòû.Êîä_Ïðîö_Ñâÿçü" _
& " GROUP BY Îáúåêòû.Îòðàñëü, Ïðîöåäóðû.Êîä_ïðîö, Ïðîöåäóðû.Ïðåäìåò, Ïðîöåäóðû.[Òèï êîíòðàêòà], Ïðîöåäóðû.Ñïîñîá, Ïðîöåäóðû.ÍÌÖÊ, Ïðîöåäóðû.Ëèìèò, Ïðîöåäóðû.[Ñðîê îêîí÷àíèÿ], Ïðîöåäóðû.Ïóáë, Ïðîöåäóðû.Îêîí÷_çàÿâ, Ïðîöåäóðû.Äàòà_ïðîö, Ïðîöåäóðû.Ññûëêà, Äîêóìåíòàöèè.Ñòàòóñ, Ñòàòóñ.Êîä_ñòàò, Îòðàñëè.Êîä_îòðàñëè, Ëèìèòû.Èñòî÷íèê, Ëèìèòû.Ðàñøèôðîâêà, Äîêóìåíòàöèè.Äàòà_ïåð" _
& " HAVING (" & strAIP & " AND ((Ëèìèòû.Ðàñøèôðîâêà) Is Null));"

Report_Ïëàí_ïðîö.RecordSource = str

End Sub


(Прошу прощения за иероглифы, не могу с этим ничего сделать :( )

Помогите, пожалуйста, как исправить ситуацию? Есть ли обходные пути?
alvk
Дата: 12.01.2012 10:15:53
Kostyanoid,

и в русской и в аншлийской раскладке клавиатуры иероглифы при копировании?
Kostyanoid
Дата: 12.01.2012 11:01:48
alvk,

Private Sub Флажок_АИП_Click()

Dim str, strAIP As String


i1 = Флажок_АИП.Value
If Флажок_АИП.Value = True Then
    strAIP = "((Лимиты.Источник) = 1)"

Else
    strAIP = "((Лимиты.Источник) is Null)"

End If

str = "SELECT Объекты.Отрасль, Процедуры.Код_проц, Процедуры.Предмет, Процедуры.[Тип контракта], Процедуры.Способ, Процедуры.НМЦК, Процедуры.Лимит, Процедуры.[Срок окончания], Процедуры.Публ, Процедуры.Оконч_заяв, Процедуры.Дата_проц, Процедуры.Ссылка, Документации.Статус, Статус.Код_стат, Отрасли.Код_отрасли, Лимиты.Источник, Лимиты.Расшифровка, Документации.Дата_пер" _
& " FROM (Статус INNER JOIN (Документации INNER JOIN Процедуры ON Документации.Процедура = Процедуры.Код_проц) ON Статус.Статус = Документации.Статус) INNER JOIN (Отрасли INNER JOIN ((Объекты INNER JOIN Проц_Объекты ON Объекты.Код_объекта = Проц_Объекты.Код_Объекта_Свзяь) INNER JOIN Лимиты ON Объекты.Код_объекта = Лимиты.Объект) ON Отрасли.Отрасль = Объекты.Отрасль) ON Процедуры.Код_проц = Проц_Объекты.Код_Проц_Связь" _
& " GROUP BY Объекты.Отрасль, Процедуры.Код_проц, Процедуры.Предмет, Процедуры.[Тип контракта], Процедуры.Способ, Процедуры.НМЦК, Процедуры.Лимит, Процедуры.[Срок окончания], Процедуры.Публ, Процедуры.Оконч_заяв, Процедуры.Дата_проц, Процедуры.Ссылка, Документации.Статус, Статус.Код_стат, Отрасли.Код_отрасли, Лимиты.Источник, Лимиты.Расшифровка, Документации.Дата_пер" _
& " HAVING (" & strAIP & " AND ((Лимиты.Расшифровка) Is Null));"

Report_План_проц.RecordSource = str

End Sub


А вот оно оказывается в чем штука :) Спасибо!
qwerty112
Дата: 12.01.2012 11:48:50
Kostyanoid,

зачем в запросе GROUP BY ?
Kostyanoid
Дата: 12.01.2012 11:58:09
qwerty112,

чтобы повторов не было
alvk
Дата: 13.01.2012 01:52:23
Kostyanoid,

почему клик, а не афтерапдейт?