wtorek, 10 czerwca 2008

Raportowanie z bazy SharePoint przez SQL








W artykule opisana została procedura, która umożliwia proste raportowanie SQL z bazy SharePoint.




CREATE procedure [dbo].[WebCon_GetListData]
@listname varchar(100),
@weburl varchar(255)=''
as
begin
declare @loop varchar(5000)
declare @listid varchar(200)
declare @webid varchar(200)
declare @index1 int
declare @index2 int
declare @index3 int
declare @index4 int
declare @fieldDefStart int
declare @fieldDefEnd int
declare @fieldDef varchar(500)
declare @QSQL varchar (2000)
SET @QSQL = 'select '
set @webid=(select id from webs where fullurl=@weburl)
set @loop=(select tp_fields from alllists where tp_title like ''+@listname+''and tp_webid=@webid)
set @listid=(select tp_id from alllists where tp_title like ''+@listname+''and tp_webid=@webid)
set @fieldDefStart=patindex('%0)
begin
set @fieldDefStart=patindex('%',@loop,@fieldDefStart)
set @fieldDef=substring(@loop,@fieldDefStart,@fieldDefEnd-@fieldDefStart)
set @index1=patindex('% Name="%',@fieldDef)+7
set @index2=charindex('"',@fieldDef,@index1)
set @index3=patindex('%ColName%',@fieldDef)+9
set @index4=charindex('"',@fieldDef,@index3)
if(@index3>10)
begin
if (substring(@fieldDef,@index3,@index4-@index3)<>''and substring(@fieldDef,@index3,@index4-@index3)<>'Name=')
SET @QSQL=@QSQL+' '+substring(@fieldDef,@index3,@index4-@index3)+' as ['+replace(substring(@fieldDef,@index1,@index2-@index1),'_x0020_',' ')+'],
'
set @index1=1;
end
SET @loop=substring(@loop,@fieldDefEnd+1,5000)
set @fieldDefStart=patindex('%


Poniżej zaprezentowaliśmy przykład zastosowania powyższej procedury:

* Lista kontaktów ze strony głównej






* Lista zgloszonych błędów ze strony 'Asysta':


exec [dbo].[WebCon_GetListData] 'Bugs','Asysta'



>>> Baza naszych artykułów na stronie www.webcon.pl

>>> Baza naszych artykułów w języku angielskim

Brak komentarzy:

Prześlij komentarz