Sharepoint 2007: best practice to put external database data onto web page - sharepoint

I have Sharepoint 2007 site and have to implement filter (comboboxes) for the list of employees stored in external database.
I can develop web part with asp:DropDownList(s), data access library and asp:Repeater stuff, but don't wanna mess with paging and sorting. May be it's better to populate standard sharepoint list that will be present under my filters via my DAL ?
How would you implement such a task?

Here are my suggestions:
SharePoint List Source and Destination - this is a CodePlex project for an SSIS SharePoint adapter. We used it successfully earlier this year for transferring data between SQL Server and SharePoint.
Custom Timer Job - you could create a SPJobDefinition class that is your own mini-homespun ETL comparing the SharePoint list to the database tables and then making any necessary transfers.
Business Data Catalog (BDC) - I'm not a fan, but you might have better luck with it.
SharePoint 2010 - I'm not sure if this is an option, but I'll mention it. The BDC of SharePoint 2007 has grown into Business Connectivity Services (BCS) in SharePoint 2010. I haven't had a chance to play with it yet, but it is supposed to be much improved for accessing external data.

Related

SharePoint MOSS BDC for reading in opml feeds

We currently have some c# code that runs and imports data from a number of opml feeds and stores it in several sql server tables.
We are working in a moss environment and I am thinking the Business Data Catalog may be able to be utilised to make this process more robust/efficient.
Can anyone suggest if it can?
Yes it can, since the BDC is there spcifically to be able to use external data within sharepoint. You will need to have a SharePoint Enterprise edition license to user the BDC though...

Capital Expenditure application in sharepoint

We got an requirement for implementing captial expenditure lotus notes application in sharepoint. It's having nearly five massive forms with all expense calculations and workflows.
What is the suggested approach in sharepoint to implement this?
I would agree that creating a custom ASP.net/SQL server web app would be the way to go if you have some ASP.net programmers available, though I'd recommend against embedding it via a Page Viewer Web Part. You can integrate ASP.net web apps directly in SharePoint, no embedding required.
If you don't have ASP.net programmers available, you can certainly do it in SharePoint and it may not be painful. The key issues are where you need to store your data and how relational the data needs to be. If the requirement is to store data in a relational DB, it becomes complicated to do it in SharePoint.
On the other hand, if you can imagine recreating your application's data as a collection of Excel spreadsheets, then it will be pretty straightforward to do it in SharePoint. In the simplest scenario, you could do all "development" using the SharePoint web interface. You would create a custom list in a SharePoint site for each expense form, then customize the site's default.aspx page to display a link the newform.aspx for each list. If the wokflows are basic notification/approval types, then you can also attach SharePoint built-in workflows to the lists via the web interface.
If you need custom form layouts, custom workflows and dynamic data filtering, then you could use SharePoint Designer to accomplish a great deal of design and development. Without more information about the existing application and workflows, it's impossible to say exactly how you should do it. But make sure you consider what parts of the existing application are requirements and what parts are just legacy functionality. If you can simplify the application, this is a great opportunity to do it.
While you can do it in SharePoint, it will be painful. You may be better off implementing the application as a stock ASP.net/SQL DB application and embedding it into SharePoint with a Page Viewer Web Part.
You can also skin your custom application to look like SharePoint using one of the SharePoint master pages as a template and link to it from your portal.
For added SharePoint integration, you can use Data View Web Parts or the Business Data Catalog (MOSS only) to query your expenditure application database and embed small reports and key performance indicators throughout your portal.
Alternatively to a Custom web app:
Create custom web controls implementing the forms and kicking off the workflows with custom layout pages to host the controls?
A site definition (just feature to add the pages+layouts at a pinch) to host the created pages "just so" in order to rely on "form1.aspx" being available always.
I would not try to "push" OOTB SharePoint functionality envelope to avoid creating custom code. Easier by far to
If you are going to do extensive workflow work in SharePoint be sure to consider buying an add-on like Nintex workflow or Blackpoint. It is almost always worth the expense over creating workflows with Visual Studio or SharePoint designer.
It's not easy to implement a solution for this in SharePoint, but we have a SharePoint App we're releasing in March 2014 which is a great capital expenditure workflow solution. http://budgetworkflow.com

Best method for pulling data out of SharePoint to use with a Business Intelligence application

Asked this first on serverfault, and someone recommended that I ask here.
I'm looking for advice from anyone out there who has experience integrating SharePoint with a business intelligence application like Cognos.
Our BI team wants to be able to report on data stored in SharePoint. Their tool of choice is Cognos. What's the best way to get the data they're looking for OUT of SharePoint and into Cognos BI for analysis?
To clarify I'm NOT looking for a way to display Cognos reports in SharePoint. We want to take the list data from SharePoint and use Cognos to report on it.
Since the SharePoint database itself is extremely complex it is not recommended to access it directly. You do however have to alternatives to pulling the data out.
List RSS Feed
The simplest and easiest way would be to enable RSS on the lists you want exported and then pulling the RSS feeds into a seperate database using an external tool.
List WebService
The second option is to use the SharePoint List Web Services. These are standard ASMX webservices that expose the data inside any list to an external source. You can access any list as a Web Service as follows:
[Sharepoint Site Url] + _vti_bin/Lists.asmx.
The details on using the List Web Service is on MSDN here
Diago is right, never touch the DB. In answer to your BI question I recently responded to a similar one here Combining data from Project Server and SharePoint into a single report

Performance data analysis in SharePoint

Are there any tools on the market that effectively analyze data in SharePoint lists? I have a client looking to analyze and report on employee performance data stored in SharePoint.
Does SSRS give you anything useful?
Do you just need to report the data, or do you require complicated aggregation?
Nintex reports on SharePoint itself (and is acually quite cheap). The way the question is stated the report might be about employee data in a sharepoint list so SSRS does make more sense.
You can also look at some the BI features that come with MOSS Enterprise such as the KPI web part, scorecards, reports, Excel services and dashboards.
In addition to SSRS you should also consider using either Excel or Access to run reports :-
Analysing SharePoint Data in Excel
(Look for the section titled SharePoint-to-Excel and Data Synchronization)
How to Link SharePoint Server 2007 Lists with Microsoft Access 2007
Page currently borked, cached version http://209.85.229.132/search?q=cache:YnuTwWha77UJ:sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx%3FID%3D68+connecting+access+to+sharepoint+lists&cd=5&hl=en&ct=clnk
Remember that you can also access the list data as XML so any 3rd party BI/reporting tool that can call one of SharePoints web services and manipulate the resulting XML could also be used - there are must be hundreds of contenders here.
The best tool to use depends upon many factors such as what you may be familiar with, the complexity of analysis you need, if you need static or dynamic reports (drill down etc). BI & Reporting tools are a huge area!
Finally if you need fairly simple PivotTable/crosstab type functionality then this CrossTab web part may be suitable (disclaimer - its sold by my company)

Easiest way to extract SharePoint list data to a separate SQL Server table?

Edited:
What is the easiest way to scrape extract SharePoint list data to a separate SQL Server table? One condition: you're in a work environment where you don't control the SQL Server behind the SharePoint Server, so you can't just pull from the UserData table.
Is there there any utilities that you can use to schedule a nightly extract?
Is Microsoft planning any improvement here for "SharePoint 4"?
Update Jan 06, 2009:
http://connectionstrings.com/sharepoint
For servers where office is not installed you will need:
this download
There is a SSIS SharePoint task you can use to grab the data info a regular dataflow:
http://www.codeplex.com/SQLSrvIntegrationSrv
Scraping? As in screen scraping? Are you serious? ;)
2 Options
SharePoint Object Model - http://msdn.microsoft.com/en-us/library/ms441339.aspx
SharePoint Web Services - http://msdn.microsoft.com/en-us/library/ms479390.aspx
specifically the Lists web service
The web services is how Excel/Access communicate with SharePoint to integrate with its lists.
In fact a bit of Google foo gives these two results :-
Connecting SQL Reporting Services to a SharePoint List
Accessing SharePoint List Items with SQL Server 2005 Reporting Services
The 2 minute answer is to use Data Synchronisation Studio from Simego ( http://www.simego.com ) just point it at your List and database and it will sync all the changes.
There is an ADO.NET adapter for MOSS 2007/2010 and WSS 3.0/4.0 available which goes under the name Camelot .NET Connector for Microsoft SharePoint. It enables you to query lists in SharePoint through standard SQL language, using SharePoint as a data layer.
Besides from the connector, there will be a large number of open source tools and utilities available, such as webparts for exporting data to various formats (XML, MySQL, ..), Joomla plugins, synchronization services, etc.
See http://www.bendsoft.com for more details and to watch webcasts. BendSoft is currently looking for beta-testers and encourage all feedback from the community.
Example:
SELECT * FROM My Custom SharePoint List
INSERT INTO Calendar (EventDate,EndDate,Title,Location) VALUES ('2010-11-04 08:00:00','2010-11-04 10:00:00','Morning meeting with Leia','Starbucks')
DELETE FROM Corp Images WHERE Image Name = 'marketing.jpg'
I had written a full article about this with step by step screenshot procedures. It does not use any third party components only SQL BI Tools and Sharepoint. Have a look here
http://macaalay.com/2013/11/01/how-to-archive-sharepoint-list-items-to-sql-server/
As Ryan said I would also suggest using object model / web services to store data to separate SQL database. I think that the best approach is to write an event handler that will trigger on your least and copy the data user inserted/updated.
Regarding your query about "SharePoint 4", Bill Gates made some remarks at SharePoint Conference 2008. He suggests enriching SQL tables with SharePoint data, and goes on to mention several other potentially cool things. What exactly he means and whether it will help solve your problem in the future is hard to say until we start seeing betas of WSS4 / MOSS 14.
I would go with the simego software, but i dont have the money, maybe a 15 days trial is enough!
If you have MOSS installed, the Business Data Catalog can be setup from the Sharepoint Central Administration to automagically synchronize data for you. This is a very powerful product and is included with MOSS. I love it when a client has it enabled so I can take advantage of it.
But some don't and for myself, I've found that if they don't have BDC running and available, inevitably they don't give developers many rights to SQL Server so SSIS is generally out of the question (but maybe that's just me). No problem; for those I'll pull together a lightweight EXE that runs on a scheduled task that queries Lists.asmx and pushes changes to a SQL Server table. Fairly trivial stuff for a simple list where nothing is deleted. Get yourself Visual Studio 2008, CAML Builder, and prepare for a good time. The Lists.asmx results is a little funny in that a list's row's fields are each a single node with a lot of attributes, with no child nodes ... something like this off the top of my head ... just remember that when coding ...
<z:row ows_Id="1" ows_Field1="A1" ows_Field2="B1"/>
<z:row ows_Id="1" ows_Field1="A2" ows_Field2="B2"/>
Complications in code occur with copying lists where items are deleted, or where there is a parent/child relationship between SP lists. You'd think I'd have some code to send you, but I haven't bothered putting together something I could reuse.
I'm sure there's other ways of handling it, but the scheduled task EXE so far has been reliable for me for multiple apps for multiple years.
i wrote some code to achieve it, you can find it over here
extract data from moss 2007
Depending on the exact nature of the data you need to insert, it may be possible to just use the auto generated RSS feed to get the information you want, a process will need to read the rss and formulate a query.
Otherwise a consoleapp/service could use the object model to do the same thing, but with more control over field information.
I wish something like this was much easier to do. Something that didn't need SSIS and was boiled down to a console tool that reads a xml config file for source/target/map info.
http://blogs.officezealot.com/mtblog/archive/2008/06/03/importing-list-data-into-sql.aspx

Resources