Archive for June, 2005

13 Jun 2005

PowerMenu – Minimizing application to system tray

No Comments Utilities

This is one of my favorite utility tools. PowerMenu is the collection of extensions to the window control menu come in really handy when I work with lot of applications at a time. This tool will add more options to windows control menu in addition to standard restore/move/size/minimize/maximize menu items.

Power Menu

Here are the listing of extensions:

Priority > Changes the priority of the window’s parent process
Transparency > Changes the transparency level of the window (Windows 2K/XP only)
Always On Top > Makes the window sit on top of other windows even if it doesn’t have focus.
Minimize To Tray > Remove the window from the task-list and places the window’s on the system tray.

Usually my taskbar always filled with many applications every time. Some of these “always needed” applications like explorer, CVS client, textpad etc. remains open all the time. That results to very cluttered taskbar. So with PowerMenu tool, I can move to applications to system bar and make my taskbar more cleaner and manageable.

Tool Name: PowerMenu
Url: PowerMenu

I have also created a small batch file and placed it into the Startup folder so that I don’t have to run it every time. Batch file contains following command:

PowerMenu.BAT
"E:\Utilities\PowerMenu\PowerMenu.exe" -hideself on

Thanks Thong Nguyen for this handy tool!!

12 Jun 2005

SQL Server 2005 – Data Paging

No Comments SQL Server

It now become standard UI pattern to display large amount of records in paginated grid layout. For example, if there is huge list of employees, application will show only 10 employees at a time. If user wants to see next set of employees, he/she can click on next button of the grid, application will pull next set of 10 employees and render on page. By showing limited number of records, you can control the amount of payload move from server to browser, saving server engagement and consumed bandwidth.

There is one common technique used by most developers to induced qualified records into a temporary table and show paginated records from there. You can learn that approach from following links:

Manual Paging, part I
http://mceahern.manilasites.com/dotnet/pagingpart1

Paging: Use ADO, getrows, or a Stored Procedure?
http://www.15seconds.com/issue/010308.htm

Is Paging with Recordsets the Best Method?
http://www.15seconds.com/issue/010607.htm

The problem with creating temp table for paginated result create substantial overheads to database, which leads to performance issue down the line.

But now in SQL Server 2005, you don’t need to create those temp table. Microsoft extent SELECT statement with new ranking function ROW_NUMBER() which return row number in result set itself.

SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders

Which will provide result something like:

RowNumber            OrderID     OrderDate
-------------------- ----------- -----------------------
1                    10248       1996-07-04 00:00:00.000
2                    10249       1996-07-05 00:00:00.000
3                    10250       1996-07-08 00:00:00.000
4                    10251       1996-07-08 00:00:00.000
5                    10252       1996-07-09 00:00:00.000
6                    10253       1996-07-10 00:00:00.000
7                    10254       1996-07-11 00:00:00.000
8                    10255       1996-07-12 00:00:00.000
9                    10256       1996-07-15 00:00:00.000
10                   10257       1996-07-16 00:00:00.000

So now you can utilize row number to get qualify records from whole table. How? Here I go

WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT * 
FROM Ordered
WHERE RowNumber BETWEEN 21 AND 30

Above SQL snippet will display records from 21st to 30th. The result will look something like this:

RowNumber            OrderID     OrderDate
-------------------- ----------- -----------------------
21                   10268       1996-07-30 00:00:00.000
22                   10269       1996-07-31 00:00:00.000
23                   10270       1996-08-01 00:00:00.000
24                   10271       1996-08-01 00:00:00.000
25                   10272       1996-08-02 00:00:00.000
26                   10273       1996-08-05 00:00:00.000
27                   10274       1996-08-06 00:00:00.000
28                   10275       1996-08-07 00:00:00.000
29                   10276       1996-08-08 00:00:00.000
30                   10277       1996-08-09 00:00:00.000

I am sure this new SELECT extension will help a lot to work on paginated resultset.

12 Jun 2005

SQL Server 2005 (Beta 2) Installation Error!

No Comments SQL Server

While installing SQL Server 2005 (Beta 2) on my machine today, I was ending up with a weird error message every time:

Errors occurred during the installation:
Beta components detected.
Error 50307 installing .Net Framework 2.0

Error message was bit cryptic, providing no clue what’s wrong in my machine. After spending couple of hours with the problem and googling related issues with SQL Server 2005 installation, I learned that it’s actually related to compatibility problem with .NET CLR 1.2.

After uninstalling .NET 1.2, SQL Server 2005 installed properly on my machine. And thereafter I reinstall v1.2 again for my current projects.

Installation was very straight forward and descriptive as I always expect from Microsoft if I exclude this “incompatibility” issue.

12 Jun 2005

SQL Server 2005 (Beta 2) – Database Object Information HotKey

No Comments SQL Server

Inspecting object definition in Query Analyzer in SQL Server 2000 was very handy. If you want to review object definition without moving from your existing window, select that object in query pane and simply press ALT+F1. Voila!!!

But, it seems that this hot key is missing in SQL Server 2005. I hope this is just a bug in beta version and will be fixed in actual release.