Thursday, December 23, 2010

Export a text file from Excel with comma delimiters and single quotes.

I got this need for exporting excel in a text file with comma delimters and single quotes to troubleshoot a issue in oracle database.

The issue was to find the records in the table with against their primary keys, now the primary key type was a string and I had them in a excel file and they were 100s in number, now think to write a where clause it will be a pain in ass..

So I found out the method to export the excel in text format with the records as comma delimtted and with single quotes as we need them in where clause.

Eg. Select * from Employee Where EmployeeID in ('XYZ', 'ABC', 'YUV'.......)

1. Copy your contents in a MACRO enabled Excel workbook.
2. Press Alt + F11 or go to Developer Tab and then click Visual Basic in the code group.
3. Go to MS main menu - > Excel Options - > Popular - > select the Show Developer and click OK.
4. Open the Visual Basic editor and click the Module on the insert menu.
5. Paste the following code in the module space

Sub ExportTextFormat()
' Dimension all variables.
Dim DestFile As String
Dim FileNum As Integer
Dim ColumnCount As Integer
Dim RowCount As Integer

' Prompt user for destination file name.
DestFile = InputBox("Enter the destination filename" _
& Chr(10) & "(with complete path):", "Quote-Comma Exporter")

' Obtain next free file handle number.
FileNum = FreeFile()

' Turn error checking off.
On Error Resume Next

' Attempt to open destination file for output.
Open DestFile For Output As #FileNum

' If an error occurs report it and end.
If Err <> 0 Then
MsgBox "Cannot open filename " & DestFile
End
End If

' Turn error checking on.
On Error GoTo 0

' Loop for each row in selection.
For RowCount = 1 To Selection.Rows.Count

' Loop for each column in selection.
For ColumnCount = 1 To Selection.Columns.Count

' Write current cell's text to file with quotation marks.
Print #FileNum, "'" & Selection.Cells(RowCount, _
ColumnCount).Text & "',";

' Check if cell is in last column.
If ColumnCount = Selection.Columns.Count Then
' If so, then write a blank line.
Print #FileNum,
Else
' Otherwise, write a comma.
Print #FileNum, ",";
End If
' Start next iteration of ColumnCount loop.
Next ColumnCount
' Start next iteration of RowCount loop.
Next RowCount

' Close destination file.
Close #FileNum
End Sub


6. Save the file, select the data you want to export and run the Macro ExportTextFormat.
7. Give a filename with the full path (eg. D:/Test.txt)
8. You are good to go now.

Hope this helps!

-Azhar

Wednesday, October 27, 2010

PL/SQL Date function - to_date()

In Oracle/PLSQL, the to_date function converts a string to a date.

The syntax for the to_date function is:

to_date( string1, [ format_mask ], [ nls_language ] )

string1 is the string that will be converted to a date.

format_mask is optional. This is the format that will be used to convert string1 to a date.

nls_language is optional. This is the nls language used to convert string1 to a date.

The following is a list of options for the format_mask parameter. These parameters can be used in many combinations.












































































































































ParameterExplanation
YEARYear, spelled out
YYYY4-digit year
YYY

YY

Y
Last 3, 2, or 1 digit(s) of year.
IYY

IY

I
Last 3, 2, or 1 digit(s) of ISO year.
IYYY4-digit year based on the ISO standard
RRRRAccepts a 2-digit year and returns a 4-digit year.

A value between 0-49 will return a 20xx year.

A value between 50-99 will return a 19xx year.
QQuarter of year (1, 2, 3, 4; JAN-MAR = 1).
MMMonth (01-12; JAN = 01).
MONAbbreviated name of month.
MONTHName of month, padded with blanks to length of 9 characters.
RMRoman numeral month (I-XII; JAN = I).
WWWeek of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
WWeek of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
IWWeek of year (1-52 or 1-53) based on the ISO standard.
DDay of week (1-7).
DAYName of day.
DDDay of month (1-31).
DDDDay of year (1-366).
DYAbbreviated name of day.
JJulian day; the number of days since January 1, 4712 BC.
HHHour of day (1-12).
HH12Hour of day (1-12).
HH24Hour of day (0-23).
MIMinute (0-59).
SSSecond (0-59).
SSSSSSeconds past midnight (0-86399).
FFFractional seconds. Use a value from 1 to 9 after FF to indicate the number of digits in the fractional seconds. For example, 'FF4'.
AM, A.M., PM, or P.M.Meridian indicator
AD or A.DAD indicator
BC or B.C.BC indicator
TZDDaylight savings information. For example, 'PST'
TZHTime zone hour.
TZMTime zone minute.
TZRTime zone region.


Applies To:

Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g


For example:

to_date('2003/07/09', 'yyyy/mm/dd') would return a date value of July 9, 2003.
to_date('070903', 'MMDDYY') would return a date value of July 9, 2003.
to_date('20020315', 'yyyymmdd') would return a date value of Mar 15, 2002.

Thursday, September 16, 2010

Disabling script debugging in VS 2008 and IE 8

Visual studio 2008 creates a problem when it starts debugging the javascript. It actually generates a number of files by name anonymous code which leads to a slow debugging in development environment.

In IE 7 you can disable the script debugging directly from IE tools. But in IE 8 it doesn't work, there are some workarounds given by microsoft as I thought it is good to paste here.


Work around:

1. This work around requires the Silverlight 2 Tools for Visual Studio 2008 SP1 to be installed. So if you don't have these tools installed, you can download them from Microsoft (Click Here). If this is not an option for you, there is some alternative work arounds at the bottom of this blog post.
2. Right click on your project and open up project properties
3. Go to the 'Start Options' sheet, and click the 'Silverlight' button at the bottom of the screen. Because the debugger cannot debug both Silverlight code and Script code at the same time, this will disable Script debugging and therefore avoid the problem.

Alternative work around – disable all script debugging:

* Open a new command prompt (start->run, cmd.exe). If you are on a 64-bit computer this needs to be a 32-bit prompt (start->run, c:\windows\syswow64\cmd.exe)
* reg add HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {4FF9DEF4-8922-4D02-9379-3FFA64D1D639} /f

If you are using Visual Web Developer Express, replace 'VisualStudio' with 'VWDExpress':

* reg add HKLM\SOFTWARE\Microsoft\VWDExpress\9.0\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {4FF9DEF4-8922-4D02-9379-3FFA64D1D639} /f

If you want to restore your computer so that you can debug scripts again:

* reg add HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {170EC3FC-4E80-40AB-A85A-55900C7C70DE} /f



Work around for performance problems caused by 'anonymous code' nodes:


Some sites run into problems being debugged due to numerous "anonymous code" nodes in solution explorer. For these sites, instead of disabling script debugging completely, it's possible to disable just the 'anonymous code' nodes. This requires Visual Studio 2008 SP1. To do so:

* reg add HKCU\Software\Microsoft\VisualStudio\9.0\Debugger /v HideAnonymousScriptCodeNodes /t REG_DWORD /d 1 /f

Hope this helps!!

-Azhar

Thursday, August 12, 2010

How to get current week start date from current date in .NET

Following code will give you the week start date on passing any date.


private DateTime getWeekStartDate(DateTime weekDate)
{
DateTime currentWeekStartDate = weekDate;

string StartDay = "1" // You can set any day as start day of the week
// 1 for monday, 2 for tuesday and so on

while (!StartDay.ToLower().Equals(currentWeekStartDate.DayOfWeek.ToString().ToLower()))
{
currentWeekStartDate = currentWeekStartDate.Subtract(new TimeSpan(1, 0, 0, 0));
}
return currentWeekStartDate
}

Hope this helps, thanks

How to catch a drop down event from a datalist and have a cascading effect.

Many a times in projects we have come across a need to get a drop down event from a datalist for a particular row, here is the code how you can achieve it.

1. In your data list set the selected index change event of the drop down and set the AutpPostBack Property to true.

2. Write the code as below

protected void ddlYourDropDown_SelectedIndexChanged(object sender, EventArgs e)
{

DropDownList ddlYourDropDown= (DropDownList)sender;


//So here you got the dropdown from the datalist row
// do whatever you want

}

Once you get the particular drop down from the datalist you can do whatever you want with its value, for example, if you need to have a cascading effect of drop downs within your data list, then you can acieve it very easily as below.

protected void ddlParentDropDown_SelectedIndexChanged(object sender, EventArgs e)
{

DropDownList ddlParentDropDown_= (DropDownList)sender;
DataListItem dataListItem = (DataListItem)ddl.Parent; // get the datalistitem you select to get the drop down to which you want to populate based on the parent drop down

DropDownList ddlChildDropDown= (DropDownList)dataListItem.FindControl("ddlChildDropDown");
ddlChildDropDown.Items.Clear();
if (ddlParentDropDown!= null && ddlChildDropDown!= null)
{
if (ddlParentDropDown.SelectedIndex != 0)
{
//populate Child drop down with parent drop down's (ddlParentDropDown) value

}
}