|
|||||||
Очистка от временных запросов создаваемых Формами и Отчетами
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - msa.polarcom.ru - 10 Приложение MSA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1532017032di8sc1pybd/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Очистка от временных запросов создаваемых Формами и Отчетами При открытии любой формы или отчета, если
она сама или любой из ее обьектов использует в качестве источника
данных строку SQL то для каждого такого обьекта в базе данных создается
временный запрос с префиксом ~sq_ + имя обьекта, которые не удаляется
ни после закрытия формы, ни после сжатия. Можно перед обжатием на
несколько (сотен) кил, уменьшить размер файла (перед пересылкой по почте
например) используя данную процедуру. Private Sub esDelTempQueries() 'es 14.12.04 'Удаление временных запросов от форм/отчетов Dim qdf As QueryDef Dim i As Integer Dim c As Integer Dim x As Long On Error Resume Next CurrentDb.QueryDefs.Refresh For Each qdf In CurrentDb.QueryDefs If Left(qdf.Name, 4) = "~sq_" Then 'Debug.Print qdf.SQL c = Len(qdf.SQL) CurrentDb.QueryDefs.Delete qdf.Name If Err.Number > 0 Then 'Debug.Print Err.Description Err.Clear Else i = i + 1 x = x + c 'Debug.Print "Запрос - " & qdf.Name & " - Удален!" End If End If Next qdf If i > 0 Then Debug.Print "---------------------------------" Debug.Print "Итого удалено запросов: " & i & " содержащих: " & x & " байт" Else Debug.Print "Временные запросы не обнаружены" End If End Sub Обратная процедура - забиваем базу мусором по полной (ради любопытства) Private Sub esRestoreTempQueries() 'es 14.12.04 'Восстановление временных запросов от всех форм/отчетов Dim dbs As Database, ctr As Container, doc As Document On Error GoTo RestoreTempQueriesErr Set dbs = CurrentDb 'Цикл по всем формам Set ctr = dbs.Containers!Forms For Each doc In ctr.Documents 'Открытие формы в режиме редакции и в скрытом режиме DoCmd.OpenForm doc.Name, acDesign, "", "", , acHidden 'Закрытие формы DoCmd.Close acForm, doc.Name, acSaveYes Next doc 'Цикл по всем Отчетам аналогично Set ctr = dbs.Containers!Reports For Each doc In ctr.Documents DoCmd.OpenReport doc.Name, acDesign, "", "", , acHidden DoCmd.Close acReport, doc.Name, acSaveYes Next doc Exit Sub RestoreTempQueriesErr: MsgBox Err.Description & vbCrLf & "При обработке формы - " & doc.Name End Sub |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|