|
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
http://www.sql.ru/forum/1165903/izmenenie-sobytiy-form-v-cikle