Modifying the View of an External SharePoint List

Posted by Troy on July 19, 2010 under Business, Business Intelligence, Microsoft, Performance Management, SQL Server, SharePoint | Be the First to Comment

If you have been following along in the last few posts,  I have created an External Content Type called BcsSalesForecast with the following operations:

  • Read List
  • Read Item
  • Update

Then an External List was created called Sales Forecast 2010.  Up to now the main focus of the discussion has been around creating the External Content Type and the store procedures which are used as its data source.  However, if you currently view the list below its presentation as a lot to be desired.  First off, its sorted by ID and there are over 700 records with 30 per page which means that it could take awhile to find the record you are looking for.  

In order to make the list more “useable” it is possible to modify the view.   Before the view is modified a minor update is required to the data.  The Sales Forecast 2010 list is a weekly forecast application for 2010 and provides the previous years as a starting point (the data is actually from Adventure Works for 2008).    Ideally it would be nice to sort the data by week but I did not include a sort key as part of the original design.   But this can fixed by running the following UPDATE statement against the dbo.WeeklySalesForecast table:

update dbo.WeeklySalesForecast set WeekNumber = case when CONVERT( INT,SUBSTRING(WeekNumber,5,3)) < 10 then 'Week 0' + SUBSTRING(WeekNumber,6,1) else WeekNumber end

This will  add a leading 0 to all weeks that are less then week 10 which will ensure the sorting by Week will work.  Now you can navigate to the Sales Forecast 2010 list and click on the List tab:

image

Next  click Modify View but do not click on Modify in SharePoint Designer (Advanced).  For this scenario SharePoint 2010 Designer is not required.  The changes to the list can be performed in the browser.  Change the First Sort Column from ID to WeekNumber:

image

Next set the First Group By Column to SalesRegion and the Second Group By Column to ProductCategory:

image

Change the number of items to display per page from 30 to 300 :

image

Hide the SalesRegion and ProductCategory since these are redundant because they are being used as Groups. Secondly the ID field can be hidden because it is just required as the unique identifier for the row:

image

(Note: the position of the columns may be different than what you see when you “Modify” the view)

Click OK to save the changes to the view and now look at the List:

image

As you can see, a few simple modifications to the list can make a significant difference in terms of the lists usability.

Troy

Technorati Claim Token

Posted by Troy on July 18, 2010 under Uncategorized | Be the First to Comment

Claim Token:  TVMS77U6WB9R

 

Well, this is not actually a post.  I was hoping I could just post the Claim Token inside an HTML comment tag.  But I’ll give this a try. 

Troy

Creating an Update Operation for an External Content Type

Posted by Troy on July 17, 2010 under Business, Business Intelligence, IT, Microsoft, Performance Management, SQL Server, SharePoint | 3 Comments to Read

* Please note that the following post is based on SharePoint 2010 Foundation Server and not SharePoint 2010 Server. 

In a previous post , I created an External Content Type with 2 operations and then created an External List based on the External Content Type.  In short this means that you are now able to create a SharePoint List based on some external data (e.g. database table or store procedure in this example).   But currently the external data is read only because we only created the following operations for the External Content Type:

  • Read List
  • Read Item

Given that the example was based on Sales Forecast data at the very least we need to give the user the ability to update the data.  In order to do this a new operation needs to be added and a new stored procedure is required to support the operation.  Before we add the  the Update Operation to the BcsSalesForecast External Content Type we need to create a store procedure which will be used for this operation called dbo.BcsSalesForecastUpdate:

CREATE procedure [dbo].[BcsSalesForecastUpdate] @ID nvarchar(512), @ForecastAmount int as set nocount on update dbo.WeeklySalesForecast set ForecastAmount = @ForecastAmount from dbo.WeeklySalesForecast where EnglishMonthName + '-' + WeekNumber + '-' + SalesTerritoryRegion + '-' + Category = @ID

Now that the store procedure is created, SharePoint Designer can be used to add the new operation to the BcsSalesForecast External Content Type.  Navigate to the BcsSalesForecast External Content Type and click “Edit External Content Type” on the Ribbon:

image

Now click on the “Operations Design View” Menu item on the Ribbon:

image

Right-click on the Routine folder and select Refresh.   The dbo.BcsSalesForecastUpdate stored procedure should appear.  Right-click on the stored procedure and select “New Update Operation”. 

image

Make sure the @ID is select as the “Map to Identifier”:

select * from dbo.WeeklySalesForecast where ForecastAmount is not null

image

The BcsSalesForecastReadItem and the BcsSalesForecastReadList have to be updated too.  The following fields must be set to “Read Only” or the new Edit Form will not work:

  • MonthName
  • WeekNumber
  • SalesGroup
  • SalesRegion
  • ProductCategory
  • LastYearAmount

Below is an example of setting a field to read only.  Remember this must be performed on both the Read Item and Read List operations:

image 

Click Finish and the new operation has been created.  The solution is not finished yet.  Remember, we also have an External List called “Sales Forecast”.  If you view the Sales Forecast list and right-click on a row you will notice that there is a new menu item called “Edit Item” and the “Edit Item” button in the ribbon is no longer grayed out.   Try to edit the row.  You should receive the following error:

image

The reason for this is that an Edit Form does not exist for the list.  To work around this we can simply create a new External List and call it “Sales Forecast 2010” and the SharePoint designer will create the necessary forms depending on what operations have been defined for the External Content Type:

image

Select the list in SharePoint Designer and click the “Preview in Browser” button on the Ribbon to try out the new “Edit” functionality.  Right-click on any row on the list and select Edit item.  The following form will pop-up:

image

Click Save and the the SharePoint List and the External Data will be updated.   Use Management Studio and execute the following query against the dbo.WeeklySalesForecast:

select * from dbo.WeeklySalesForecast where ForecastAmount is not null

Now this example may not be practical especially if one person was responsible for updating all of the forecast data.  But this example shows how easy it is to create a simple CRUD (Create, Read, Update, Delete) based application based on External data with little or no code.   This example only implemented the Read and Update operations but the Create and Delete operations would be very easy to implement and would require 2 more stored procedures (dbo.BcsSalesForecastCreate, dbo.BcsSalesForecastDelete)

Troy

Setting Permissions for an External Content Type

Posted by Troy on July 9, 2010 under Business Intelligence, IT, Microsoft, SQL Server, SharePoint | Be the First to Comment

In a previous post, I created an External Content Type based on the following Stored Procedures:

  • dbo.BcsSalesForecastReadList
  • dbo.BcsSalesForecastReadItem

Before you can use the External Content Type the permissions must be set.   The permissions are set using the SharePoint 2010 Central Administration Panel.  Open the Central Administration Panel and you should see the following:

image

Under the Application Management Section click on the Manage Service Application settings link.  Next Click on the Business Connectivity Data Service and you should see the External Content Type called BcsSalesForecast:

image

Hover over the BcsSalesForecast External Content Type and select “Set Permissions” from the drop down box:

image 

Type in the username (Domain\userid) and click check names to verify the user and then click Add.  Once the user or users are added you can set the permissions.  When I was adding my user id I found that I had to be connected to my domain in order to add my account.  For example, if you are using laptop at home and you are not connected to your companies domain you probably won’t be able to add the account to the External Content Type.  If you have VPN Access to you company network then you can connect to the Domain and then try adding the Account.

image

Once the permissions have been set you can now create an External List based on the External Content Type using the SharePoint Designer.  Just Navigate to the External Content Type in the SharePoint Designer and Select BcsSalesForecast and then click External List located in the Ribbon as shown below:

image

This will create an External List called Sales Forecast. Because only ReadList and ReadItem operations are defined for the External Content Type, for now, you can only view all the items in for the Forecast or view the details of one item.

image

If you have not set the permission for the External Content Type you will receive the following error when you try to access the External List:

Access denied by Business Data Connectivity.

Troy

Running Eclipse Helios on Windows 7 (64 bit)

Posted by Troy on July 4, 2010 under Eclipse, IT, Open Source, Web | Be the First to Comment

 

If you have installed Eclipse Helios (64-bit) on Windows 7 (64-bit), make sure the correct version of java (64-bit) is installed on the computer:

http://www.java.com/en/download/manual.jsp

If you have java installed and you get the error shown below when you try to run Eclipse chances are you have the 32-bit version of Java installed:

"Failed to load the JNI shared library "C:\Program Files(x86)…”

Thanks to this post from the Eclipse Community Forums

http://www.eclipse.org/forums/index.php?t=msg&goto=542940&#msg_542940

 

Troy