Страница 1 из 1

Как одним запросом получить полное имя файла док. архива?

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

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
да и сам запрос вроде не очень оптимальный...
в общем нужна помощь :wink: да и имя файла хотел увидеть не кодированное а первоначальное (чтобы дальше отдать правильный путь к файлу и дополнительно исходное - название файла) - ... но это вообще не знаю как достать...

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
Александр
:wink: :wink: :wink: :wink:
6700 файлов эт круто конечно :wink: (у тебя наверно их тысячи!!!!) :wink:
ладно... может Юрий или СК и 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 - и "все в твоих руках", как поет Анжелика Варум :D

Anderyt: "стрАка" - в отпуск пора. Раньше за тобой такого не замечал :lol:

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
Александр
ЭТО ТО ЧТО НУЖНО!!!
Спасибо! :wink: