Sunday, November 4, 2007

JavaScript Count Up Timer with Source Code using Interval() Method

Try this count up timer.

00:00:00:000

The source code is like below:

<script language="javascript">
var myInterval;
var count = 0;
var startTime;

function startStopCountUp()
{
if (document.getElementById("btnReset").style.display == 'none')
{
document.getElementById("btnReset").style.display = '';
}
if (document.getElementById("btnCountUp").value == "Pause")
{
StopCountUp();
document.getElementById("btnCountUp").value = "Resume";
}
else
{
startTime = new Date();
myInterval = window.setInterval('StartCountUp()',333);
document.getElementById("btnCountUp").value = "Pause";
}
}

function StartCountUp()
{
var myDate = new Date();
count = myDate - startTime + count;
startTime = myDate;

spanTimer.innerHTML = showDiffTime(count);
}

function StopCountUp()
{
window.clearInterval(myInterval);
}

function ResetCountUp()
{
StopCountUp();
document.getElementById("btnCountUp").value = "Start";
document.getElementById("btnReset").style.display = 'none';
count = 0;
spanTimer.innerHTML = '0';
}

function showDiffTime(diffTime)
{
var miliseconds = diffTime % 1000;
var scratch = Math.floor((diffTime - miliseconds) / 1000);
var seconds = scratch % 60;
scratch = Math.floor((scratch - seconds) / 60);
var minutes = scratch % 60;
scratch = Math.floor((scratch - minutes) / 60);
var hours = scratch % 24;
scratch = Math.floor((scratch - hours) / 24);
var days = scratch;

var displayDiffTime = ""

if (days > 0)
displayDiffTime += days + ' days, ';

if (hours > 9)
displayDiffTime += hours + ':';
else
displayDiffTime += '0' + hours + ':';

if (minutes > 9)
displayDiffTime += minutes + ':';
else
displayDiffTime += '0' + minutes + ':';

if (seconds > 9)
displayDiffTime += seconds + ':';
else
displayDiffTime += '0' + seconds + ':';

if (miliseconds > 99)
displayDiffTime += miliseconds;
else if (miliseconds > 9)
displayDiffTime += '0' + miliseconds;
else
displayDiffTime += '00' + miliseconds;
return displayDiffTime;
}
</script>

<input type="button" name="btnCountUp" value="Start" onClick="startStopCountUp();" ID="btnCountUp">
<input type="button" name="btnReset" value="Reset" onClick="ResetCountUp();" ID="btnReset" style="DISPLAY:none">
<span id="spanTimer" style="font-size: 20px; color: orange;">00:00:00:000</span>

Wednesday, October 31, 2007

JavaScript Timers with setTimeout and setInterval Methods

Here, i would like to share with you how to use the JavaScript's settimeout(), clearTimeout(), setInterval() and clearinterval() methods to set timers and create delayed actions.

setTimeout()

The general syntax of window.setTimeout() method is:

setTimeout(expression, timeout);
where expression is the JavaScript code to run after timeout miliseconds have elapsed.
setTimeout() return a numeric timeout ID that can be used to track the timeout. This is most commonly used with the clearTimeout() method.
After setTimeout() is called, execution of the following script will continue normally. The expression in setTimeout() will be run when pass the timeout period.

For example, the following code sets up an alert box to appear after 3 seconds and disable the button when a button is clicked. After 3 seconds, the alert appears. When click the [ok] button of the alert, the button will enable again.
<script language="javascript">
function alertClickHandler()
{
setTimeout('showAlert()', 3000);
document.getElementById("btnClickMe").disabled = true;
}

function showAlert()
{
alert('3 seconds time out');
document.getElementById("btnClickMe").disabled = false;
}
</script>

<input type="button" name="btnClickMe" id="btnClickMe" value="Click me" onclick="alertClickHandler();" />

Try it! Click the button below and wait 3 seconds.



clearTimeout()

The window.clearTimeout() method is used to cancel a timer before it goes off. It's syntax is:
clearTimeout(timeoutId);
where timeoutId is the timeout ID returned from the setTimeout() method call.

For example, the following code sets up an alert box to appear after 3 seconds when a button is clicked, but the visitor can click the same button before the alert appears and cancel the timeout.
<script language="javascript">
var timeoutID = 0;

function alertTimerClickHandler()
{
if (document.getElementById("btnClick").value == "Try click me!")
{
timeoutID = setTimeout('showAlertTimer()', 3000);
document.getElementById("btnClick").value = "Click me to stop the timer!";
}
else
{
clearTimeout(timeoutID);
document.getElementById("btnClick").value = "Try click me!";
}
}

function showAlertTimer()
{
alert('Time out! You did not stop the timer.');
document.getElementById("btnClick").value = "Try click me!";
}
</script>

<input type="button" name="btnClick" id="btnClick" value="Try click me!" onclick="alertTimerClickHandler();" />

Try it! Click the button below to start the timer and click it again within 3 seconds to cancel it.



setInterval()

The setInterval() function is very same to setTimeout() even the their syntax is similar. It's syntax is:
setInterval(expression, interval);
The difference is setTimeout() triggers expression only once but setInterval() keeps triggering expression again and again unless stop it.

clearInterval()

If want to cancel a setInterval(), call clearInterval() method. It's syntax is like below:
clearInterval(intervalId);
where intervalId is the interval ID returned from the setInterval() method call.

Here's a simple example using both setInterval() and clearInterval. When visitor click the button at below, the following code start to count up and display it until visitor click the button again to stop it.
<script language="javascript">
var intervalID = 0;
var count = 0;

function startCountUp()
{
if (document.getElementById("btnClickInterval").value != "Stop count up!")
{
document.getElementById("divCount").innerHTML = count;
intervalID = setInterval('displayCountUp()', 1000);
document.getElementById("btnClickInterval").value = "Stop count up!";
}
else
{
clearInterval(intervalID);
count = 0;
document.getElementById("btnClickInterval").value = "Restart count up!";
}
}

function displayCountUp()
{
count += 1;
document.getElementById("divCount").innerHTML = count;
}
</script>

<div id="divCount" style="font-size: 20px; color: orange;"></div>
<input type="button" name="btnClickInterval" id="btnClickInterval" value="Start count up!" onclick="startCountUp();" />


Try it! Click the button below to start count up and click it again to stop it.

0

Wednesday, October 24, 2007

Import Data from Excel File using VB .NET

The following is the sample code how to query an Excel spreadsheet from an ASP.NET page using VB .NET:

Dim strConn As String
Dim da As OleDbDataAdapter
Dim ds As New DataSet

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
         "Data Source=C:\test.xls;Extended Properties=""Excel 8.0;"""
da = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
da.TableMappings.Add("Table", "Excel")
da.Fill(ds)

dataGrid1.DataSource = ds.Tables(0).DefaultView
dataGrid1.DataBind()
da.Dispose()
Note:
   -  The code above is just select data from Sheet1(Worksheet) only.

If you want to select data from first sheet in the Excel workbook, need to get the name of the first sheet first.
To get the name of the first sheet in the Excel workbook, refer code below:
Dim dao_dbE As dao.DBEngine
Dim dao_DB As DAO.Database
Dim strFirstSheetName As String

dao_dbE = New dao.DBEngine
dao_DB = dao_dbE.OpenDatabase("C:\test.xls", False, True, "Excel 8.0;")
strFirstSheetName = dao_DB.TableDefs(0).Name
da0_DB.Close()
Note:
   -  Using code above Microsoft DAO 3.5 Library is needed.
   -  From the Project menu, click References, click Add Reference...
      and then select the Microsoft DAO 3.5 Library to add it.

So, complete code should like below:
Dim strConn As String
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim dao_dbE As dao.DBEngine
Dim dao_DB As DAO.Database
Dim strFirstSheetName As String

dao_dbE = New dao.DBEngine
dao_DB = dao_dbE.OpenDatabase("C:\test.xls", False, True, "Excel 8.0;")
strFirstSheetName = dao_DB.TableDefs(0).Name
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
         "Data Source=C:\test.xls;Extended Properties=""Excel 8.0;"""

da = New OleDbDataAdapter("SELECT * FROM [" & _
          strFirstSheetName & "]", strConn)
da.TableMappings.Add("Table", "Excel")
da.Fill(ds)

dataGrid1.DataSource = ds.Tables(0).DefaultView
dataGrid1.DataBind()

da.Dispose()
da0_DB.Close()

Good Luck!!!

Saturday, October 20, 2007

User.Identity.Name Returns Empty String in ASP .NET

If you try to get currently logged on user name with User.Identity.Namein ASP.NET, but the return value is empty string.
The following is syntax accesses this variable in C# .NET:

string strUserName = User.Identity.Name;

This problem occurs because if you use Anonymous Access security to access the .aspx page. This problem can also occurs if you give the Anonymous user access in the <authorization> section of the Web.config file.

Solution:
Check the authentication mode in the Web.config file.

If the authentication mode is Forms-based authentication:
<authentication mode="Forms" />
To solve this problem just deny access to the Anonymous user in the Web.config file, user the following syntax:
<authorization>
   <deny users = "?" /> <!-- This denies access to the Anonymous user -->
   <allow users = "*" /> <!-- This allows access to all users -->
</authorization>

If the authentication mode is Windows-based authentication:
<authentication mode="Windows" />
To solve this problem, use the following steps:

1. Go to Internet Services Manager, right-click the .aspx file or the Web Project folder, and then click Properties.
2. If you clicked Properties for the Web Project folder, click the Directory Security tab. If you clicked Properties for the .aspx file, click the File Security tab.
3. Under Anonymous Access and authentication control, click Edit.
4. In the Authentication methods dialog boc, clear the Anonymous Access check box, and then select either theBasic, the Digist or the Integrated (NT Challenge/Response) check box.
6. Click OK to close both dialog boxes.


Friday, October 19, 2007

Calling Javascript Function from Code Behind(.vb)

This is the function at html page:

<script language="javascript">
   function test(){
      //Add the function code here
   }
</script>

To call this javascript function from code behind(.vb), Use Page.RegisterStartupScriptfunction like the following code:

Dim strScript As string = "<script language='javascript' id='myClientScript'>test();</script>"
Page.RegisterStartupScript("callTest", strScript)

Monday, September 3, 2007

.NET Web Service error - "The request failed with HTTP status 401: Access Denied."

This happen when try to call a Web service application and Anonymous access authentication is turned off.
You can solve this problem by using the Credentials property of the Web service client proxy to set the security credentials for Web service client authentication.
Assign the DefaultCredentials to the Credentials property of the Web Service Proxy class to call the Web service while Anonymous access authentication is turned off. See the following code:

  //Assigning DefaultCredentials to the Credentials property
  //of the Web service client proxy(ws)
  ws.Credentials = System.Net.CredentialCache.DefaultCredentials

Friday, August 31, 2007

.NET Web Service error - "The test form is only available for requests from the local machine"

I faced this error before.
I used my local pc's window service application to call a web service function at server (different pc) but it is fail. It cannot work like when I used the same window service application to call the same web service function at local pc.

Then, I tried to browse to the web service through ie. When I click the fuction, it showed the message - "The test form is only available for requests from the local machine"

After that, I found the solution to fix it. I just added in some code inside the
web.config file then the this problem is solved. The code I added in is like below:

<configuration>
  <system.web>
    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
  </system.web>
</configuration>

Thursday, July 26, 2007

SQL Server function for datetime - DATEADD

DATEADD is a date function will return a datetime value based on the number interval add to the particular date part of the specified date. The syntax DATEADD is like:

DATEADD(date_part, number_interval, specified_date)

date_part is the parameter that specifies on which part of the date to be manipulated with the number interval. You can add month, year, day and etc. You can use
MONTH, MM or M for month
YEAR, YYYY, YY for year
DAY, DD, D for day
HH for hour
SS, S for Second

For example :
SELECT DATEADD(D, -1, GETDATE())AS [Yesterday]
SELECT DATEADD(MM, 3, GETDATE())AS [FourMonthsFromNow]
SELECT DATEADD(YEAR, -2, GETDATE())AS [TwoYearsAgo]

Monday, July 23, 2007

Window Service timer problem - VB.NET

I wrote a Windows Service application in VB.NET before and i faced a problem. I used timer to do the schedule task in this application. I dropped a Timer Control on the designer then add the Tick event to do the schedule task. I can built, install, stop and restart the service. However the problem is it the Tick event never fires at all.

After that, i try to use code to create the timer. I changed to use System.Timers.Timer instead of System.Windows.Forms.Timer dropped on the designer from Toolbox. Then it is work already. The code is like below:-

Dim timerSchedule As System.Timers.Timer

Protected Overrides Sub OnStart(ByVal args() As String)
timerSchedule = New System.Timers.Timer(1000)
AddHandler timerSchedule.Elapsed, AddressOf timerSchedule_Elapsed timerSchedule.Start() End Sub

Private Sub timerSchedule_Elapsed(ByVal pSender As Object, ByVal pArgs As System.Timers.ElapsedEventArgs)
Try timerSchedule.Stop()
'call my a function to do the scheduled task
DoScheduledTask()
Catch ex As Exception
Finally
timerSchedule.Start()
End Try End Sub

Try to know more about System.Timers Namespace, it will here you more.