Pages

Search This Blog

Tuesday, January 26, 2010

SQL query and optimization

I've run a simple test on sql query involve 2 tables, tblEmail & tblEmailPromotion

Table columns:
tblEmail (email varchar(255), IsDeleted int)
tblEmailPromotion (email varchar(255), PromotionID int)

Both tables without index

SELECT TOP (90) e.Email FROM tblEmail e
LEFT OUTER JOIN tblPromotionEmail pe ON e.Email = pe.Email AND pe.PromotionID = 6
WHERE pe.PromotionID IS NULL
AND e.IsDeleted = 0
AND e.Email LIKE '%hotmail%'
ORDER BY e.Email

It takes about 2:43 (2 minutes 43 seconds) to get the result

Change the question from "LEFT OUTER JOIN" to "IN" become

SELECT TOP (90) e.Email FROM tblEmail e
WHERE e.Email NOT IN (SELECT Email FROM tblPromotionEmail pe WHERE pe.PromotionID = 6)
AND e.IsDeleted = 0
AND e.Email LIKE '%hotmail%'
ORDER BY e.Email

Guest what? great improvement. Takes 1:07 (1 minute 7 seconds) to load the result.

Now, we index table tblEmail column Email (Unique)

SELECT TOP (90) e.Email FROM tblEmail e
LEFT OUTER JOIN tblPromotionEmail pe ON e.Email = pe.Email AND pe.PromotionID = 6
WHERE pe.PromotionID IS NULL
AND e.IsDeleted = 0
AND e.Email LIKE '%hotmail%'
ORDER BY e.Email

It takes about 1:22 (1 minute 22 seconds) to get the result

Now, we run the 2nd query:

SELECT TOP (90) e.Email FROM tblEmail e
WHERE e.Email NOT IN (SELECT Email FROM tblPromotionEmail pe WHERE pe.PromotionID = 6)
AND e.IsDeleted = 0
AND e.Email LIKE '%hotmail%'
ORDER BY e.Email

It only takes 27 Seconds

To make the 2nd query better:

SELECT TOP (90) e.Email FROM tblEmail e
WHERE e.Email NOT IN (SELECT Email FROM tblPromotionEmail pe WHERE pe.PromotionID = 6 AND pe.Email LIKE '%hotmail%')
AND e.IsDeleted = 0
AND e.Email LIKE '%hotmail%'
ORDER BY e.Email

This will give 15 seconds.

Summary:

We need to choose the query wisely.
Index will help to improve data retrieving process but must be careful with indexes. Wrong indexes may cause you more problem.

Friday, January 22, 2010

Saturday, January 16, 2010

Add Yahoo PingBox to Facebook fan page using FBML

Well, there do have Yahoo! Messenger Pingbox for facebook application but it's only able to add to personal profile and not to fan page.

What i'm going to do here is to add Yahoo! Messenger Pingbox to fan page using facebook static FBML application. Here, i'm not going to discuss on how to use FBML application, to see how FBML works, please check http://socialwants.com/development/adding-facebook-fan-page-applications/

Now, i have my Yahoo! Messenger Pingbox code.

<object id="pingbox0000000000000" type="application/x-shockwave-flash" data="http://wgweb.msg.yahoo.com/badge/Pingbox.swf" width="240" height="420"><param name="movie" value="http://wgweb.msg.yahoo.com/badge/Pingbox.swf" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="wid=xxxxxxxxxxxxxxxxxxx--" /></object>


In order to make it work in FBML, i have to change the above code to below

<fb:swf swfsrc='http://wgweb.msg.yahoo.com/badge/Pingbox.swf' imgsrc='http://www.encelabs.com/images/aaaaa.jpg' flashvars='wid=xxxxxxxxxxxxxxxxxxx--' width='184'height='320'/>



where imgscr is the image that will be displayed before pingbox load.

I'm able to get it run in my facebook fan page. Hope it work for you.

Tuesday, January 12, 2010

Invoice Software

Recently have downloaded and tested on a few invoice software/invoice system. Some are very complicated, some are not user friendly and some are very old design.

Surprisingly i found a very simple with very attractive user interface invoicing software. It can easily generate a quite professional quotation and invoice. It include delivery note as well but i'm not using it. It come with professional invoice template and we can customize the quotations & invoices's template field and wording and also can upload company logo.

It's very user friendly and the search feature is also very simple. Just nice customer maintenance module, and reporting module.

For the paid version, a very simple inventory module included in the software. Payment receive module and revenue reporting module. One thing want to highlight here is that the reports can drill down to more details level. Love it.

Simple and nice with very low price. Maybe you can try it. The software called Xin Invoice. The support is not bad and also there are some simple demo can find on their web and youtube. It's just suit my needs but i'm not sure for those who is running more complicated business.

Thursday, December 17, 2009

Failed to create the Crystal Query Engine Visual Studio 2005

When try to open crystal report in VS 2005, error message appear "Failed to open document" and followed by message "Failed to create the Crystal Query Engine".

I believe it same case with what discuss in http://social.msdn.microsoft.com/Forums/en/vscrystalreports/thread/79e1da80-f5c6-42fa-80ca-65a10de5729d .

The root cause maybe because of installation and uninstallation of merge module. Many recommend that we remove the crystal report, after that add crystal report back to visual studio. Steps below

  1. Go to Add/Remove Programs and select Change/Remove for Microsoft Visual Studio 2005
  2. Select Next then Add or Remove Features from the Visual Studio 2005 Maintenance Mode app
  3. Uncheck Crystal Reports for Visual Studio and select Update
  4. Once the "Update" is complete, select Finish
  5. Go back to Add/Remove Programs and select Change/Remove for Microsoft Visual Studio 2005
  6. Select Next then Add or Remove Features from the Visual Studio 2005 Maintenance Mode app
  7. Check Crystal Reports for Visual Studio and select Update
  8. Insert Disk 1 of Microsoft Visual Studio 2005 Installation CD's and select OK
  9. Once the "Update" is complete, select Finish

But in my case, i don't have installation CDs with me. So, i try an alternative way to get it work. You can try it but at your own risk.

I have another development machine which i call it machine B which have VS 2005 with crystal report install and working fine. The one have problem, i call it machine A. What i do is:

1. go to machine B, go to folder C:\Program Files\Common Files\Business Objects\2.7
2. copy the whole bin folder to a external drive or pendrive or thumb drive
3. close the visual studio 2005 in machine A if it's open
4. go to machine A, go to folder C:\Program Files\Common Files\Business Objects\2.7 and rename the bin folder to binA for backup purposes
5. copy the bin for the external drive to C:\Program Files\Common Files\Business Objects\2.7 in machine A
6. try to open visual studio 2005 and open the crystal report development file.
7. it working

It solve my problem especially when i don't have the installation cds with me at the moment. Hope this help

Saturday, December 12, 2009

Error 0xc00470fe: Data Flow Task: The product level is insufficient for component "Source - data1$" (1)

Trying to import data from a text file using MSSQL2005 SSIS import and export wizard to import data from email.txt into MSSQL data and found below error.

Error 0xc00470fe: Data Flow Task: The product level is insufficient for component "Source - email_txt" (1)

Surf around and found that it's a bug for MSSQL2005 SSIS and have fix in MSSQL SP2. So, try to download SP for mssql and it do solve my problem.

Thursday, November 19, 2009

delay open file when startup with batch files

I have come across a need to start 2 application during window start up by sequence. The 1st application i call it App1 (C:\application\App1.exe) and the 2nd one i call it App2 (C:\application\App2.exe). Check the below script, REM mean comment in command prompt.

REM set command display to off
@echo off

REM start application App1.exe
START C:\windows\notepad

REM wait for 5 seconds
PING -n 5 localhost > nul

REM start application App2.exe
START C:\windows\notepad

REM exit batch after finish
EXIT

To test it, Open window notepad. Copy and paste code above to the notepad and save as "start.bat". To make it simple for testing, i have change C:\application\App1.exe to C:\windows\notepad and C:\application\App2.exe to C:\windows\notepad.

Double click on start.bat and you can see the batch file in action.

Hope this help.


Saturday, November 14, 2009

Ping port

Well, sometimes we need to know whether the port in open or block, we need to do some checking or troubleshoot through ping/telnet. We cannot ping a IP with port but we can telnet certain IP together with Port no.

For example:
Go to open command prompt, if we want to check whether port 21 is working for IP 203.166.87.9 what we need to do is
> telnet 203.166.87.9 21

Thursday, November 12, 2009

Method not found: 'Void System.Web.UI.ScriptManager.RegisterStartupScript

Deploy a running web application from one windows 2003 server to another windows 2003 server. The application is running asp.net 2.0 framework with Ajax.net v1, MSSQL 2005.
After deploy everything and run the application, Error message

Method not found: 'Void System.Web.UI.ScriptManager.RegisterStartupScript(System.Web.UI.Page, System.Type, System.String, System.String, Boolean)'

Situation:
In the bin folder, we deploy together with
AjaxControlToolkit.dll
AjaxControlToolkit.pdb
System.Web.Extensions.Design.dll
System.Web.Extensions.dll

After look around and found that the server already installed with the same version but the strange thing is the file size are different from the one i have in bin folder. The first thing can thought of is reinstall the ajax.net.

No luck, after the ajax.net reinstallation, it's not work. Still the same error message:

Method not found: 'Void System.Web.UI.ScriptManager.RegisterStartupScript(System.Web.UI.Page, System.Type, System.String, System.String, Boolean)'

Try to delete all 4 dlls
AjaxControlToolkit.dll
AjaxControlToolkit.pdb
System.Web.Extensions.Design.dll
System.Web.Extensions.dll
from the bin folder but still same error show. So, i undo the deletion.

Try to google around and look for useful suggestion but no luck. All post stated that working after the ajax.net re installation.

Finally, i uninstall the ajax.net from the server and let the application use the 4 dlls
AjaxControlToolkit.dll
AjaxControlToolkit.pdb
System.Web.Extensions.Design.dll
System.Web.Extensions.dll
in the bin files.

It solve my problem.

Hope this sharing helps.

Monday, November 9, 2009

Penang Software House

We are running a software development company Encelabs Sdn Bhd located in Penang, Malaysia. Basically Encelabs provide web application customization like web2.0 community website, facebook application and etc. Encelabs also provided services to develop business software development like eCRM, eProcurement, eRecruitment and etc from A to Z. Some of Encelabs portfolio are listed in Encelabs website.

Feel free to contact Encelabs to know more.