|
|
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Нужно вставить следующий код во все (их более 100) формы, удалив в их модулях все имеющееся там. Как/чем это можно сделать? Код: plaintext 1. 2. 3. 4. 5. Помогите советом, пожалуйста, а то я замучался уже на втором десятке открывать форму, модуль, выделять все, удалять и вставлять приведенный выше код :(... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 12:36:55 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Undocumented ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:42:51 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Alexey Sh Код: plaintext Undocumented Круто! Посмотри Module Object (Methods and Properties) Так же, возможно, тебе поможет нижеприведенный код. Я извиняюсь перед его автором (не знаю имени) за плагиат. Этот код помогает уменьшить объем мдб за счет сохранения в файл, стирания и восстановления из файла всех модулей мдб. Дает очень неплохой результат, который, правда, потом быстро ослабевает по мере написания новых ветвей программы. Public Function ClearMdl() Dim mdl As Module, arrNames() As String, strName As String Dim PathTempFile As String, ContainerName As String Dim i As Long, j As Long, k As Long, m As Long, n As Long Dim S As String Const MyModuleName As String = "ClearModules" Const FileTempName As String = "~Module.txt" S = CurrentDb.Name PathTempFile = Left(S, Len(S) - Len(Dir(S))) + FileTempName On Error GoTo ErrClear For i = 1 To 3 Select Case i Case 1 ContainerName = "Forms" Case 2 ContainerName = "Reports" Case 3 ContainerName = "Modules" End Select n = CurrentDb.Containers(ContainerName).Documents.Count - 1 If n < 0 Then GoTo Nexti ReDim arrNames(n) For j = 0 To n arrNames(j) = CurrentDb.Containers(ContainerName).Documents(j).Name Next j SysCmd acSysCmdInitMeter, ContainerName, (n + 1) For j = 0 To n strName = arrNames(j) Select Case i Case 1 DoCmd.OpenForm strName, acDesign, , , , acHidden If Not Forms(strName).HasModule Then GoTo Nextj Set mdl = Forms(strName).Module Case 2 DoCmd.OpenReport strName, acDesign If Not Reports(strName).HasModule Then GoTo Nextj Set mdl = Reports(strName).Module Case 3 If strName = MyModuleName Then GoTo Nextj DoCmd.OpenModule strName Set mdl = Modules(strName) End Select If Dir(PathTempFile) <> "" Then Kill PathTempFile Open PathTempFile For Binary Access Write As #1 For k = 1 To mdl.CountOfLines S = mdl.Lines(k, 1) & Chr(13) m = m + Len(S) Put #1, , S Next k Close #1 Select Case i Case 1 Forms(strName).HasModule = False DoCmd.Save acForm, strName Forms(strName).HasModule = True Set mdl = Forms(strName).Module Case 2 Reports(strName).HasModule = False DoCmd.Save acReport, strName Reports(strName).HasModule = True Set mdl = Reports(strName).Module Case 3 If mdl.Type Then DoCmd.RunCommand acCmdNewObjectClassModule Else DoCmd.RunCommand acCmdNewObjectModule End If S = Modules(Modules.Count - 1).Name DoCmd.Close acModule, strName DoCmd.DeleteObject acModule, strName DoCmd.Save acModule, S DoCmd.Close acModule, S DoCmd.Rename strName, acModule, S DoCmd.OpenModule strName Set mdl = Modules(strName) End Select mdl.DeleteLines 1, mdl.CountOfLines mdl.AddFromFile PathTempFile Nextj: Select Case i Case 1: DoCmd.Close acForm, strName, acSaveYes Case 2: DoCmd.Close acReport, strName, acSaveYes Case 3: If strName <> MyModuleName Then DoCmd.Close acModule, strName, acSaveYes End Select SysCmd acSysCmdUpdateMeter, (j + 1) Next j Nexti: Next i If Dir(PathTempFile) <> "" Then Kill PathTempFile SysCmd acSysCmdClearStatus MsgBox "Successfully!", vbInformation Exit Function ErrClear: MsgBox ": ContainerName= " & ContainerName & ", DocumentName= " & strName & Chr(13) & _ "Error number = " & Err & ". " & Err.Description Stop Resume End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 13:53:40 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Вот что-то не получается (см. код) - ругается на "объект более не задан..." уже со второй строки: --- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. И правильно я задал синтаксис в выражении "mdl.CreateEventProc("Open", doc)" - интересует указанное doc как объект.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:09:11 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
А Application.ReplaceModule не нашел я :( - может плохо искал? P.S.: Access'97 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:10:56 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Недокументирован однако ReplaceModule Вызвать Object Browser, правой кнопкой мыши включить "Show Hidden members" и посмотреть на скрытые методы Application ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:19:00 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
И все-таки, что не так в этой строке: Код: plaintext 1. - после нее ругается на "указан недопустимый объект или объект более не задан"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:28:27 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
borisbА Application.ReplaceModule не нашел я :( - может плохо искал? P.S.: Access'97 В Access'97 есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:31:35 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
попробуй так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:37:44 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
рпечатка вышла при проверке Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:38:39 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Получилось :) Странно, однако... А вот какздесь присвоить правильнее будет?: Код: plaintext 1. 2. 3. 4. 5. 6. 7. - в первой строчке что-то не так... (ff as Form) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:40:55 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Как присвоить переменной типа Form объект типа Document, или вообще как сослать на закрытую форму? Чтобы иметь возможность использовать метод .Module ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:51:31 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Попробовал предложенным ранее методом сделать: Код: plaintext 1. - вроде не ругался, а изменения не сохранил :(... Что-то не дописал я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:59:20 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Alexey Sh Код: plaintext Undocumented Что здесь означает последний 0? Просто справка недоступна у меня по этому методу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:05:49 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
я и сам не знаю что этот 0 значит просили long - дал . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:08:17 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
& - просто пропусил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:10:47 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Ну а все-таки: как сослаться (присвоить переменной) на закрытую форму, через что? .Documents, .Containers!Forms? Что-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:11:35 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Работающий код перечисления всех форм в мдб: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Код от 13:53 просматривал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:14:55 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:17:06 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Действительно, А97 знаком с ф-ией ReplaceModule. Но документов никаких! Во всяком случае в гогле только небольшая ссылка по А2003. Alexey Sh Как дожил до такой ф-ии, где нашел документацию? Колись! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:34:19 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Не сохраняет-таки, зараза! Вот подправленный код: --- Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. - нигде не ругается, а модули форм как были старыми, так и остались :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:36:03 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Так может быть ReplaceModule на самом деле не убивает модуль, а только записывает в файл? Или дело в последнем параметре? Что там за зверь такой token As Long? Из словаря превод слова token: прилагательное: символический, имеющий видимось, имеющий подобие, кажущийся существительное: знак, опознавательный знак, подарок на память, признак, примета, талон, жетон Выбирай подходящее! Мне больше всего нравится "подарок на память" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:42:47 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
Alexey ShВызвать Object Browser, правой кнопкой мыши включить "Show Hidden members" и посмотреть на скрытые методы Application - ух-ты! А зачем, интересно, понадобилась Биллу эта примитивная игра в прятки??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:44:52 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
2 Rivkin Dmitry : В своё время попались описания LoadFromText и SaveAsText, а я всегда любил сохранять следы работы всяческих визуальных сред в текстовых файлах (с ЕС ЭВМ ещё пошло, бумага была самым надёжнам носителем, распечатал код и текстовое представление экранных форм(3270) на своём птичьем языке и сдал в архив, накроются ленты с дисками - девочки наберут с листинга ) Результаты SaveasText удобно использовать для анализа базы, в частности поиска вызовов функций в запросах и т п А дальше - под настроение - смотрю на очередную недок фунцию и подбираю к ней параметры - из общей логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:53:23 |
|
||
|
Как вставить опред.код во все формы (программно)?
|
|||
|---|---|---|---|
|
#18+
С Application.ReplaceModule не получилось - не сохраняет и все тут. Сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. - все ок! Аж целых 105 форм прошла ;) Уф... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 16:00:22 |
|
||
|
|

start [/forum/topic.php?fid=45&startmsg=32818436&tid=1669874]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 267ms |

| 0 / 0 |
