Archive
Updating database collation
Had some fun trying to update a database collation. I didn’t have to worry about the data i just needed to the collation changed so that some cross database scripts would still function in order to carry out some testing.
Here is a nice little script I found that will generate scripts to change the collation on the required columns. Some of it fails if primary keys or indexes are against the columns but this will do 90%.
SELECT
CAST(o.table_name + ‘ -> ‘ + c.name AS VARCHAR(60))
, ‘ALTER TABLE ‘ + o.table_name +
‘ ALTER COLUMN [‘ + c.name + ‘] ‘ +
UPPER(t.name) + ‘(‘ +
CASE
WHEN t.name IN (‘nchar’, ‘nvarchar’) AND c.max_length != -1 THEN CAST(c.max_length / 2 AS NVARCHAR(10))
WHEN t.name IN (‘nchar’, ‘nvarchar’) AND c.max_length = -1 THEN ‘MAX’
ELSE CAST(c.max_length AS NVARCHAR(10))
END + ‘) COLLATE ‘ + @collate +
CASE WHEN c.is_nullable = 1
THEN ‘ NULL’
ELSE ‘ NOT NULL’
END
FROM sys.columns c WITH (NOWAIT)
JOIN (
SELECT
table_name = ‘[‘ + s.name + ‘].[‘ + o.name + ‘]‘
, o.[object_id]
FROM sys.objects o WITH (NOWAIT)
JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id]
WHERE o.[type] = ‘U’
) o ON c.[object_id] = o.[object_id]
JOIN sys.types t WITH (NOWAIT) ON c.system_type_id = t.system_type_id AND c.user_type_id = t.user_type_id
WHERE t.name IN (‘char’, ‘varchar’, ‘text’, ‘nvarchar’, ‘ntext’, ‘nchar’)
–AND c.collation_name != @collate
ORDER BY
o.table_name
, c.column_id
via Buzz Blog http://paulbuzzblog.wordpress.com/2014/01/10/updating-database-collation/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Changing the format of date parameters on SSRS 2012
Had an issue today where the date parameters were being forced into US data format and not using any of the regional settings from the OS or SharePoint.
This has apparently been fixed in SQL 2012 SP1 CU5 update but i have not confirmed this.
Has a workaround that required you to add a culture into the RSViewerPage.aspx located in
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ReportServer
or
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\ReportServer
in SharePoint 2013
You need to add UICulture="en-GB"
to the end of
<%@ Page language="C#" Codebehind="RSViewerPage.aspx.cs" AutoEventWireup="false" Inherits="Microsoft.ReportingServices.SharePoint.UI.RSViewerPage,Microsoft.ReportingServices.SharePoint.UI.ServerPages,Version=11.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91" %>
The full string looks like
<%@ Page language="C#" Codebehind="RSViewerPage.aspx.cs" AutoEventWireup="false" Inherits="Microsoft.ReportingServices.SharePoint.UI.RSViewerPage,Microsoft.ReportingServices.SharePoint.UI.ServerPages,Version=11.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91" UICulture="en-GB"%>
If you are using Windows 2012 i had to save the updated file to a different location and then copy the file in and gain the correct permissions.
via Buzz Blog http://paulbuzzblog.wordpress.com/2014/01/10/changing-the-format-of-date-parameters-on-ssrs-2012/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Better logging in SharePoint
Just a very quick post so i can remember this post which describes 5 different approaches to custom logging within SharePoint.
http://spdevlab.com/2013/06/21/5-suggestions-to-implement-a-better-logging-in-sharepoint/
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/10/01/better-logging-in-sharepoint/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Recursive rules in InfoPath–How to prevent
A while ago I had a scenario in an InfoPath form where the user could either enter an amount or a percentage value. This value would then get added to a total already in the form. The requirement is that the user enters either value and the form then calculates the other one.
So if I enter a number then the percentage gets calculated. If I entered the percentage then the number value gets calculated.
So I quickly setup some rules so that when the value changed the percentage or the whole numbers gets calculated and updates the relevant field. This creates a loop of continually updated fields.
I had hoped that some clever InfoPath “stuff” would just make this work and I wouldn’t have to worry about the issue. This didn’t work and caused the form to fail or the fields would not update correctly.
The solution to this problem is that you need a third field to control the updates. Mine is called “Calculating” and is a simple Boolean field.
Now in the rules for Field1 (number) and Field2 (percentage) the first thing to do is to check that calculating = 0 then set calculating = 1 and then set your field. At the end set Calculating back to 0.
This is just a very simple implementation of a lock but it stops the InfoPath rules going crazy.
Pictures explain everything
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/09/24/recursive-rules-in-infopathhow-to-prevent/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Programmatically Disable Event Firing on List Item Update in SharePoint 2010
All credit to the original post here
The short version for my future reference is
Create a simple class
public classEventFiring : SPItemEventReceiver { public void DisableHandleEventFiring() { this.EventFiringEnabled =false; } public void EnableHandleEventFiring() { this.EventFiringEnabled =true; } }
Then use this to disable events
using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists.TryGetList("Custom"); SPListItem item = list.GetItemById(34); item["Title"] ="Updated Successfully"; EventFiring eventFiring = newEventFiring(); eventFiring.DisableHandleEventFiring(); item.Update(); eventFiring.EnableHandleEventFiring(); Console.WriteLine("Updated Successfully"); Console.ReadLine(); } }
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/09/19/programmatically-disable-event-firing-on-list-item-update-in-sharepoint-2010/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Always open Visual Studio 2012 in admin mode
So i have just started again using windows server 2012 and Visual Studio 2012. I had forgotten that you always have to run as an admin or lots of things don’t work. After this i forgot this twice i figured there must be a better solution.
Google to the rescue and all credit to the answer from this stack overflow question. These steps work great.
In Windows 8, you have to right-click devenv.exe and select "Troubleshoot compatibility".
1. select "Troubleshoot program"
2. check "The program requires additional permissions"
3. click "Next", click "Test the program…"
4. wait for the program to launch
5. click "Next"
6. select "Yes, save these settings for this program"
7. click "Close"
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/09/13/always-open-visual-studio-2012-in-admin-mode/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
SharePoint Evolution Conference–things to remember / learn
So today was the last of the 3 day Evolution conference that has been running at the QEII centre in Westminster. http://www.sharepointevolutionconference.com/
The whole conference has been fantastic with a very good selection of speakers
My highlights were Andrew Connell’s (http://www.andrewconnell.com/blog) Talk on single page applications or SPA’s. I am sure this will appear on his blog soon
the other was Chris O’Brien’s (http://www.sharepointnutsandbolts.com) talk on SharePoint App’s and why they make a lot of sense. He did a mock conversation, which i have gone through myself, on how SharePoint hosted apps are not powerful enough and we want to use c# in a provider hosted app which then leads down the rabbit whole of either Azure costs or the maintenance and DR of our own server. This all leads back to the question “What was wrong with SharePoint hosted apps anyway?”
The big take away from the conference was that there is not that much you cannot do with SharePoint hosted app if you really think about it. So we need to get outside of our nice comfy C# sofa and start learning JavaScript.
By this I mean REALLY learn JavaScript and not the hacking about we have been doing for the last few years. This means that we need to treat JavaScript as a real language (I realise that it is) and write the code properly using proper patterns. So that when we look at it all in a weeks time or have to show it in a demo it will make sense and that other people can actually support the code.
This seems daunting given the limited tooling that exists for JavaScript, especially when we think how lucky we are with the debugging tools we get for .NET code.
Someone, I forget who, came up with a brilliant analogy for what JavaScript is and it was “JavaScript is assembly language for the web”
When you think about it this makes a lot of sense. In the end the C# code we write is assembly when it finally gets executed.
This means that to write good JavaScript we need to use extra tools and frameworks that other people have provided.
The obvious one is jQuery which i now think is synonymous with JavaScript. If you are not using jQuery in you JS then you are just making life difficult.
The other frameworks that we should look to use and the main reason for this post are the following:
- TypeScript (http://www.typescriptlang.org/)
- TypeScript is a typed superset of JavaScript that compiles (YAY) to plain JavaScript.
- This looks very easy to write, especially as a C# person
- I am not sure there is a reason why you wouldn’t use this for everything.
- Modernizr (http://modernizr.com/)
- Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.
- Knockout (http://knockoutjs.com/)
- Implements a MVVM pattern
- Durandal (http://durandaljs.com/)
- a Single Page App framework
- Bootstrap (http://twitter.github.io/bootstrap/index.html)
- Makes pages look nice
- Font Awesome (http://fortawesome.github.io/Font-Awesome/)
- Made for Bootstrap and provides icons and animations all through CSS and JS
- This is very cool
- LinqJS (http://linqjs.codeplex.com)
- I have actually used this in an app I have been working on and it is very useful
- Toastr (https://github.com/CodeSeven/toastr#readme)
- SharePoint style non-blocking notifications
Using some or all of the above does make the learning a little more daunting but after seeing the results this is clearly the way to move forward. When you see how little code you actually have to write it is just amazing what can be done.
As well as the extra frameworks the other key JavaScript things to learn are namespaces and promises.
Something else to note. Make sure you have the latest version of the SharePoint development tools installed and make sure you have the “Web Essentials 2012” extension installed as well. This will make life easier.
Please do not ask me for any code samples or video’s of the event as I do not have any and if I did I wouldn’t be allowed anyway.
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/04/18/sharepoint-evolution-conferencethings-to-remember-learn/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Custom Navigation in a SharePoint Hosted App in SharePoint 2013
I have been playing round with a SharePoint hosted app to learn about how it all works. This has been going well but i ran into more problems than i though i would when trying to implement a menu for my App.
If you are using the auto hosted or developer hosted app model then this is easy (ish) you use the new chrome control, create you menu links in JS and you are done. MS have some documentation on this that works great.
But i am creating a SharePoint hosted app. So this causes a few “problems”. The first one being that if i add a chrome control to my page i get 2 menu which is just silly.
Google wasn’t much help although i did find this post here
http://www.intrateam.com/gb/blogpost/sharepoint-2013-app-master-page
which pointed me in the right direction.
My first issue was actually getting hold of a copy of the master page that app’s use. I could not work out how to do this only having an office 365 tenant. In the end I grabbed the app.master and default.master from the GLOBAL folder in the hive on a on premise install.
The first thing i worked out is that the reference to “~masterurl/default.master” seems to translate to the app.master from the GLOBAL folder in the HIVE.
So i made a copy of the app.master and added it to my project. Changing the elements.xml file as per the post linked above.
I also changed the link in my ASPX pages from ~masterurl/default.master to ~site/_catalogs/masterpage/<Name of my master page>.master
This assumes you have you elements file setup like
While doing this I noticed that there is a content place holder with an id of PlaceHolderLeftNavBar. This isn’t hidden.
So I added
into my Default.aspx page and loaded it into SharePoint.
Bingo I have a menu in the standard place in SharePoint. What is also nice is that if the user hits the “Focus on Content” button then the menu gets hidden.
But wait a minute we just setup our own master page, what was the point? Well at the moment you do not need you own master page but this does now mean you could move any of the other Content Place Holders to put a menu in a different location. It also helps get rid of some of the warnings in visual studio as it now knows the master you are using.
I do have an issue that have to copy my <asp:menu> content onto all the pages. I tried using the XML data source but this appears to not be supported but there may be another way to store the menu logic centrally.
The next problem to solve was that we need to pass the query string values around the system, so these have to be added to the menu.
This can be done with some simple jQuery.
Just make sure this will run on all of the pages and your querystring values will be maintained between page loads
Sorry for the images but my code plugin was not working.
Hope this helps someone.
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/02/10/custom-navigation-in-a-sharepoint-hosted-app-in-sharepoint-2013/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Visual Studio 2012 templates for SharePoint 2013
So I just fired up Visual Studio 2012 and went to create a new SharePoint 2013 App just to play around with. Only to find that Visual Studio only has the 2010 templates available.
The search to find out what I needed to install wasn’t as quick and simple as I was hoping so now that I have worked it all out i may as well share with the rest of you.
Assuming you have Visual Studio 2012 installed. Go to
http://msdn.microsoft.com/en-us/office/apps/fp123627
Scroll down and under the tools section there is a web downloader (Direct Link). Download and run it, it will download everything you are missing.
After a couple of restarts you can then create 2013 projects in visual studio
Hope that helps
via Buzz Blog http://paulbuzzblog.wordpress.com/2013/01/23/visual-studio-2012-templates-for-sharepoint-2013/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
Building a Project Server app
EPMSource have just finished a very nice 4 / 5 part series on how to create an app for Project Online. It even walks through the submission process to the app store.
Here are the direct links to each post
Post 0
Building your first Project Server app – Part Zero–The introduction
Post 1
Building your first Project Server app – Part 1 – Getting Started – Setting up a development env
Post 2
Building your first Project Server app – Part 2 – Getting the basic app up and running
Post 3
Building your first Project Server app – Part 3 – Taking the app to the next level
Post 4
Building your first Project Server App – Part 4 – Submitting to the app store
via Buzz Blog http://paulbuzzblog.wordpress.com/2012/12/13/building-a-project-server-app/
Paul is a an expert SharePoint and Project Server developer and is responsible for designing and implementing custom solutions on client systems using the latest SharePoint and .NET technologies.
Paul has extensive experience with SharePoint systems across all sizes of implementation, ranging from small to large farms and has an excellent understanding of all the elements of SharePoint. This article has been cross posted from paulbuzzblog.wordpress.com (original article) |
You must be logged in to post a comment.