Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
n 0 – только чтение;
n 1 – чтение / запись.
На третьей – реализовано выполнение задаваемого запроса. SQL-запрос задается с помощью метода OpenView, а выполнение запроса – с помощью метода Execute.
Напомним, что в SQL-запросе регистр названия полей и имен таблиц имеет значение.
В последней строке осуществляется запись сделанных изменений в базе с помощью команды Commit.
Работа с таблицами в orca.exe
Рассмотрим подробнее структуру таблиц, содержащихся в msi-файле. Orca – мини-редактор SQL-таблиц, хранящихся как составная часть дистрибутива.
С полями таблиц баз можно совершать следующие действия:
n чтение существующих полей;
n создавать новые поля;
n удалять поля;
n изменять поля.
Чтение существующих полей
Для реализации шаблона поиска используется шаблон (см. листинг 2), отличный от приведенного в листинге 1. Это объясняется тем, что запись, удаление, замена осуществляются у единичного поля, а вывод на экран осуществляется для всех полей.
Трансформация листинга осуществляется в третьей строке листинга 1. Она разбивается на две подстроки – это строки 3 и 4 в листинге 2. Здесь разносятся методы OpenView и Execute.
Далее осуществляется чтение массива строк. Обратите внимание на то, что в запросе SELECT поля могут быть перечислены только по именам. Значение «*» в данном случае не работает. А во время чтения данных необходимо указывать нумерацию полей (Record.StringData(1)), начиная с единицы (1).
В листинге 2 приведен пример чтения всех полей (Property, Value) таблицы Property файла ACDSee 10 Photo Manager.msi:
Листинг 2. Чтение полей в указанной таблице
Set obj = CreateObject("WindowsInstaller.Installer")
Set ob = obj.OpenDatabase ("C:ACDSeeACDSee 10 Photo Manager.msi",0)
set View=ob.OpenView("SELECT Property, Value FROM Property")
View.Execute
Do
Set Record = View.Fetch
If Record Is Nothing Then Exit Do
Wscript.Echo Record.StringData(1) + vbTab+vbTab+Record.StringData(2)
Loop
Set View = Nothing
Создание новых полей
Создание новых полей используется достаточно часто, например, для того чтобы записать в дистрибутив программы ее серийный номер. Для этого необходимо добавить в таблицу Property поле PIDKEY с соответствующим значением, содержащим серийным номер продукта. Чтобы добавить новое поле, необходимо установить курсор на нужную таблицу (см. рис. 3) и, нажав в произвольной ее части правую кнопку мыши, выбрать пункт Add Row или нажать комбинацию клавиш <CTRL+R>. В появившемся диалоговом окне будет приведен список доступных полей. Необходимые значения можно присвоить в этом же окне.
Рисунок 3. Изменение параметра
Аналогичную операцию можно выполнить программным способом (см. листинг 3). Для этого необходимо вызвать объект WindowsInstaller.Installer. На основе шаблона, приведенного в листинге 1, сформируем листинг 3. В качестве второго параметра метода OpenDatabase необходимо указать 1, поскольку выполняется операция записи данных.
Самым сложным в данном листинге правильно сформировать запрос. Особенность запроса INSERT INFO заключается в том, что в первых по счету скобках, в которых указывается название полей, имя поля должно быть задано с родителем. Все имена параметров в запросе указываются без кавычек; все присваиваемые значения – в кавычках и, наконец, названия полей и таблиц чувствительны к регистру.
Листинг 3. Создание нового атрибута в таблице
Set a = CreateObject("WindowsInstaller.Installer")