Âñåì ïðèâåò!
Ðàáîòàþ â MS Access 2002, c íåäàâíåãî âðåìåíè íà÷àë ðàáîòàòü ñ ìîäóëÿìè êëàññîâ, ïîíÿë ÷òî ýòî î÷åíü êëàññíàÿ âåùü, ïîçâîëÿåò ýêîíîìèòü êó÷ó âðåìåíè äëÿ ñîçäàíèÿ îäíîòèïíûõ çàäà÷ â ðàçíûõ ôîðìàõ.
Èç òîãî ÷òî ó ìåíÿ óæå ðàáîòàåò íà ìîäóëå êëàññà, ýòî
-ïîëó÷åíèå/ïîòåðÿ ôîêóñà(Lost/Got): îáðàáîòêà ñîáûòèé âñåõ òåêñò è êîìáî áîêñîâ â ôîðìàõ (ïîäñâåòêà ïîëÿ çåëåíûì öâåòîì ïðè ïîëó÷åíèè ôîêóñà);
-êëàâèøà ââåðõ(KeyUp):îòîáðàæåíèå ïåðåêëþ÷åíèÿ ðàñêëàäêè êëàâèàòóðû â äîï. ôîðìå (íåîáõîäèìî äëÿ óäàëåííîãî ðàáî÷åãî ñòîëà)
-äâîéíîé êëèê(DblClik): âûçîâ êàëåíäàðÿ âî âñåõ ôîðìàõ äëÿ ïîëåé, êîòîðûå èìåþò êîðîòêèé ôîðìàò äàòû
-îòñëåæèâàíèÿ çàïóùåííûõ ïðîãðàìì ó ïîëüçîâàòåëåé (Open/Unload)
Âðîäå âñå çàìå÷àòåëüíî, íî ñòîëêíóëñÿ ñ îäíîé ïðîáëåìîé ïðîãðàììèðîâàíèÿ.
Òàê âîò âðîäå âûãëÿäèò âñå õîðîøî, íî ïðîáëåìà â òîì, ÷òî åñëè â êîëëåêöèè ôîðì è êîíòðîëîâ ÿ ìîãó âûáðàòü èòåì ñ ïîìîùüþ ñòðîêîâîé ïåðåìåííîé, òî äëÿ ïóáëè÷íîãî ñîáûòèÿ ìíå íóæíî æåñòêîå íàçâàíèå ÈìåíèÊîíòðîëà.
Âñå ýòî íóæíî äëÿ ñîáûòèÿ âûçîâà êàëåíäàðÿ â ïîëÿõ äàòû. Ïîñëå òîãî êàê ïîëüçîâàòåëü ââîäèò äàòó ðóêàìè, ïðîèñõîäÿò ñîáûòèÿ BeforeUpdate, êîòîðûå îáû÷íî ïðîâåðÿþò âîçìîæíî ëè ââåäåíèå äàííîãî çíà÷åíèÿ â ïîëå è äàëåå ðàçðåøàþò âûïîëíåíèå AfterUpdate, â êîòîðûõ ïðîèñõîäÿò îñíîâíûå èçìåíåíèÿ è âûçîâû ðàçëè÷íûõ ôóíêöèé.
À âîò åñëè ìû âûçûâàåì êàëåíäàðü äâîéíûì êëèêîì, òî ïðîñòî ïðîèñõîäèò ñîáûòèå äâîéíîãî êëèêà è íè÷åãî íå ïðîèñõîäèò.
Äëÿ àâòîìàòèçàöèè íàïèñàë â ìîäóëå êëàññà âûçîâ íåîáõîäèìûõ ñîáûòèé.
Ìîäóëü êëàññà ðàáîòàåò ñ ôîðìîé ïî ññûëêå, ïîýòîìó íàïðÿìóþ âûïîëíÿòü ïðîöåäóðû â ôîðìå íå ïîëó÷àåòñÿ, ïðèõîäèòñÿ îáðàùàòüñÿ ïî èìåíàì ôîðì è êîíòðîëîâ â ôîðìàòå
Forms("ÈìÿÔîðìû").Controls("ÈìÿÊîíòðîëà").ÈìÿÊîíòðîëà_AfterUpdate
Ïîýòîìó ïîêà ïðèõîäèòñÿ èñïîëüçîâàòü âîò òàêîé êîñòûëü äëÿ îáðàáîòêè ñîáûòèé
Private Sub SelectAfterUpdate(tctrl As Object)
Dim canl As Integer
On Error Resume Next
Select Case tctrl.Name
Case "DATE_BEG"
Forms(tctrl.Parent.Name).DATE_BEG_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_BEG_AfterUpdate
Case "DATE_END"
Forms(tctrl.Parent.Name).DATE_END_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_END_AfterUpdate
Case "DATE_ZAKAZ"
Forms(tctrl.Parent.Name).DATE_ZAKAZ_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_ZAKAZ_AfterUpdate
Case "DATE_POSTAVKI"
Forms(tctrl.Parent.Name).DATE_POSTAVKI_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_POSTAVKI_AfterUpdate
Case "DATE_DOC"
Forms(tctrl.Parent.Name).DATE_DOC_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_DOC_AfterUpdate
Case "DATE_NEXT"
Forms(tctrl.Parent.Name).DATE_NEXT_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_NEXT_AfterUpdate
Case "DATE_PREV"
Forms(tctrl.Parent.Name).DATE_PREV_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_PREV_AfterUpdate
Case "DATE_CALENDAR"
Forms(tctrl.Parent.Name).DATE_CALENDAR_BeforeUpdate canl
If Not canl Then Forms(tctrl.Parent.Name).DATE_CALENDAR_AfterUpdate
End Select
End Sub
Ïðèòîì ýòî òîëüêî îñíîâíûå è ñàìûå ðàñïðîñòðàíåííûå íàçâàíèÿ äëÿ ïîëåé, à åñòü åùå ìíîãî äðóãèõ, îêîëî 2-3 äåñÿòêîâ è äëÿ êàæäîãî ïðîïèñûâàòü íîâûé êåéñ, êàê òî íåïðàâèëüíî.
Õîòåëîñü èñïîëüçîâàòü ÷òî-òî áîëåå èçÿùíîå,âðîäå
Forms(tctrl.Parent.Name).(tctrl.Name).AfterUpdate
Ìîæåò êòî çíàåò äðóãèå ñïîñîáû, êàê ìîæíî îáðàùàòüñÿ ê ñîáûòèÿì ôîðìû
http://www.sql.ru/forum/1195137/zapusk-sobytiya-formy-s-pomshhu-tekstovoy-peremennoy