RUS  ENG 

SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер

Страницы: 1
RSS
SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер, Помогите написать SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер
 
Помогите написать SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер.
Пробывал такой вариант:

UPD ATE [Конструкторский ХПВ РУ-4]
SE T "Узел" = CONCAT('ВК', LPAD(CAST(SUBSTRING("Узел", LOCATE('ВК', "Узел") + 2) AS INT) + 1, 2, '0'))
WHERE "Узел" LIKE 'ВК%';

Выдаёт:
nknown function 'CONCAT'.
Text: '('ВК', LPAD(CAST(SUBSTRING("Узел", LOCATE('ВК', "Узел") + 2) AS...'
Pos: 55, Ref: 0xE208
Изменено: Иван Вотчинов - 14.06.2024 07:55:06 (Добавил новые данные)
 
Здравствуйте!

Попробуйте решить эту задачу про помощи макроса
https://www.politerm.com/samples/zulugis/macros/NameUzel/
 
Спасибо получилось, но он нумерует все узлы.
Sub set_name_uzel

'type_uz - Водопроводный колодец
'preff - префикс
type_uz = 6
preff= "ВК-"

Set L = Zulu.ActiveMapDoc.Layers.Active

Set Db = CreateObject("Zb.ZbDatabase")

Db.Open L.ObjectTypes.Item(type_uz).BaseName



Set Keys = L.ElementKeys.SelectByType(type_uz,0)

n = 1

For i = 1 To Keys.Count


text = preff & n

Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0

n = n + 1
Next

MsgBox "Пронумеровано " & n-1 &" узлов"

End Sub

Мне нужно пронумеровать только водопроводный колодец, а разветвления не надо. Что-то подскажете?
 
Цитата
написал:
Спасибо получилось, но он нумерует все узлы.
Sub set_name_uzel

'type_uz - Водопроводный колодец
'preff - префикс
type_uz = 6
preff= "ВК-"



Мне нужно пронумеровать только водопроводный колодец, а разветвления не надо. Что-то подскажете?
Можно, например, в L.ElementKeys.SelectByType(type_uz,0) вместо нуля поставить номер нужного режима
Изменено: Алексей Аширов - 17.06.2024 08:55:05
 
А если оставить в нумерации несколько режимов?
 
Цитата
написал:
А если оставить в нумерации несколько режимов?
Тогда в цикле по ключу получать элемент и выбирать только нужные режимы
Код
Set el = L.Elements.Item(Keys.Item(i))
            
 If el.ModeId = 1 Or el.ModeId = 5 Then                
                '...............                
 end if    
 
Не пойму куда вставить
 
Цитата
написал:
For i = 1 To Keys.Count text = preff & n Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0 n = n + 1 Next
Код
For i = 1 To Keys.Count

Set el = L.Elements.Item(Keys.Item(i))   'Получаем объект по ключу
            
 If el.ModeId = 1 Or el.ModeId = 5 Then  'Применяем только к нужным режимам       

     text = preff & n

     Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0

      n = n + 1

 end if  

Next
 
Нумерует только водопроводные колодцы. Посмотрите что не так
Sub set_name_uzel

'type_uz - Водопроводный колодец
'preff - префикс
type_uz = 6
preff= "ВК-"

Set L = Zulu.ActiveMapDoc.Layers.Active

Set Db = CreateObject("Zb.ZbDatabase")

Db.Open L.ObjectTypes.Item(type_uz).BaseName



Set Keys = L.ElementKeys.SelectByType(type_uz,1)

n = 1

For i = 1 To Keys.Count


Set el = L.Elements.Item(Keys.Item(i)) 'Получаем объект по ключу

If el.ModeId = 1 Or el.ModeId = 4 Then 'Применяем только к нужным режимам

text = preff & n

Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0

n = n + 1

end if

Next

MsgBox "Пронумеровано " & n-1 &" узлов"

End Sub
 
Цитата
написал:
Нумерует только водопроводные колодцы. Посмотрите что не так

Set Keys = L.ElementKeys.SelectByType(type_uz,1)

Теперь единицу вернуть на 0 нужно
 
Спасибо, получилось
Страницы: 1