-Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â rss_sql_ru_access_programming

 -Ïîäïèñêà ïî e-mail

 

 -Ïîñòîÿííûå ÷èòàòåëè

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 16.03.2006
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 4


Èçìåíåíèå ñîáûòèé ôîðì â öèêëå

Âòîðíèê, 14 Èþëÿ 2015 ã. 15:57 + â öèòàòíèê
Ñòîëêíóëñÿ åùå ñ îäíîé çàäà÷åé è íå çíàþ êàê âûïîëíèòü.
Íóæíî ïðîãðàììíî ïðîèçâåñòè îïåðàöèþ ñ êîäîì â ôîðìàõ, ïî òèïó "Íàéòè è çàìåíèòü".
Õî÷ó íàïèñàòü ôóíêöèþ, êîòîðàÿ ïðîéäåò ïî âñåì ôîðìàì è ïðîèçâåäåò çàìåíó SQL çàïðîñîâ, êîòîðûå âûïîëíÿþòñÿ ïî íàæàòèþ íà êíîïêè èëè ïî êàêèì ëèáî äåéñòâèÿì ôîðì.
Åùå ìîãóò áûòü ïðîñòî ïðèâàòíûå ôóíêöèè íà êîòîðûå ññûëàþòñÿ êîíòðîëû.
Íàäî ïðîéòèñü ïî âñåì ôîðìàì è ïðîèçâåñòè çàìåíû. Êàê ïðîèçâåñòè çàìåíû íå ïðîáëåìà, âñÿ ñëîæíîñòü â òîì, ÷òî íå ìîãó íàéòè ìåòîäîâ ïîëó÷åíèÿ êîäà ôîðì.
Ñ èñòî÷íèêàìè çàïèñåé ôîðì è êîíòðîëîâ äåëàþ òàê
   Dim qd As QueryDef, rst As Recordset, like_str As String, NewSQL As String, frm As Object, ctrl As Control
  Set rst = CurrentDb.OpenRecordset("SELECT FORM_NAME, OLD_Source FROM Îáúåêò_ïðîãðàììû WHERE left([OLD_Source], 2)= 'Ò_'")
  While Not rst.EOF
    If rst![OLD_Source] <> "" Then
      like_str = "*" & rst![OLD_Source] & "*"
      For Each qd In CurrentDb.QueryDefs
        If Left(qd.Name, 1) <> "~" Then
          If qd.SQL Like like_str Then
            NewSQL = replace(qd.SQL, " " & rst![OLD_Source] & " ", " Ò_" & rst![FORM_NAME] & " ")
            NewSQL = replace(NewSQL, "=" & rst![OLD_Source] & ".", "=Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & ".", "(Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & " ", "(Ò_" & rst![FORM_NAME] & " ")
            NewSQL = replace(NewSQL, " " & rst![OLD_Source] & ".", " Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "[" & rst![OLD_Source] & "]", "[Ò_" & rst![FORM_NAME] & "]")
            qd.SQL = NewSQL
            Debug.Print rst![OLD_Source], qd.SQL
          End If
        End If
      Next
      End If
    rst.MoveNext
  Wend
  rst.CLOSE
  For Each frm In CurrentProject.AllForms
  DoCmd.OpenForm frm.Name, acDesign, , , , acHidden
  Set rst = CurrentDb.OpenRecordset("SELECT FORM_NAME, OLD_Source FROM Îáúåêò_ïðîãðàììû WHERE left([OLD_Source], 2)= 'Ò_'")
  While Not rst.EOF
    If rst![OLD_Source] <> "" Then
      NewSQL = replace(Forms(frm.Name).RecordSource, " " & rst![OLD_Source] & " ", " Ò_" & rst![FORM_NAME] & " ")
      NewSQL = replace(NewSQL, "=" & rst![OLD_Source] & ".", "=Ò_" & rst![FORM_NAME] & ".")
      NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & ".", "(Ò_" & rst![FORM_NAME] & ".")
      NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & " ", "(Ò_" & rst![FORM_NAME] & " ")
      NewSQL = replace(NewSQL, " " & rst![OLD_Source] & ".", " Ò_" & rst![FORM_NAME] & ".")
      NewSQL = replace(NewSQL, "[" & rst![OLD_Source] & "]", "[Ò_" & rst![FORM_NAME] & "]")
      Debug.Print Forms(frm.Name).RecordSource, NewSQL
      Forms(frm.Name).RecordSource = NewSQL
      For Each ctrl In Forms(frm.Name).Controls
        If ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
          If ctrl.RowSource <> "" Then
            DoEvents
            NewSQL = replace(ctrl.RowSource, " " & rst![OLD_Source] & " ", " Ò_" & rst![FORM_NAME] & " ") '.ControlSource
            NewSQL = replace(NewSQL, "=" & rst![OLD_Source] & ".", "=Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & ".", "(Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "(" & rst![OLD_Source] & " ", "(Ò_" & rst![FORM_NAME] & " ")
            NewSQL = replace(NewSQL, " " & rst![OLD_Source] & ".", " Ò_" & rst![FORM_NAME] & ".")
            NewSQL = replace(NewSQL, "[" & rst![OLD_Source] & "]", "[Ò_" & rst![FORM_NAME] & "]")
            Debug.Print ctrl.RowSource, NewSQL
            ctrl.RowSource = NewSQL
          End If
        End If
      Next
    End If
    rst.MoveNext
  Wend
  CloseObject acForm, frm.Name, , True
  Next

Íóæíî òîæå ñàìîå ïðîèçâîäèòü è ïðîãðàììíûìè çàïðîñàìè.
Äëÿ ìåíÿ ýòî âèäèòñÿ ïðèìåðíî êàê
Forms(i).SourceCode("Êíîïêà_Click") = "Çäåñü óêàæåì íîâûé êîä VBA"
Êóäà ïîñîâåòóåòå êîïàòü?

http://www.sql.ru/forum/1165903/izmenenie-sobytiy-form-v-cikle


 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó