Monday, January 29, 2007

how to read a CSV file

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

DataTable dtRecords = GetDataTable("SELECT FirstName, LastName FROM members2.csv ");



foreach(DataRow dr in dtRecords.Rows) {
MessageBox.Show(dr["FirstName"].ToString() + " " + dr["LastName"].ToString() );
}


}



private static string GetConnection() {
return @"Driver={Microsoft Text Driver (*.txt; *.csv)};HDR=YES;Extensions=asc,csv,tab,txt;Dbq=C:\Temp";
}

public static DataTable GetDataTable(string sql) {
DataTable rt = new DataTable();
DataSet ds = new DataSet();
OdbcDataAdapter da = new OdbcDataAdapter();
OdbcConnection con = new OdbcConnection(GetConnection());
OdbcCommand cmd = new OdbcCommand(sql, con);
da.SelectCommand = cmd;
da.Fill(ds);
try {
rt = ds.Tables[0];
}
catch {
rt = null;
}
return rt;
}

public static void DoCommand(string sql) {
OdbcConnection con = new OdbcConnection(GetConnection());
OdbcCommand cmd = new OdbcCommand();
cmd.CommandText = sql;
cmd.Connection = con;
con.Open();
try {
cmd.ExecuteNonQuery();
}
catch (Exception e){
//HandleError(e,sql);
}
finally {
con.Close();
}
}
}
}

Thursday, January 25, 2007

Windows 2003 SP 1 Crack !!

last couple of months i was tring to install SP 1 On my pirated Windows 2003 Server. it just susks.. every time pirated copy error message comes.. i I did some thing trickey to get it done. so some of you also a guy like me .. I hope this will help you 2


First of all you have to download this and save your original key.

Magical Jelly Bean Keyfinder v1.51
http://www.magicaljellybean.com



Then You have to go here and get your Windows 2003 Activation Wizard to change the KEY
http://www.petri.co.il/change_the_serial_in_windows_xp.htm

and change the Key to this Key,

GXMMC-DFWVM-KPVBC-X3XGB-FXTBB

then u r ready to install Windows 2003 SP 1 On your Server...

Monday, January 22, 2007

Open a text file using .NET and read

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

DataTable dtRecords = GetDataTable("SELECT FirstName, LastName FROM members2.csv ");

foreach(DataRow dr in dtRecords.Rows) {
MessageBox.Show(dr["FirstName"].ToString() + " " + dr["LastName"].ToString() );
}


}



private static string GetConnection() {
return @"Driver={Microsoft Text Driver (*.txt; *.csv)};HDR=YES;Extensions=asc,csv,tab,txt;Dbq=C:\Temp";
}

public static DataTable GetDataTable(string sql) {
DataTable rt = new DataTable();
DataSet ds = new DataSet();
OdbcDataAdapter da = new OdbcDataAdapter();
OdbcConnection con = new OdbcConnection(GetConnection());
OdbcCommand cmd = new OdbcCommand(sql, con);
da.SelectCommand = cmd;
da.Fill(ds);
try {
rt = ds.Tables[0];
}
catch {
rt = null;
}
return rt;
}

public static void DoCommand(string sql) {
OdbcConnection con = new OdbcConnection(GetConnection());
OdbcCommand cmd = new OdbcCommand();
cmd.CommandText = sql;
cmd.Connection = con;
con.Open();
try {
cmd.ExecuteNonQuery();
}
catch (Exception e){
//HandleError(e,sql);
}
finally {
con.Close();
}
}
}
}

Friday, January 19, 2007

The Process of Database Refactoring

The Process of Database Refactoring
http://www.simple-talk.com/sql/database-administration/refactoring-databases-the-process/
http://www.red-gate.com/products/SQL_Refactor/index.htm

console applicationt to detect USB

one guy in the fourm has asked about how to detect USB in a console application and here is the code.. Yes if cource it with some help of the google !!!!


Imports System.Management

Module Module1

Private WithEvents m_MediaConnectWatcher As Management.ManagementEventWatcher


Sub Main()

Dim query As New WqlEventQuery("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE TargetInstance ISA ""Win32_DiskDrive""")
Dim watcher As New ManagementEventWatcher(query)

AddHandler watcher.EventArrived, AddressOf HandleEvent

' Start listening for events
watcher.Start()

Console.Read()

' Stop listening for events
watcher.Stop()
Return


End Sub


Private Sub HandleEvent(ByVal sender As Object, ByVal e As System.Management.EventArrivedEventArgs) Handles m_MediaConnectWatcher.EventArrived
Dim mbo, obj As ManagementBaseObject

' the first thing we have to do is figure out if this is a creation or deletion event
mbo = CType(e.NewEvent, ManagementBaseObject)
' next we need a copy of the instance that was either created or deleted
obj = CType(mbo("TargetInstance"), ManagementBaseObject)

Select Case mbo.ClassPath.ClassName
Case "__InstanceCreationEvent"
If obj("InterfaceType") = "USB" Then
MsgBox(obj("Caption") & " (Drive letter " & GetDriveLetterFromDisk(obj("Name")) & ") has been plugged in")
End If
Case "__InstanceDeletionEvent"
If obj("InterfaceType") = "USB" Then
MsgBox(obj("Caption") & " has been unplugged")
End If
End Select

End Sub

Private Function GetDriveLetterFromDisk(ByVal Name As String) As String
Dim oq_part, oq_disk As ObjectQuery
Dim mos_part, mos_disk As ManagementObjectSearcher
Dim obj_part, obj_disk As ManagementObject
Dim ans As String

' WMI queries use the "\" as an escape charcter
Name = Replace(Name, "\", "\\")

' First we map the Win32_DiskDrive instance with the association called
' Win32_DiskDriveToDiskPartition. Then we map the Win23_DiskPartion
' instance with the assocation called Win32_LogicalDiskToPartition

oq_part = New ObjectQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & Name & """} WHERE AssocClass = Win32_DiskDriveToDiskPartition")
mos_part = New ManagementObjectSearcher(oq_part)
For Each obj_part In mos_part.Get()

oq_disk = New ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & obj_part("DeviceID") & """} WHERE AssocClass = Win32_LogicalDiskToPartition")
mos_disk = New ManagementObjectSearcher(oq_disk)
For Each obj_disk In mos_disk.Get()
ans &= obj_disk("Name") & ","
Next
Next

Return ans.Trim(","c)
End Function

End Module

Monday, January 08, 2007

Removing Unused or Problem Indexes

ahh one guy has done it... !!!! I have been looking for this quit some time and I found it today.

all you need is : sys.dm_db_index_usage_stats

http://www.sqlservercentral.com/columnists/aingold/2770.asp

Tuesday, January 02, 2007

x mas (x-men)

Just though of write about how I spend the last week of the year, All started on 23 rd
sta'day. In the morning we had a superb session on SQL Server By Dishesh Priyankara. I managed to learn da some
of da doubts I had on SQL Server.

after the session I went to enter-Sys to meet pitta and da rest of the guys, and played pool... Played against Cheena... damm..
I won 1 game after playing more than 100s...

party stared in the evnning around 7 and went back home around 4 a.m.
with in that time..

learn about a new pill (two days stright up... drop me an email if you want one :)
two guys almost had a fight
one guy vomited in the cab we went.
had to washe the cab (588588), (almost i vomited)
one guy broke one water tap,
went back in a 3- weeler

Friday, December 22, 2006

All this time i though SET NONCOUNT ON is fater than OFF .. it is not .. there is a big dealy when you use ON.

check out
Performance Effects of NOCOUNT
http://www.sqlservercentral.com/columnists/dpoole/2751.asp

Monday, December 11, 2006

how to recover deleted or lost ldf file in SQL Server 2000 database ?

1. Backup the data (.mdf) file
2. EXEC sp_detach_db 'dbname' -- this will detach the database from the server
3. Restart SQL Server
The database may still be seen in enterprise manager, but just ignore it.
4. Create a new database with the same name or a different name. You will have to use a different physical file name, which is fine.
5. Stop SQL Server.
6. Rename the new data file that was created to something else (ex: add.bak to the end)
7. Rename the old data file that you want to restore to the name of the newly created file (the same name as the file you changed in the step above)
8. Start SQL Server
Now the db will still be suspect but you now have a log file.
9. Switch to emergency mode on the database. You do this by doing the following:
1. Right click on the database root node in Enterprise manager and bring up the properties.
2. Under the Server Settings tab, check of "Allow modifications to be made directly to the system catalogs".
3. click ok
4. Now go to the master database and open the sysdatabases table.
5. Find the suspected database in here and modify the status column, setting it to: 32768. This will put it into emergency mode.
6. stop then start sql server
10. Now here's the tricky part and I'm not sure how this will work on a single install, i was lucky enough to have SQL Server 2000 installed. But anyways, open up the Import and Export Data (DTS) program from the start menu. And you want to copy data from the old database to a brand new one. Just copy tables and views.

Wednesday, December 06, 2006

tempdb index planning

intersting artical on creation of indexes in tempDB

http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/tempdb_capacity_planning_index.mspx

Wednesday, November 29, 2006

teleporting ...

Last couple of days I was sick.. sick very badly.. and I was @ home with out doing any thing.. so most of my time i spent infont of the T.V..

there was an intersting program on CNN about the Next Genration Human Transpotation ?? they were taking about various things such as teleporting?.. one woemn was there said it is impossible. That is the same thing we though when ppl said ppl are going to fly,,? isn;t it..

So i though about teleporting.. how to do it? Well if we can compress our selfs and defined in 1's and 0's the we should be able to transport via a cable isn't it ? that is the only way i can think of, or may be i was out of my mind due to sickness

Wednesday, November 22, 2006

Gmail Maps Viewing (GMaps)

Last couple of days i was doing a re-search on GMaps. it;s to enable the routing maps on the windows descktop applicate it self.

only think that you have to do is to pass the correct argements.. But still I cound;t find how to use the birdview.. if you know let me know..

Destination Address
+++++++++++++++

Its address is, roughly, 2233 S. Columbus Blvd.
http://maps.google.com/?q=2233+s+columbus+blvd+philadelphia&z=1

Location wise
+++++++++
I can be more accurate with latitude and longitude. 39.918 N, 75.135W. So this link is even better:
http://maps.google.com/?sll=39.918,-75.136

Parameters are there besides "q" (the regular Google query parameter), "z" (zoomlevel) and "sll" (latitude and longitude)

From : To
+++++++

"q" param denotes "from" in front of the first, and "to" in front of the second, and it will give you the directions between the two addresses.

Example: http://maps.google.com/maps?q=from+2233+s+columbus+blvd+philadelphia+to+1600+pennsylvania+ave,+washington,+dc&z=8

Thursday, November 16, 2006

Two greate Index Build strategys !

Index Build strategy in SQL Server - Introduction (I)
http://blogs.msdn.com/sqlqueryprocessing/archive/2006/11/08/index-build-strategy-in-sql-server-introduction-i.aspx


Index Build strategy in SQL Server - Introduction (II)
http://blogs.msdn.com/sqlqueryprocessing/archive/2006/11/09/index-build-strategy-in-sql-server-introduction-ii.aspx

Thursday, November 09, 2006

DataGrid with Excel Copy and Paste

I coudn''t blog last couple of days due to my busy schedule. So I am back !!!! Y'day and today i was tring to create a control with the excel copy and past it in the datagrid type of a comtrol. first it was a disster, with the help of winformsfaq site i managed to do it. I have paste the full code in the blog. i hope one day it will help you 2

'--------------------------------------------------------------------------------------------------
' Waha gini awelana sului
'------------------------------------------------------------------------------------------

Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.IO

Public Delegate Sub DataGridSelectionChangingEventHandler(ByVal sender As Object, ByVal e As DataGridSelectionChangingEventArgs)


Public Class iOMSelectionDataGrid
Inherits DataGrid

'fired when a selection is about to change
Public Event SelectionChanging As DataGridSelectionChangingEventHandler

'(top,left,bottom,right) of selection
Private _selectedRange As GridRange

'used in drawing
Private _selectionRectangle As Rectangle
Private _clipRectangle As Rectangle

'used to record row-col of click
Private _mouseDownRow As Integer
Private _mouseDownCol As Integer
Private _mouseUpRow As Integer
Private _mouseUpCol As Integer

'used in autoscroll
Private lastMoveHorz As Boolean

Friend WithEvents ContextPasteMenu As System.Windows.Forms.ContextMenu
Friend WithEvents MenuItemPaste As System.Windows.Forms.MenuItem
Friend WithEvents MenuItemClear As System.Windows.Forms.MenuItem

Public Sub New()
_selectedRange = New GridRange
_clipRectangle = Rectangle.Empty

'used to redraw selection during a scroll
AddHandler Me.Scroll, AddressOf HandleScroll

'used to get a clipping rectange for the initial display
AddHandler Me.Paint, AddressOf FirstPaint

Me.ContextPasteMenu = New System.Windows.Forms.ContextMenu
Me.MenuItemPaste = New System.Windows.Forms.MenuItem
Me.MenuItemClear = New System.Windows.Forms.MenuItem
'
'ContextPasteMenu
'
Me.ContextPasteMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItemClear, Me.MenuItemPaste})
'
'MenuItemPaste
'
Me.MenuItemPaste.Index = 0
Me.MenuItemPaste.Text = "&Paste"
'
'MenuItemClear
'
Me.MenuItemClear.Index = 1
Me.MenuItemClear.Text = "&Clear"
'
'set up double buffering to minimize flashing during draws
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
Me.SetStyle(ControlStyles.UserPaint, True)
Me.SetStyle(ControlStyles.DoubleBuffer, True)
End Sub 'New


#Region "Paint & Scroll Event Handlers"
Private Sub FirstPaint(ByVal sender As Object, ByVal e As PaintEventArgs)
'used to mark the size of original clientsize
RemoveHandler Me.Paint, AddressOf FirstPaint
If Not Me.DesignMode Then
_clipRectangle = Me.GetCellBounds(0, 0)
_clipRectangle.Height = Me.Height - _clipRectangle.Y - SystemInformation.HorizontalScrollBarHeight
_clipRectangle.Width = Me.Width - _clipRectangle.X - SystemInformation.VerticalScrollBarWidth
End If
End Sub 'FirstPaint


'helper method that gets the left column from knowing the initial cliprectangle
Public Function LeftColumn() As Integer
Dim hti As DataGrid.HitTestInfo = Me.HitTest(New Point(_clipRectangle.X, _clipRectangle.Y))
Return hti.Column
End Function 'LeftColumn

Private Sub HandleScroll(ByVal sender As Object, ByVal e As EventArgs)
DrawRange(True)
End Sub 'HandleScroll
#End Region

#Region "Selected Range property"

Public Property SelectedRange() As GridRange
Get
Return _selectedRange
End Get
Set(ByVal Value As GridRange)
'If Not (SelectionChanging Is Nothing) Then
Dim e As New DataGridSelectionChangingEventArgs(_selectedRange, Value)
RaiseEvent SelectionChanging(Me, e)
If e.Canceled Then
Return
End If
'End If
_selectedRange = Value
End Set
End Property

#End Region

#Region "mouse events that handle making selections"

Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
'remember the initial click
If e.Button = MouseButtons.Left Then
Dim hti As DataGrid.HitTestInfo = Me.HitTest(New Point(e.X, e.Y))
_mouseDownRow = hti.Row
_mouseDownCol = hti.Column
_mouseUpRow = _mouseDownRow
_mouseUpCol = _mouseDownCol

'clear any existing selection
SelectedRange.Clear()
DrawRange(False)
ElseIf e.Button = MouseButtons.Right Then
'// Dispaly the menu on right click
ContextPasteMenu.Show(Me, New Point(e.X, e.Y))
End If

End Sub 'OnMouseDown


Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseMove(e)

If e.Button = MouseButtons.Left Then
Dim hti As DataGrid.HitTestInfo = Me.HitTest(New Point(e.X, e.Y))

Select Case hti.Type
'move to a visible cell with no scrolling
Case HitTestType.Cell
If hti.Column <> Me._mouseUpCol OrElse hti.Row <> Me._mouseUpRow Then
lastMoveHorz = Me._mouseUpCol <> hti.Column

DrawRange(False)
Me._mouseUpCol = hti.Column
Me._mouseUpRow = hti.Row
SelectedRange = New GridRange(Me._mouseUpRow, Me._mouseUpCol, Me._mouseDownRow, Me._mouseDownCol)
DrawRange(True)
End If



Case HitTestType.ColumnHeader
If Me._mouseDownRow = -1 Then
Exit Select
End If
If Me.VertScrollBar.Value > 0 Then
Me.VertScrollBar.Value = Me.VertScrollBar.Value - 1
Me.CurrentRowIndex = Me.VertScrollBar.Value

Me._mouseUpCol = hti.Column
Me._mouseUpRow = Me._mouseUpRow - 1
SelectedRange = New GridRange(Me._mouseUpRow, Me._mouseUpCol, Me._mouseDownRow, Me._mouseDownCol)
DrawRange(True)
End If 'this.Invalidate();
Case HitTestType.RowHeader
If (True) Then
If Me._mouseDownCol = -1 Then
Exit Select
End If
Dim r As Rectangle = Me.GetCellBounds(0, Me._mouseUpCol)
If Me.HorizScrollBar.Value >= r.Width Then
Me.HorizScrollBar.Value -= r.Width
Me._mouseUpCol = Me._mouseUpCol - 1
Me.CurrentCell = New DataGridCell(Me.CurrentRowIndex, Me._mouseUpCol)

Me._mouseUpRow = hti.Row
SelectedRange = New GridRange(Me._mouseUpRow, Me._mouseUpCol, Me._mouseDownRow, Me._mouseDownCol)
DrawRange(True)
End If 'this.Invalidate();
End If
Case HitTestType.None
'Console.WriteLine("HitTestType.None");
If lastMoveHorz Then
Console.WriteLine("lastMoveHorz")
If Me._mouseUpCol < rectangle =" Me.GetCellBounds(0," _mouseupcol =" Me._mouseUpCol" currentcell =" New"> -1 Then
Me._mouseUpRow = hti.Row
End If
SelectedRange = New GridRange(Me._mouseUpRow, Me._mouseUpCol, Me._mouseDownRow, Me._mouseDownCol)
DrawRange(True)
End If
End If 'this.Invalidate();
Else
If Me._mouseUpRow < _mouseuprow =" Me._mouseUpRow"> 0 Then
Me._mouseUpCol = hti.Column
End If
Me.CurrentCell = New DataGridCell(Me._mouseUpRow, Me._mouseUpCol)

SelectedRange = New GridRange(Me._mouseUpRow, Me._mouseUpCol, Me._mouseDownRow, Me._mouseDownCol)
DrawRange(True)
End If 'this.Invalidate();
End If

End Select
End If
End Sub 'OnMouseMove


Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
'if normal click clear things & click
If Me._mouseUpCol = Me._mouseDownCol AndAlso Me._mouseUpRow = Me._mouseDownRow Then
DrawRange(False)
_selectionRectangle = Rectangle.Empty
MyBase.OnMouseDown(e)
MyBase.OnMouseUp(e)
End If
End Sub 'OnMouseUp


#End Region

#Region "Drawing Code"

Private Sub DrawRange(ByVal showRange As Boolean)
'if removing selection just redraw
If Not showRange Then
_selectionRectangle = Rectangle.Empty
Me.Invalidate()

Return
End If

If SelectedRange.Left < _selectionrectangle =" Rectangle.Empty" rectangle =" Me.GetCellBounds(SelectedRange.Top," rectangle =" Me.GetCellBounds(SelectedRange.Bottom," x =" rect.Left" w =" rect1.Left" x =" rect1.Left" w =" rect.Left" y =" rect.Top" h =" rect1.Top" y =" rect1.Top" h =" rect.Top" _selectionrectangle =" New" height =" Me.Height" width =" Me.Width" datatable =" getExcelCopiedCells()" datatable =" CType(MyBase.DataSource," integer =" SelectedRange.Top" integer =" SelectedRange.Bottom" integer =" (SelectedRange.Bottom" integer =" SelectedRange.Left" integer =" SelectedRange.Right" integer =" (SelectedRange.Right" integer =" SelectedTop" integer =" SelectedLeft" selectedvalue =" Me(currentRowPos," selectedvalue = "NI" selectedvalue = "NP" selectedvalue = "NC" selectedvalue = "NF" selectedvalue = "ND" selectedvalue = "NT" selectedvalue = "NS" idataobject =" Clipboard.GetDataObject()" char =" {"> 0)
'Array to hold the split data for each row
Dim arrSplitData As Array

'Multipurpose Loop Counter
Dim iLoopCounter As Integer = 0

'Read a line of data from the StreamReader object
sFormattedData = srReadExcel.ReadLine()

'Split the string contents into an array
arrSplitData = sFormattedData.Split(charDelimiterArray)

If tblExcel2WinData.Columns.Count <= 0 Then
For iLoopCounter = 0 To arrSplitData.GetUpperBound(0)
tblExcel2WinData.Columns.Add()
Next
iLoopCounter = 0
End If

'Row to hold a single row of the Excel Data
Dim rowNew As DataRow
rowNew = tblExcel2WinData.NewRow()


For iLoopCounter = 0 To arrSplitData.GetUpperBound(0)
rowNew(iLoopCounter) = arrSplitData.GetValue(iLoopCounter)
Next
iLoopCounter = 0

'Add the row back to the DataTable
tblExcel2WinData.Rows.Add(rowNew)

rowNew = Nothing
End While

'Close the StreamReader object
srReadExcel.Close()

'Bind the data to the DataGrid
Return tblExcel2WinData
Else
MsgBox("Clipboard data does not seem to be copied from Excel!", MsgBoxStyle.Information)
Return Nothing
End If
Else
MsgBox("Clipboard is empty!", MsgBoxStyle.Information)
Return Nothing
End If

Catch exp As Exception
MsgBox(exp.Message, MsgBoxStyle.Information)
Return Nothing
End Try

End Function

Private Sub MenuItemClear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItemClear.Click


Dim SelectedTop As Integer = SelectedRange.Top
Dim SelectedBottom As Integer = SelectedRange.Bottom
Dim SelectedTopToBottom As Integer = (SelectedRange.Bottom - SelectedRange.Top) + 1
Dim SelectedLeft As Integer = SelectedRange.Left
Dim SelectedRight As Integer = SelectedRange.Right
Dim SelectedLeftToRight As Integer = (SelectedRange.Right - SelectedRange.Left) + 1
Dim selectedValue As String

'// Row Navigation
For currentRowPos As Integer = SelectedTop To SelectedBottom

'//Column Navigation
For CurrentColPos As Integer = SelectedLeft To SelectedRight

Try

selectedValue = Me(currentRowPos, CurrentColPos)

If selectedValue = "NI" OrElse selectedValue = "NP" OrElse selectedValue = "NC" OrElse selectedValue = "NF" OrElse selectedValue = "ND" OrElse selectedValue = "NT" OrElse selectedValue = "NS" Then
'// Color cells do nothing
Else
Me(currentRowPos, CurrentColPos) = ""
End If

Catch ex As Exception
End Try

Next CurrentColPos

Next currentRowPos


End Sub

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean

Dim cellCurrent As DataGridCell
Dim curentCellValue As String

Const WM_KEYDOWN As Integer = &H100
Const WM_SYSKEYDOWN As Integer = &H104

If msg.Msg = WM_KEYDOWN Or msg.Msg = WM_SYSKEYDOWN Then
Select Case keyData
Case Keys.Control Or Keys.V
Call MenuItemPaste_Click(Nothing, Nothing)
End Select
End If

Return MyBase.ProcessCmdKey(msg, keyData)

End Function


End Class 'SelectionDataGrid '


#Region "GridRange class implementation"
'----^--- Pre-processor directives not translated

Public Class GridRange
Private _top As Integer
Private _left As Integer
Private _bottom As Integer
Private _right As Integer


Public Sub New()
_top = -1
_left = -1
_bottom = -1
_right = -1
End Sub 'New


Public Sub New(ByVal t As Integer, ByVal l As Integer, ByVal b As Integer, ByVal r As Integer)
_top = Math.Min(t, b)
_left = Math.Min(l, r)
_bottom = Math.Max(t, b)
_right = Math.Max(l, r)
End Sub 'New


Public Property Top() As Integer
Get
Return _top
End Get
Set(ByVal Value As Integer)
_top = Value
End Set
End Property

Public Property Bottom() As Integer
Get
Return _bottom
End Get
Set(ByVal Value As Integer)
_bottom = Value
End Set
End Property

Public Property Left() As Integer
Get
Return _left
End Get
Set(ByVal Value As Integer)
_left = Value
End Set
End Property

Public Property Right() As Integer
Get
Return _right
End Get
Set(ByVal Value As Integer)
_right = Value
End Set
End Property

Public Sub Clear()
Me.Bottom = -1
Me.Top = -1
Me.Left = -1
Me.Right = -1
End Sub 'Clear


Public Overrides Function ToString() As String
Return "TopLeft:" + Me.Top.ToString() + "," + Me.Left.ToString() + " BottomRight:" + Me.Bottom.ToString() + "," + Me.Right.ToString()
End Function 'ToString
End Class 'GridRange



#End Region

#Region "SelectionChangingEvent class implementation"


Public Class DataGridSelectionChangingEventArgs
Inherits EventArgs
Private _oldRange As GridRange
Private _newRange As GridRange
Private _canceled As Boolean


Public Sub New(ByVal oldValue As GridRange, ByVal newValue As GridRange)
_oldRange = New GridRange(oldValue.Top, oldValue.Left, oldValue.Bottom, oldValue.Right)
_newRange = New GridRange(newValue.Top, newValue.Left, newValue.Bottom, newValue.Right)
_canceled = False
End Sub 'New


Public Property Canceled() As Boolean
Get
Return _canceled
End Get
Set(ByVal Value As Boolean)
_canceled = Value
End Set
End Property

Public Property OldRange() As GridRange
Get
Return _oldRange
End Get
Set(ByVal Value As GridRange)
_oldRange.Bottom = Value.Bottom
_oldRange.Top = Value.Top
_oldRange.Left = Value.Left
_oldRange.Right = Value.Right
End Set
End Property

Public Property NewRange() As GridRange
Get
Return _newRange
End Get
Set(ByVal Value As GridRange)
_newRange.Bottom = Value.Bottom
_newRange.Top = Value.Top
_newRange.Left = Value.Left
_newRange.Right = Value.Right
End Set
End Property
End Class 'DataGridSelectionChangingEventArgs
#End Region

Tuesday, October 31, 2006

Fine Tuning your Database Design in SQL 2005

today i found a nice artical on Fine Tuning your Database Design in SQL 2005

check it out @
http://www.simple-talk.com/sql/sql-server-2005/fine-tuning-your-database-design-in-sql-2005/

Friday, October 27, 2006

PIVOT dynamic column list

There was an intersting question posted on the .NET forum yday. it was about dynamically changing column list. In PIVOT you have to specify the output column list manually?
is it a bug ??

I found to achive it by doing hours of trying ....

DECLARE @colList VARCHAR(1024)

SELECT @colList = COALESCE(@colList + ',', '') + Subject FROM
(
SELECT DISTINCT '[' + Subject + ']' AS Subject
FROM StudentMarks
) AS StudentMarksColList

--get the column in the array format [maths], [science] ect ..
SELECT @colList


EXEC('SELECT * FROM StudentMarks
PIVOT
(
SUM(Marks)
FOR Subject
IN ('+ @colList +')
)AS p')

Wednesday, October 25, 2006

SQL Articals

Two greate articals by Ron Talmage


http://www.code-magazine.com/Article.aspx?quickid=060063
http://www.code-magazine.com/Article.aspx?quickid=060093

Wednesday, October 18, 2006

BCS Exam

I was buys last couple of days studing for the BCS exams .. I took 2 papers which are Information Systems and Core Paper. I nailed the BCS Information systems paper.. it was soo easy.. but the core paper was taugh.. I haven't given up the hopes still on it.

Wednesday, October 11, 2006

What's The Resolution?

should read this if you want to know what is dah above topic is all about..

http://www.code-magazine.com/Article.aspx?quickid=060083

Monday, October 09, 2006

Inserting way to insert data to the tabase

I found this code while surfing the web today. Concept is very intersting due to couple of resions.

1. Reduce round trips
2. cocurrency handing
3. More control over the logic
4. it is clear.. !!!!


create proc dbo.Item_Add_toOrderList
(
@orderNumber char(20)
@itemNumber char(20)
@processedBy varchar(64) = null
)
as
declare @errorNumber

-- Test processedBy
if (@processedBy is null) set @processedBy = system_user

-- Transaction
begin tran

-- Test orderNumber (makre sure an appropriate order exists)
if not exists(select OrderID from dbo.Order where (OrderNumber =
@orderNumber))
begin
rollback tran
raiserror ('Item Add failed: orderNumber %s unknown.', 16, 1,
@orderNumber)
return -1
/*
This is the first point at which the transaction will be rolled back if one
of the parameters is erroneous.
*/
end

-- Initialize errorNumber
set @errorNumber = 0

insert dbo.Item
(
orderNumber
,itemNumber
,processedBy
,processedOn
)
select @orderNumber as orderNumber
,@itemNumber as itemNumber
,@processedBy as processedBy
,getdate() as processedOn

-- store current error code
set @errorNumber = @@error

if (@errorNumber != 0)
begin
rollback tran
raiserror ('Item Add failed: an error has occured.', 16, 1)
return @errorNumber
/* Here the transaction is rolled-back if an error occured at insert. */
end
else
begin
commit tran
return 0
/* If no error present transaction is committed. */
end
go