Wednesday, September 16, 2009

<THEAD>, <TBODY>, and <TFOOT> elements for ASP:Table

Use TableSection property of TableRow to set the location for the row


Tuesday, July 28, 2009

SQL Sever 2008 - Merge

Sample:

merge into item_lookup l
using (
select 3 product_type_id, 3 item_id
) t on l.product_type_id = t.product_type_id
when matched then update
set l.item_id = t.item_id
when not matched then insert
(product_type_id, item_id)
values
(t.product_type_id, t.item_id);

Monday, July 27, 2009

Linq to SQL with GroupBy - SUM

http://csainty.blogspot.com/2008/01/linq-to-sql-groupby.html

Linq to SQL
var pcs = from a in db.Addresses
group a by a.PostalCode into g
select new {PostalCode = g.Key, Orders = (int?)g.Sum(addr =>addr.SalesOrderHeaders_ShipTo.Count) ?? 0, OrderValue = (decimal?)g.Sum(addr => addr.SalesOrderHeaders_ShipTo.Sum(o => o.SubTotal + o.Freight)) ?? 0m};

SQL
SELECT [t5].[PostalCode]
, COALESCE([t5].[value],@p0) AS [Orders]
, COALESCE([t5].[value2],@p1) AS [OrderValue]
FROM (
SELECT SUM([t4].[value2]) AS [value]
, SUM([t4].[value]) AS [value2]
, [t4].[PostalCode]
FROM (
SELECT (
SELECT SUM([t3].[SubTotal] + [t3].[Freight])
FROM [Sales].[SalesOrderHeader] AS [t3]
WHERE [t3].[ShipToAddressID] = [t2].[AddressID]
) AS [value]
, [t2].[PostalCode]
, [t2].[value] AS [value2]
FROM (
SELECT (
SELECT COUNT(*)
FROM [Sales].[SalesOrderHeader] AS [t1]
WHERE [t1].[ShipToAddressID] = [t0].[AddressID]
) AS [value]
, [t0].[AddressID]
, [t0].[PostalCode]
FROM [Person].[Address] AS [t0]
) AS [t2]
) AS [t4]
GROUP BY [t4].[PostalCode]
) AS [t5]

Linq to SQL with left outer join

http://bhaidar.net/cs/archive/2007/08/01/left-outer-join-in-linq-to-sql.aspx

Linq to SQL
var query = from c in Customers
where c.CustomerID.StartsWith("b")
join o in Orders on c.CustomerID equals o.CustomerID into sr
from x in sr.DefaultIfEmpty()
select new {CustomerID = c.CustomerID, ContactName=c.ContactName, OrderID=x.OrderID==null?-1:x.OrderID};

SQL
SELECT c.CustomerID
, c.ContactName
, (CASE WHEN o.OrderID IS NULL THEN @p1 ELSE o.OrderID END) AS value
FROM Customers c
LEFT OUTER JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE c.CustomerID LIKE @p0

Linq Query using DataTable

var query = from c in datatable.AsEnumerable()
where c.Field("value") == "A"
group by c by c.field("rowID")
select c;

Friday, March 20, 2009

In youth we learn; in age we understand

In youth we learn; in age we understand.
By Marie Ebner von Eschenbach

Tuesday, March 10, 2009

Enabling Integrated Windows Authentication for Firefox

1) Open Firefox
2) In the URL bar type About:Config
3) Find the following entries:
a. network.automatic-ntlm-auth.trusted-uris
b. network.negotiate-auth.delegation-uris
c. network.negotiate-auth.trusted-uris.
4) Double click each one, it will open a window, with a place for you to add text.
5) enter the url

Thursday, March 5, 2009

StripHTML

public string StripHTML(string inputString)
{
string HTML_TAG_PATTERN = "<.*?>";
return Regex.Replace (inputString, HTML_TAG_PATTERN, string.Empty);
}

Tuesday, February 10, 2009

Adding a Stong Name to an existing DLL without source code

Article by Paul Hayman, details in web page:
http://www.geekzilla.co.uk/ViewCE64BEF3-51A6-4F1C-90C9-6A76B015C9FB.htm

  1. Generate a KeyFile using sn tool
    Location: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe
    Command: sn -k keyPair.snk
  2. Get the MSIL for the assembly
    Location: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe
    Command: ildasm SomeAssembly.dll /out:SomeAssembly.il
  3. Rename the original assembly, just in case
    ren SomeAssembly.dll SomeAssembly.dll.orig
  4. Build a new assembly from the MSIL output and your KeyFile
    Location: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe
    Command: ilasm SomeAssembly.il /dll /key= keyPair.snk

Wednesday, February 4, 2009

Regex Syntax

  • .(dot) : matching any character (if the Singleline option is enabled, a dot matches any character including the new line character
  • \w - \W : matching any word character - matching any non-word character
  • \s : matching white-space (white-space is defined as the space character, new line (\n), form feed (\f), carriage return (\r), tab (\t) and vertical tab(\v).
  • \d : matching digits 0-9
  • [] : matching sets of single characters in square brackets
  • [^](caret): added to the start of the set of characters to specifiy that none matching in the set.
  • [1-9] : matching ranges of characters using the hyphen(-). combine ranges of characters togehter as [a-d0-9]
  • *(Star) : matching zero or more times of previous character
  • +(plus) : matching one or more time of previous character
  • ? : matching zero of one times
  • {n} : the minimum number of matches
  • {n,m} : n - the minimum number of mathces, m - the maximum number of matches
  • ^ : matching the start of a string - must be at the beginning of a string
  • $ : matching the end of a string - must be at the end of a string

(P.S. the above are notes after reading the articles online, more details -- see the article: http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx)