Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Было тут упоминание про визхук. Посмотрел, и зачем-то решил «накидать» обнаруженных «переводов».
Модераторам. Буде решите, что оффтоп – удалите, но завтра, сегодня всего не накидаю – уж удалять – так всю свалку.

Здесь собраны сведения о применении объекта WizHook в Access, полученные из
http://www.accessvba.com/showthread.php?s=&threadid=2715
и
http://www.mvp-access.com/juanmafan

оба автора ссылаются на http://www.skrol29.com как на первоисточник кода инициализации функций WizHook и применения функций по работе с макросами.

Поскольку испанским я не владею, для понимания, там, где не хватало «видения кода», пользовался веб-переводчиком. Любопытно, что по субъективным впечатлениям, babelfish.altavista.com гораздо лучше переводит с испанского языка на английский, чем translate.ru с испанского на русский. Хотя это, наверно, психология. Данный текст по существу является попыткой «просто перевода» лишь с небольшими дополнениями по отношению к исходной информации (в отдельных местах), найденной по вышеупомянутым ссылкам . Часть функций не описана или их назначение не вполне очевидно из описания. Было бы хорошо, если бы в этом потоке появились дополнения и замечания.

Список и проверки (где были) приводятся для А2002.

Поскольку «дока» получится длинноватая для простыни – построю небольшую лестницу. Если «это» не будет удалено, то, может - кто чего добавит.
Начнем вот с этого


Ключ инициализации (некоторые функции работают без него) :
WizHook.Key = 51488399

для некоторых функций он не требуется - у меня не всегда аккуратно помечено - где требуется, где нет. Если он и требуется, то, похоже 1 раз на время запуска сеанса. И, похоже, сброс проекта VBA (потеря переменных уровня модуля) не требует переинициализации WizHook.
10 июн 04, 17:48    [735770]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
wzAccessUserDataDir()
Возвращает каталог, определяющий местоположение вспомогательных «пользовательских» файлов Акцесс. (вспомогательных файлов, используемых визардами)
У Juan M. Afán de Ribera вызов приводится как

Sub wzAccessUserDataDir()
    
    WizHook.Key = 51488399
    Debug.Print WizHook.AccessUserDataDir
    
End Sub

В действительности (кажется) не требует ключа инициализации.
Возврат типа
C:\Documents and Settings\UserName\Application Data\Microsoft\Access\
В этом каталоге обнаружены файлы Acwzusr.mdt и Acwzusrt.mdt, Второй с таблицами результатов работы upsizing визарда, первый с таблицами масок ввода и прочей информацией, полезной для визардов проектирования объектов акцесс. По крайней мере первая пересоздается при отсутствии. Найдена рекомендация Microsoft
(http://support.microsoft.com/default.aspx?scid=kb;en-us;298984) переименовывать Acwzusr.mdt при обнаружения проблем в работе мастера создания маски ввода.

AccessWizFilePath
Возвращает полный путь к запрошенному файлу надстройки.

WizHook.AccessWizFilePath("Acwzmain.mde")
10 июн 04, 17:50    [735781]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Темный
Member

Откуда:
Сообщений: 11941
Victosha
Модераторам. Буде решите, что оффтоп – удалите, но завтра, сегодня всего не накидаю – уж удалять – так всю свалку.

Почему это вдруг оффтоп??? Не...
10 июн 04, 17:50    [735782]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
AdpUIDPwd(pbstrUID As String, pbstrPwd As String) As Boolean)
Нет данных
10 июн 04, 17:51    [735783]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
AnalyzeQuery(Workspace As Workspace, Database As Database, Query As String, Results As String) As Long (требует ключ)

(похожая ??? функция AnalyzeTable)
Функция производит анализ производительности запроса.
Results представляет собой строку, разделенную на подстроки символом Chr(1) и заканчивается результат анализа Chr(2)
В случае, если анализатору запросов сказать нечего, возвращает пустую строку. Содержательный возврат зависит от результата анализа и выглядит приблизительно следующим образом.
-первая подстрока – код, определяющий «тип возврата»
- вторая - полный путь к базе данных
Далее идет результат анализа. Для случая запроса с join-ом между таблицами с неустановленными связями, когда анализатор выдает совет «Таблица Tabl: установите связь с таблицей Tabl2 » получен возврат следующего содержания
R ‘ Recomendation
L:\Victosha\UNotes\VizBase2002.mdb ‘Путь к базе
1 | ? тип связи между таблицами в запросе ?
M |
Table1 ‘ сторона 1
FieldName1
M ‘ сторона M
Table2
FieldName2


Пример обращения

Sub AnalizeQuery()
  Dim resultString As String
  Dim resultLong As Long
  Dim tArr
  'WizHook.Key = 51488399

resultLong = WizHook.AnalyzeQuery(DBEngine(0), DBEngine(0)(0), "ЖурналУчета", resultString) tArr = Split(resultString, Chr(1)) If Len(resultString) > 0 Then For resultLong = 0 To UBound(tArr) Debug.Print tArr(resultLong) Next End If End Sub
10 июн 04, 17:52    [735789]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
AnalyzeTable(Workspace As Workspace, Database As Database, Table As String, ReturnDebugInfo As Boolean, Results As String) As Long (требует ключ)
Назначение не очевидно и возврат не так хорошо вычитывается как в случае предыдущей функции.
10 июн 04, 17:53    [735792]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
ArgsOfActid(Actid As Long) As Long (требуется ключ)

Возвращает количество аргументов для указанного ActionID – идентификатора действия (макрокомадны). Полезна при работе с макросами. Ниже следующий пример показывает ее в паре с WizHook.NameFromActid (далее отдельно рассматриваться не будет) см. также OpenScript

Sub wzNameAndArgsOfActid()
   Dim wzActid As Integer
   Dim NombreAccion As String
    
    WizHook.Key = 51488399
    ' в "первоисточниках" цикл от 1 до 62

For wzActid = 1 To 65 NombreAccion = WizHook.NameFromActid(wzActid) If NombreAccion <> "" Then Debug.Print "ИД действия"; wzActid; "Действие: "; NombreAccion Debug.Print "- к-во аргументов: "; _ WizHook.ArgsOfActid(wzActid) End If Next End Sub
10 июн 04, 17:54    [735796]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
BracketString(String As String, flags As Long) As Boolean (требуется ключ)

Добавляет прямоугольные скобки [] к строке, пытаясь сформировать допустимое (для последующего Eval) имя. Использует в качестве «разделителей» символы «!» и «.»

Flags:
0 – Не добавлять []
1 – заключить в скобки только неверные части имени
2 – заключить в скобки все подстроки
Возвращаемое значение:
True – В строке ВОЗВРАТА содержится недопустимое имя
False – Строка возврата не содержит недопустимых имен

Пример вызова

Sub wzBracketString()
Dim wzStr0 As String
Dim wzStr1 As String
Dim wzStr2 As String

    
    WizHook.Key = 51488399
    
    wzStr0 = "Forms!Имя формы с пробелами.Text1"
    wzStr1 = "Forms!Имя формы с пробелами.Text1"
    wzStr2 = "Forms!Имя формы с пробелами.Text1"
            
    Debug.Print WizHook.BracketString(wzStr0, 0), wzStr0
    Debug.Print WizHook.BracketString(wzStr1, 1), wzStr1
    Debug.Print WizHook.BracketString(wzStr2, 2), wzStr2
    
    Debug.Print
    
    wzStr0 = "Forms!ИмяФормыБезПробелов.Text1"
    wzStr1 = "Forms!ИмяФормыБезПробелов.Text1"
    wzStr2 = "Forms!ИмяФормыБезПробелов.Text1"
    
    Debug.Print WizHook.BracketString(wzStr0, 0), wzStr0
    Debug.Print WizHook.BracketString(wzStr1, 1), wzStr1
    Debug.Print WizHook.BracketString(wzStr2, 2), wzStr2
    
End Sub
10 июн 04, 17:55    [735800]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
WizHook.CloseCurrentDatabase (требует ключ)

Эквивалентна Application.CloseCurrentDatabase
10 июн 04, 17:56    [735803]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
CreateDataPageControl(DpName As String, CtlName As String, Type As Long, Section As String, SectionType As Long, AppletCode As String, x As Long, y As Long, dx As Long, dy As Long)

? что-то про страницы доступа к данным.
10 июн 04, 17:57    [735808]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
WizHook.CurrentLangID() As Long

Возвращает идентификатор текущего языка
10 июн 04, 17:57    [735811]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
WizHook.DbcVbProject
Возвращает объект VBProject.. Не требует ссылки на библиотеку расширений VBA

Sub getVBEProject()
  Dim tObj
  WizHook.Key = 51488399
  Set tObj = WizHook.DbcVbProject
  
End Sub
10 июн 04, 17:58    [735815]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
EmbedFileOnDataPage ? что-то про страницы доступа к данным.
10 июн 04, 17:58    [735821]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
EnglishPictToLocal(In As String, Out As String) As Boolean

Преобразует английские имена «стандартных» форматов к локальным

Sub wzEnglishPictToLocal()
Dim wzIn(16) As String
Dim wzOut As String
Dim i As Integer

    WizHook.Key = 51488399
    
    sIn(0) = "General Date"
    sIn(1) = "Long Date"
    sIn(2) = "Medium Date"
    sIn(3) = "Short Date"
    sIn(4) = "Long Time"
    sIn(5) = "Medium Time"
    sIn(6) = "Short Time"
    sIn(7) = "General Number"
    sIn(8) = "Currency"
    sIn(9) = "Euro"
    sIn(10) = "Fixed"
    sIn(11) = "Standard"
    sIn(12) = "Percent"
    sIn(13) = "Scientific"
    sIn(14) = "True/False"
    sIn(15) = "Yes/No"
    sIn(16) = "On/Off"
    
    For i = 0 To 16
        WizHook.EnglishPictToLocal sIn(i), sOut
        Debug.Print sIn(i) & ": " & sOut
    Next
        
End Sub
10 июн 04, 17:59    [735824]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
FGetMSDE ?
10 июн 04, 18:00    [735827]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
FileExists(File As String) As Boolean (требует ключ)

Проверяет существование указанного файла в файловой системе
10 июн 04, 18:00    [735829]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Function FirstDbcDataObject(Name As String, ObjType As AcObjectType, Attribs As Long) As Boolean

Заполняет Name первым именем объекта типа таблица или запрос, возвращая в ObjType тип этого объекта. 0 – таблица, 1 – запрос.
Attribs – атрибут для поиска.
Пример вызова

Sub wzFirstDbcDataObject()
Dim wzName As String
Dim wzObjType As Long
Dim wzAttribs As Long

Const wzNormal = 0
Const wzHidden = 8
Const wzLinked = 2097152

    WizHook.Key = 51488399

    WizHook.FirstDbcDataObject wzName, wzObjType, _
                               wzAttribs
    Debug.Print "Имя: " & wzName
    Debug.Print "Тип: " & iif(wzObjType = 0, "Таблица", _
                               "Запрос")
    
    Debug.Print "Атрибуты:",
    If (wzAttribs And wzNormal) = wzNormal Then
        Debug.Print "Обычный",
    End If
    If (wzAttribs And wzHidden) = wzHidden Then
        Debug.Print "Скрытый",
    End If
    If (wzAttribs And wzLinked) = wzLinked Then
        Debug.Print "Звязанный объект"
    End If
    
End Sub
10 июн 04, 18:01    [735832]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
FIsFEWch ?
10 июн 04, 18:01    [735837]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
FullPath(RelativePath As String, FullPath As String) As Integer (требует ключ)

Возвращает абсолютный путь на основе полученной строки относительного пути и сведений о текущем каталоге Access.
Пример использования

Sub wzFullPath()
Dim wzRelativePath As String
Dim wzFPath As String

    WizHook.Key = 51488399
    
    wzRelativePath = "NewFolder/file.ext"
    WizHook.FullPath wzRelativePath, wzFPath
    Debug.Print wzFPath
    
End Sub
10 июн 04, 18:02    [735838]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
WizHook.GetColumns(bStrBase as string) as string

Возвращает строку имен столбцов (из таблицы – проверено, может быть запроса – не проверено), разделенных точкой с запятой (возможно зависит от установленного разделителя списков)

Sub wzCol()
  Dim sRet  As String
  WizHook.Key = 51488399
  sRet = WizHook.GetColumns("vec_hist")
End Sub
10 июн 04, 18:03    [735842]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Function GetCurrentView(bstrTableName As String) As Long
Member of Access.WizHook ?
10 июн 04, 18:03    [735844]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
GetFileName(hwndOwner As Long, AppName As String, DlgTitle As String, OpenTitle As String, File As String, InitialDir As String, Filter As String, FilterIndex As Long, View As Long, flags As Long, fOpen As Boolean) As Long (требует ключ)

Диалог открытия/сохранения файлов.
fOpen=True – откыть
fOpen=False – сохранить
flags – в паре с View определяет вид отображения элементов в диалоге.

View = 0 и flags = 0
Вид: Список
View = 0 и flags = 64
Вид: Детальный
View = 1 и flags = 64
Вид: «Устаревший вид» ? – yt ghjdthtyj
View = 2 и flags = 64
Вид: «Свойства»
дополнительно:
View = 0 и flags = 32
Просмотри выбор только каталогов
' View = 0 y flags = 12
мультиселект – позволяет выбрать несколько файлов

Sub wzGetFileName()
Dim wzhwndOwner As Long
Dim wzAppName As String
Dim wzDlgTitle As String
Dim wzOpenTitle As String
Dim wzFile As String
Dim wzInitialDir As String
Dim wzFilter As String
Dim wzFilterIndex As Long
Dim wzView As Long
Dim wzflags As Long
Dim wzfOpen As Boolean
Dim ret As Long
    
    WizHook.Key = 51488399
    
    wzhwndOwner = 0&
    wzAppName = ""
    wzDlgTitle = "Cuadro de diбlogo con WizHook"
    wzOpenTitle = "Abrir con Wz"
    wzFile = String(255, Chr(0))
    wzInitialDir = ""
    wzFilter = "Archivos grбficos " _
    & "(*.wmf;*.emf;*.dib;*.bmp;*.ico;" _
    & "*.pcx;*.pcx;*.jpg;*.gif;*.png)"
    wzFilterIndex = 1
    wzView = 1
    wzflags = 64
    wzfOpen = True

    ret = WizHook.GetFileName(wzhwndOwner, _
        wzAppName, wzDlgTitle, wzOpenTitle, wzFile, _
        wzInitialDir, wzFilter, wzFilterIndex, _
        wzView, wzflags, wzfOpen)
        
' Проверим, не произошел ли возврат в результате нажатия клавиши Esc (-302)

If ret <> -302 Then MsgBox "Выбран файл: " & wzFile End If End Sub



GetFileName2(hwndOwner As Long, AppName As String, DlgTitle As String, OpenTitle As String, File As String, InitialDir As String, Filter As String, FilterIndex As Long, View As Long, flags As Long, fOpen As Boolean, fFileSystem) As Long
Судя по всему, дополнена параметром выбора только элементов файловой системы.

Работа не проверена.
10 июн 04, 18:04    [735850]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
GetFileOdso(bstrExt As String, bstrFilename As String) As Long

Работа не проверена, судя по всему, возвращает по полученному имени файла источника данных офис - *.ods содержащуюся в нем строку подключения. При подаче неверного имени файла открывает диалог поиска файла-источника данных. Требуется уточнение
10 июн 04, 18:05    [735854]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
GetInfoForColumns(bstrBase As String) As String

Похоже на информацию о типах данных полей таблицы. Значения мной не расшифровывались.
10 июн 04, 18:06    [735855]     Ответить | Цитировать Сообщить модератору
 Re: WizHook - перевод "документации"  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
GetScriptString(HScr As Long, ScriptColumn As Long, Value As String) As Boolean

Метод возвращает значения для различных столбцов макроса. Возвращает истину , если выполнился успешно

Аргументы
HScr – Long – идентификатор (манипулятор) макроса
ScriptColumn – Long – столбец макроса. 0 – Имя макроса, 1 – комментарий, 2 – Условие, 3 - 12 аргументы
Value – значение, содержащееся в запрошенном столбце.

Рибера указывает, что образцом для нижеприведенного кода послужили V-tools 2000-2002 c http://www.skrol29.com

' API для закрытия макроса в памяти

Private Declare Sub fCloseHscr _ Lib "msaccess.exe" _ Alias "#20" _ (ByVal HScr As Long) ' API для перехода к строке макроса
Private Declare Function fNextHscr _ Lib "msaccess.exe" _ Alias "#22" _ (ByVal HScr As Long, _ ByVal fSkipBlank As Long, _ pfEndOfScript As Long) As Long ' API для получения действия, соответствующего строке макроса
Private Declare Function ActidOfHscr _ Lib "msaccess.exe" _ Alias "#29" _ (ByVal HScr As Long) As Long Sub wzGetScriptString() Dim hMacro As Long Dim wzScript As String Dim wzLabel As String Dim wzOpenMode As Long Dim wzExtra As Long Dim wzVersion As Long Dim mAction As Variant Dim mLabel As String Dim mComment As String Dim mCondition As String Dim mArgument As String Dim EndOfScript As Long ' Имя макроса
wzScript = "Пример макроса" ' способ чтения
wzOpenMode = 0 WizHook.Key = 51488399 ' Читаем макрос
hMacro = WizHook.OpenScript(wzScript, _ wzLabel, wzOpenMode, wzExtra, wzVersion) ' Позиционируемся для работы в обратном порядке
fNextHscr hMacro, 0&, EndOfScript ' Значение для действия
mAction = ActidOfHscr(hMacro) ' передаем значение по цепочке
mAction = WizHook.NameFromActid(mAction) ' значение столбца Имя макроса
WizHook.GetScriptString hMacro, 0&, mLabel ' значение столбца Комментария
WizHook.GetScriptString hMacro, 1&, mComment ' значение столбца условия
WizHook.GetScriptString hMacro, 2&, mCondition ' значение первого аргумента для действия
WizHook.GetScriptString hMacro, 3&, mArgument Debug.Print "Имя макроса:", mLabel Debug.Print "Условие:", mCondition Debug.Print "Действие:", mAction Debug.Print "Комментарий:", mComment Debug.Print "1-ый аргумент:", mArgument End Sub
10 июн 04, 18:07    [735860]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить