Страница 1 из 1
Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 12:29
Александр
Никто не покажет SQL примерчик
Начальные условия
-есть id карточки документа id_card
-в электронном открытом архиве есть документ привязанный к этой карточке - с расширением xml
Нужно получить полный путь (полный путь+полное имя файла) к нулевой версии файла, чтобы передать его потом в виде строки в vbscript
как это можно сделать в одном запросе? а то в таблицах потерялся уже

Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 12:58
Александр
что-то типа вот такого
Код: Выделить всё
select top(1)(select path from lsdbo.storage_v v where v.id=f.storage_id)+file_path+file_name
from LSDBO.File_V f,
LSDBO.object_reference_view o
where f.object_reference_id=o.ID
and f.object_reference_id=(
тут ищу(своей функцией) все дочерние (от родителя 100001241400044) карточки документов
select id from lsdbo.ric_get_objChild(100001241400044,'Docs,Doc'
)
where description='Схема проезда')
ну тут номера версии нет в имени файла.... и расширение не учитывается...
вместо этого
Код: Выделить всё
\\crm\Base_for_Lotsia\Departments\Документы\Схема проезда\Григорьева Елена Андреевна\51R00.doc
выводит такое
Код: Выделить всё
\\crm\Base_for_Lotsia\Departments\Документы\Схема проезда\Григорьева Елена Андреевна\51R.doc
да и сам запрос вроде не очень оптимальный...
в общем нужна помощь

да и имя файла хотел увидеть не кодированное а первоначальное (чтобы дальше отдать правильный путь к файлу и дополнительно исходное - название файла) - ... но это вообще не знаю как достать...
Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 13:34
Anderyt
если быстро - то:
Код: Выделить всё
select top 100 s.path+f.file_name
from lsdbo.file_v f, lsdbo.storage_v s
where
f.storage_id = s.id
это вот эти таблицы

но в имя файла нужно еще вставить номер версии, так как в таблице file_v хранится имя для документа, а не для версии документа..
там надо видимо как то страку разрезать, я не соображу пока... ну, наверное ты сам додумаешь

Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 15:01
Александр
6700 файлов эт круто конечно

(у тебя наверно их тысячи!!!!)
ладно... может Юрий или СК и Disillusioned что подскажут....
все равно спасибо!
глубоко запрятали!!!! - думал есть стандартная процедура (запрос)
Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 15:41
Anderyt
а если это:
Код: Выделить всё
select top 100 s.path+substring(f.file_name, 1,charindex('.', f.file_name)-1)+'00'+substring(f.file_name, charindex('.', f.file_name),len(f.file_name))
from lsdbo.file_v f, lsdbo.storage_v s
where
f.storage_id = s.id
Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 15:54
Anderyt
Anderyt писал(а):там надо видимо как то страку разрезать, я не соображу пока...
"страку"...
копец... на покой, срочно на покой!
Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 19 май 2010, 20:21
Старик Крупский
Сейчас не скажу - дома базы под рукой нет. Но по-моему в табличке File_ver есть колонка ver_label. Наверное, это и есть номер версии. Так что, наверное, File1.id = File_ver.file_id - и "все в твоих руках", как поет Анжелика Варум
Anderyt: "стрАка" - в отпуск пора. Раньше за тобой такого не замечал

Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 27 май 2010, 16:02
Юрий
Держи
Код: Выделить всё
select st1.id storage_id, st1.Path,
'fn1'=case
when patindex('%.%_',fl1.file_name)=0 then fl1.file_name+fv1.ver_label
else substring(fl1.file_name, 1, patindex('%.%_',fl1.file_name)-1)+
fv1.ver_label+substring(fl1.file_name, patindex('%.%_',fl1.file_name),
len(fl1.file_name)-patindex('%.%_',fl1.file_name)+1)
end,
--fn1,
fl1.object_reference_id object_id, fl1.id file_id, fv1.id ver_id, fv1.orig_filepath
from LSDBO.File1 fl1
inner join LSDBO.file_ver fv1 on fl1.id=fv1.file_id
inner join LSDBO.Storage st1 on fl1.storage_id=st1.id
Re: Как одним запросом получить полное имя файла док. архива?
Добавлено: 28 май 2010, 06:32
Александр
ЭТО ТО ЧТО НУЖНО!!!
Спасибо!
