Другие продемонстрировали, как буквально перевести event+=
в AddHandler
в VB.
Однако, несмотря на сходство, VB и C # - разные языки, а хороший код C # может быть не очень хорошим кодом VB при переводе буквально. Например, в VB канонический способ привязки фиксированного обработчика событий к элементу управления ASP.NET использует ключевое слово Handles
:
Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, _
e As AsyncFileUploadEventArgs) _
Handles AsyncFileUpload1.UploadedComplete
' Your event handler code is here
End Sub
Использовать:
SELECT t1.id,
t1.parent_id,
t1.name,
t2.name AS parent_name,
t2.id AS parent_id
FROM tbl t1
LEFT JOIN tbl t2 ON t2.id = t1.parent_id
START WITH t1.id = 1
CONNECT BY PRIOR t1.id = t1.parent_id
Вы хотите это сделать? ?
SELECT id, parent_id, name,
(select Name from tbl where id = t.parent_id) parent_name
FROM tbl t start with id = 1 CONNECT BY PRIOR id = parent_id
Edit Другой вариант, основанный на варианте OMG (но я думаю, что он будет работать одинаково):
select
t1.id,
t1.parent_id,
t1.name,
t2.name AS parent_name,
t2.id AS parent_id
from
(select id, parent_id, name
from tbl
start with id = 1
connect by prior id = parent_id) t1
left join
tbl t2 on t2.id = t1.parent_id
Это немного громоздко, но я считаю, что это должно работать (без дополнительного присоединения). Это предполагает, что вы можете выбрать символ, который никогда не появится в рассматриваемом поле, чтобы действовать как разделитель.
Вы можете сделать это без вложенности select, но я считаю, что это немного чище, чем четыре ссылки на SYS_CONNECT_BY_PATH.
select id,
parent_id,
case
when lvl <> 1
then substr(name_path,
instr(name_path,'|',1,lvl-1)+1,
instr(name_path,'|',1,lvl)
-instr(name_path,'|',1,lvl-1)-1)
end as name
from (
SELECT id, parent_id, sys_connect_by_path(name,'|') as name_path, level as lvl
FROM tbl
START WITH id = 1
CONNECT BY PRIOR id = parent_id)