RUS  ENG 

SQL запрос из макроса по двум слоям

Страницы: 1
RSS
SQL запрос из макроса по двум слоям
 
Добрый день.
Стоит задача по вызову sql запроса из макроса, при этом в запросе участвуют несколько слоев.

Что хочу:

upd ate [СНО]
se t L1.[Улица:] = L2.[Участок:],
L1.[Район:] = L2.[Район:] ,
L1.[Населённый пункт:] = L2.[Населённый пункт:]
fr om [СНО] as L1, [Улицы] as L2
wh ere L1.typeid = 2 and L1.geometry.stwithin(L2.geometry)

Запустить такой запрос из макроса и именно с помощью ExecSQL, без использования zb.database и ZuluLib.ZGeometry

sub test
L = Zulu.ActiveMapDoc.Layers.Active
L.ExecSQL("Вставить сюда")
end sub*

Возможно ли это в принципе?

*это пример
 
Сергей Мечев,
Да, возможно. Только правильно начало запроса начинать так:
UPDATE L1 ….
Т.к. в разделе FROM Вы используете псевдонимы источников (слоёв)
 
Цитата
написал:
Сергей Мечев,
Да, возможно. Только правильно начало запроса начинать так:
UPDATE L1 ….
Т.к. в разделе FROM Вы используете псевдонимы источников (слоёв)
а можете пожалуйста написать пример такого макроса? Не сильно понятно как макрос поймет откуда второй слой взялся. Вызов же идёт от какого-то одного слоя?
 
Цитата
написал:
Цитата
написал:
Сергей Мечев ,
Да, возможно. Только правильно начало запроса начинать так:
UPDATE L1 ….
Т.к. в разделе FROM Вы используете псевдонимы источников (слоёв)
а можете пожалуйста написать пример такого макроса? Не сильно понятно как макрос поймет откуда второй слой взялся. Вызов же идёт от какого-то одного слоя?
Из двух слоев можно создать карту и выполнить запрос к карте, например
Код
Sub MapDocExecSql

Set Map = CreateObject("ZuluLib.MapDoc")

Map.AddLayer "d:\samples\Layer1.b00"

Map.AddLayer "d:\samples\Layer2.b00"
       
Set Result = Map.ExecSQL("SELECT L1.SYS, L2.Sys FROM [layer1] as L1, [layer2] as L2 WHERE L1.Geometry.Intersects(L2.Geometry)")     
    
Set ds = Result.DataSet

ds.MoveFirst

msgbox ds.FieldValue(0) + ", " + ds.FieldValue(1)
    
End Sub
 
Цитата
написал:
Цитата
написал:
Цитата
написал:
Сергей Мечев ,
Да, возможно. Только правильно начало запроса начинать так:
UPD ATE L1 ….
Т.к. в разделе FR OM Вы используете псевдонимы источников (слоёв)
а можете пожалуйста написать пример такого макроса? Не сильно понятно как макрос поймет откуда второй слой взялся. Вызов же идёт от какого-то одного слоя?
Из двух слоев можно создать карту и выполнить запрос к карте, например
Код
 Sub MapDocExecSql

Se t Map = CreateObject("ZuluLib.MapDoc")

Map.AddLayer "d:\samples\Layer1.b00"

Map.AddLayer "d:\samples\Layer2.b00"
       
Set Result = Map.ExecSQL("SEL ECT L1.SYS, L2.Sys FR OM [layer1] as L1, [layer2] as L2 WH ERE L1.Geometry.Intersects(L2.Geometry)")     
    
Set ds = Result.DataSet

ds.MoveFirst

msgbox ds.FieldValue(0) + ", " + ds.FieldValue(1)
    
End Sub
 
спасибо за ответ!
Страницы: 1