Checking Reports against a changing Data Model - sharepoint

I am working on a SharePoint application where the data is kept in lists. For ease of reporting, we create views in SQL Server 2005 that link lists together, and our Reporting Services model is based on these views.
As users add/modify/delete fields, our views become stale. When we recreate the views, some reports are no longer valid. What is the best way to allow users to modify fields and update the existing reports automatically (or notify an admin that a report has been broken by changing a field)?

Have you thought about reporting directly off the Lists, maybe using a product like http://www.enesyssoftware.com/ which is a reporting service data extension. This still won't help with your reports going stale when your users add/remove column.

Related

Restricting Views of users on Sharepoint lists

I am developing a sharepoint 2010 project.
I want to restrict users view on lists based on their identity. (e.g. the branch of organization they work in, but in fact the ristrictions can be more complicated).
What solutions do you recommend?
With out of the box features this is not possible. You can go to great lengths to remove the list's view selectors and other navigational elements that let people cruise around a the schema and metadata for a list but it is not a security mechanism.
If a user has read permissions to an item, they'll have read access to all the fields of that item.
There is an outside chance that it you disabled all RPC mechanisms, SOAP, RESTful web services, Client Object Model and the office clients that you might be able to claim this as a security mechanism. If you don't there will always be a way around your "security" scheme.
This feature can't be implemented by SharePoint by now and I think neither for the next version
You can use a third part tool to achieve it, such as BoostSolutions' Column/View Permission or LightningTools' DeliverPoint
BTW, I work for BoostSolutions and I mentioned our own product because it works for your issue. Hope it helps :)
create sharepoint groups based upon your requirement or diffrent type of user base and accordingly give them rights may be item level or on complete list
and while doing these things just go through the following posts
http://blogs.gartner.com/neil_macdonald/2009/02/25/sharepoint-security-best-practices/
http://weblogs.asp.net/erobillard/archive/2008/09/11/sharepoint-security-hard-limits-and-recommended-practices.aspx
Not 100% sure on SharePoint 2010, but definitley for SharePoint 2007, there is not a way to do this, especially if the views are corresponding to security requirements on the columns users are able to see.
One way to work around this is have the list be not accessible by users, and then have code logic allow for access to the data creating the different "views" on the data in something like a Web Part. The downsides to this is search becomes an issue (since the data is hidden) and having multiple "views" of the data (if necessary) is also another item to work through.
I know its a very old question but posting it as it might help someone.
There is an work around to do it as described here
I find it easier, if possible, to create the view and lock it with the filters on the list settings page.
For example, I have a list of employees that includes their employee IDs. I use that list on other pages to gather data in other webparts. So I filter the employee list to [ME]. So the data is available to the page needing it to filter others and they cannot see anything else.
Now, what about the person who needs to manage that page? I create a view, call it HR. That view can see everything. Then I export that webpart with that list view on it through the designer. I then delete the HR view from the employee list.
This leaves no way for anyone to switch views and see everything again. I create a webpart page for the person who manages it, and I upload that webpart and set the view of the webpart to HR. In the end, I have a page that I lock down instead of trying to lock down views or list permissions separately.
Would you be able to have two lists that are joined. One that all users have access to and another that only certain people have access to, and then join them? Then maybe the people that don't have access to the other table it doesn't pull the information? Not sure, but I'll try that out later today.

comparing sharepoint list and sqlserver table

I have a list in sharepoint which maintains particular month OnCall list,and we are maintaining employee directory in sql server. My requirement is to get complete data from sql server and show it in sharepoint and compare with sharepoint list and show small icon for the employees who are On Call for that particular Month. Can anyone please suggest me the waus of implementing this.
Thanks in advance.
Update: I have finished the part where I have to connect to the sqlserver database and get the employees information. For this we are using 3rd party web part to connect to the sql server and pull the data from the table. Now I have to show some kind of image on the employee name to show that he is on-call for that week. We are going to cretae custom list for maintaing the list of people who are on-Call. Can anyone please advise me on how to accomplish this.
Write a custom webpart which will pull the data from the list using sharepoint object model and SQL server using ADO.NET and do the said comparison.
If you were looking for out of the box, I am afraid there i too little information given here to analyze if its feasible out of the box or not.
If you have the SharePoint Enterprise version, you can look at using the Business Data Catalog. This will let you bind columns to external data sources. This might provide you with the functionality you're looking for.
If you do not have the Enterprise features, do you have access to deploy WSP packages and custom code?
You will have to write your own data access to your external data source. Your options would be to have a job that pulls data from the external data source and populates SharePoint list(s) or create a custom view that pulls the external data on-demand.
You'll have to come up with synchronization strategies. Meaning, is the data in the external SQL data source static, reference information that does not need to be updated depending on what a user does in SharePoint? This seems to be the case based on your question. If you do need to update the external data source, you'll have to hook into the on save event (so probably a custom event handler that listens for ItemAdding) to update the data, validate, and optionally cancel the operation with an error message.
If you can't deploy WSP packages / DLLs, you could take a look at the jQuery SharePoint library. This will let you interact with lists using jQuery. If you also write a WCF or Web Service wrapper around the data you need access to from your external data source that is accessible from the SharePoint environment, you can use hack together a solution.
To accomplish this you'd need to place a Content Editor Web Part on the page you need custom data access. In there you will write the code to reference the jQuery javascript library and jQuery SharePoint library. The code will have to make the calls to your external data service and make any updates you need.
This is the least reliable method to accomplish what you want since it's entirely page-based and can be broken by simply disabling script or someone editing the CEWP or removing it altogether.
If you don't have access to place a CEWP or any of the other solutions, then you have no options at all.
it relatively easy now to pull all the data using the third party webpart and saving it into a custom list. I would recommend you not only creating custom list but also creating the content types for this list. take a look at SharPoint MVP's post about creating a Custom List with Content Types

Moving Data Views Across Sharepoint Sites

We have a production SharePoint site that uses a custom database quite a bit. We have a dev site on a separate box where we develop all of our things then move them over to a live site when they are ready for our customers.
We have many pages that use data views to show information from the database. Most of the actual programmability is done with stored procedures and UDF's in the database itself. One of the problems we are having is that when we try to move these custom pages over from one site to another (even if within the same SharePoint installation), the data views become broken. As far as I can tell, the data views are associated with data connections via a GUID. We can go in and set up all of these connections by hand on the new site, however there is no option in the data view webpart to change the data view's associated connection.
At present, this pretty much prevents us from developing on a separate site at all. Doing a command-line SharePoint export/import is an all-inclusive way of accomplishing this. However, ignoring the limited options for this operation, it is at best unreliable. Our first attempts left out some of the content (like custom aspx pages). As we began to create more complex customizations on the SharePoint site, the export function stopped working altogether only to return cryptic errors.
Has anyone else found a good way to do this?
You can do the following:
Create a new page on the destination sharepoint and include an empty data view
copy/paste the old code into the new page
Replace the webpart id of the old dataview with the new one
It worked for me, although I'm still struggling with some complex forms that use drop-down lists that lookup their values in the database depending on other fields. For that I use custom datasources and on the original site they work... but haven't had success in copying it to the new one.

What kinds of problems have there been using Access databases with SharePoint?

Just curious what the experience has been in uploading MS Access tables to SharePoint 2007 list. We've been planning on doing so, but I seem to recall issues with SharePoint mangling Access tables in the resulting lists and generally the migrations not going so well. Your experiences? Best practices and recommendations? I'm particularly concerned on its ability to migrate forms and reports as well if it can do so. Thanks!
In response to a question from UK SharePoint User Group I wrote a blog post on Using Access 2007 with SharePoint lists which you might find interesting (some interesting comments too).
There is no facility to migrate forms or reports in Access 2007/SharePoint 2007, only tables. Lots of new stuff in Access 2010/SharePoint 2010 which will allow you to create Access Web databases for SharePoint.
Derek
As mentioned, the big news for Access 2010 is we can build web sites and publish applications to the web. Here is a video of me running ms-access in a browser (the 1st part is in the client, but you clearly see me switch to the browser version of the application about ½ into the video):
www.members.shaw.ca/MrTurtle/2010d1/w1.html
For access 2010 the tables (or so called lists) are going to have things like cascade deletes, cascade delete restrict. There also again a whole bunch of performance improvements that will allow much larger list sizes to perform well.
Note that the new table triggers (data macros) will also go up to SharePoint when you publish the database.
For access 2007, there is not really any particular special problems, but there is just more limitations compared to the next version of access that is coming out. So for example if you need to link up a whole bunch of related tables you have in 2007, when you push the tables up to sharepoint, you don’t have any cascade deletes or any RI options like you’ll have in access 2010.
So I don’t recommend pushing up an application with a whole bunch of interrelated tables. It just not going to work. However, if you have a simple customer list or contact list of a few thousand names that you need to share, then access 2007 should work just fine for you.
So, keep in mind if you have a list or table you need to share, then fine. However, you not going to have any luck or success if you have a whole bunch of tables that are interrelated, and you need to run the application in that fashion.

Reporting Services Connection to SharePoint

I need to create reports on SQL Server Reporting Services 2005 (SSRS) on data coming from SharePoint Lists,
i was searching for ways to do that and i found,
connecting to SharePoint web service
out put XML, the problem here is it
sometimes work and sometimes don't,
and also i couldn't do inner join
between different lists may be it is
there but it will be trouble to do
it i think (if there is easy way
tell me please)
Creating a link table in MS Access
2007 that links to sharepoint lists,
and then connect to the MS ACCESS
link tables from SSRS 2005 : this
will work but i am kind of scared of
having ACCESS in the middle i always
want to avoid using access
connecting to the views provided in
the sharepoints backend database
(there is a view for all lists and
another view for all list items) :
here column names will be troublsome
to create the query the clounm names
are like
(float1,float2,...,date1,date2,date3,....)
, also i am not sure if it is good
thing to make SSRS talk directly to
sharepoints backend database views
can you tell me which of these ways is best (or if there is a better way plz tell me)
i kind of like the third way but not sure if i should use it
I have summarized this problem on our wiki, but it is not complete.
http://wiki.threewill.com/display/enterprise/Reporting+on+List+Data+in+SharePoint.
Note that we have since tried out the CorasWorks DIT and it looks like a promising approach.
We are exporting all the data to a SQL database everynight ( we have also started to move items away from Sharepoint because of performance). Then we use standard Reporting Services to create the reports....
(+) reporting doesn't hit the performance of day to day activities in Sharepoint
(-) the data is "one day" old
Check out SharePoint List Assocation Manager, SLAM.
Allows you to do exactly what you're looking to do in real time and it's free and very well supported.
http://slam.codeplex.com

Resources