Макросы можно писать на VB Script (
http://msdn.microsoft.com/en-us/library/t0aew7h6.aspx) Это не VB.
В написании своих сценариев можно использовать объекты из нашей объектной модели
http://politerm.com.ru/zuludoc/objectmodel2.htmОбъектную модель хорошо бы изучить.
По поводу чтения данных из базы, посмотрите примерный код:
Sub ReadData()
'Получаем доступ к окну сообщений
Set Ch = Application.OpenOutputChannel("Сообщения")
'Создаем объект "Layer"
Set L = CreateObject ("zululib.layer")
'Открываем слой
L.Open "D:\ZuluInstall_60\Zulu Files\Examples\Termo\Kvartal\teplosam.b00"
'Создаем объект "ZBDatabase"
Set Z = CreateObject ("zb.database")
'Открываем базу данных для типа с ID = 6
Z.Open L.ObjectTypes.Item(6).BaseName
'Получаем коллекцию ключей слоя
Set Keys = L.ElementKeys
'Открываем "Градусник"
Application.OpenProgressBar 100
for i=1 To Keys.Count
Application.SetProgressBar i*100.0/Keys.Count
'Получаем данные из базы данных по указанному ключу
Set ds = Z.SelectByKey (Keys(i))
'Если данные есть выводим в окно сообщений
if ds.MoveFirst = TRUE then
Ch.Put "Id:" + CStr(Keys(i))+ " "+ds.FieldValue(ds.GetFieldIndexByName(0, "L")) + chr(10)
end if
Next
Application.CloseProgressBar
End Sub
'Замена символа в поле
Sub ChangeSymbol()
'Создали объект слой
Set L = CreateObject("zululib.Layer")
'Открыли нужный слой
L.Open "c:\program files\zulu 7.0\examples\Gidro\voda.b00"
'Создали объект база данных
Set Db = CreateObject("zb.database")
'Открыли базу данных для типа 6 (колодец)
Db.Open L.ObjectTypes.Item(6).BaseName
'Получили все записи базы данных
Set Ds = Db.SelectAll
'Встали на первую запись
Ds.MoveFirst
Do
'Если дошли до конца, выходим из цикла
If Ds.EOF = True Then Exit Do
'Получили имя колодца из поля "Name"
sName = Ds.FieldValue(Ds.GetFieldIndexByName(0, "Name"))
'Заменили в строке "-" на " "
sName = Replace(sName, "-", " ")
'Получили ключ записи
Key = Ds.GetFieldValueVar(0)
'Обновляем поле с именем по ключу
Db.UpdateBaseRecord Key, "Name", sName, 0
'Встали на следующую запись
Ds.MoveNext
Loop
End Sub
Sub ReadData1()
'Получаем доступ к окну сообщений
Set Ch = Application.OpenOutputChannel("Сообщения")
'Создаем объект "Layer"
Set L = CreateObject ("zululib.layer")
'Открываем слой
L.Open "D:\ZuluInstall_60\Zulu Files\Examples\Termo\Kvartal\teplosam.b00"
'Создаем объект "ZBDatabase"
Set Z = CreateObject ("zb.database")
'Открываем базу данных для типа с ID = 6
Z.Open L.ObjectTypes.Item(6).BaseName
'Получаем данные из базы данных по указанному ключу
Set ds = Z.OpenSQL("", "SELECT * FROM 'D:\ZuluInstall_60\Zulu Files\Examples\Termo\Kvartal\uch.DB'")
'Если данные есть выводим в окно сообщений
ds.MoveFirst
do
if ds.Eof = true then exit do
Ch.Put "Id:" + ds.FieldValue(ds.GetFieldIndexByName(0, "Sys"))+ " " + "Len:" + ds.FieldValue(ds.GetFieldIndexByName(0, "L")) + chr(10)
ds.MoveNext
Loop
End Sub