Archive for June, 2012

RadioButton MVVM alatti használata

Thursday, June 14th, 2012

Jó kis megoldás, elegáns.

“Szakcikk”: Meneküljön, ki merre lát!

Tuesday, June 5th, 2012

Amikor ilyen hírek jönnek már a csapból is, akkor szokott fordulni a piac. Pár héten belül kiderül.

SQL Server 2012 újdonságok – 7. Új TSQL függvények

Monday, June 4th, 2012

Számos új függvény teszi egyszerűbbé a mindennapi TSQL programozást. A függvények egy része az Excel vagy az Access függvényeihez hasonló, megkönnyítve az ezeken írt alkalmazások átírását SQL Server 2012-re.
Számos új dátumkezelő függvényünk van. Az eomonth visszaadja egy adott dátumhoz tartozó hónap utolsó napját (kezelve szökőéveket, stb.). A második paraméterével át lehet térni egy másik hónapra is:

declare @currentdate datetime = '20120225';
select 
eomonth (@currentdate) as 'EOMMonth',
eomonth (@currentdate, -2) as 'EOM2MonthsEarlier',
eomonth (@currentdate, 1) as 'EOM1MonthLater';

Dátum összerakása a komponenseiből:

declare @Year int = 2011;
declare @Month int = 2;
declare @Day int = 29;

select datefromparts(@Year, @Month, @Day) AS Result;

Hasonló függvények készültek a többi típushoz is: datetimefromparts, datetime2fromparts, datetimeoffsetfromparts, smalldatetimefromparts, timefromparts.
A típusok közötti konverzió sokkal egyszerűbbé vált. Egyrészt most már van try_convert, ami az eddigi convert függvénnyel ellentétben nem dob hibát, ha nem sikerül a konverzió, hanem nullt ad vissza:

select TRY_CONVERT(float, 'test') F
, TRY_CONVERT(datetime2, '2012-05-15') D1
, TRY_CONVERT(datetime2, '2012-05-15.') D2
, TRY_CONVERT(datetime2, '2012-05-45') D3
, TRY_CONVERT(datetime2, '25/04/2020', 103) D4;	--British/French: dd/mm/yyyy

A .NET-ből ismert alaptípusok Parse, TryParse és ToString metódusát is kivezették, így ezekkel gazdag, szabályozható formátumú és kultúrafüggő értelmezési és formázási lehetőségek jelentek meg az SQL Serverben.

SELECT PARSE('7/17/2011' AS DATE USING 'en-US') AS dt1,
PARSE('2011.07.17.' AS DATE USING 'hu-HU') AS dt2;

Az en-US angol nyelv, USA-ban értelmezve, a hu-HU magyar nyelv, Magyarországon értelmezve.
A format függvény segítségével a .NET-es típusok ToStringjét hívhatjuk meg, amivel rendkívül egyszerű összetett formázásokat is megvalósítani:

declare @Price decimal(19,4) = 13542.1251;
declare @Date datetime2(0) = '20120425 15:13:00';
select 
	--Pénzösszegek
	format(@Price, 'C4', 'hu-hu') HunPrice, --13 542,1251 Ft
	format(@Price, 'C4', 'en-us') UsPrice,  --$13,542.1251	
	--Dátumok
	format(@Date, 'D', 'hu-hu') HunDate,    --2012. április 25.
	format(@Date, 'D', 'en-us') UsDate,     --Wednesday, April 25, 2012 
	format(@Date, 'd', 'hu-hu') HunDate2,
	format(@Date, 'd', 'en-us') UsDate2,
	format(@Date, 'f', 'hu-hu') HunDate3,
	format(@Date, 'f', 'en-us') UsDate3,
	--Custom format string
	format(@Date, 'yyyy.MM.dd') HuncutDate3,
	--Számok formázása
	format(@Price, 'F2', 'hu-hu') HunNumber,
	format(@Price, 'F2', 'en-us') UsNumber,
	format(@Price, '00000', 'en-us') LeadingZerosNumber,
	format(@Price, 'N2', 'hu-hu') HunGroupedNumber,
	format(@Price, 'N2', 'en-us') UsGroupedNumber;

Az eddig case-ekkel megvalósított logikai kifejezések egy részét egyszerűbben is meg tudjuk fogalmazni az iif és a choose függvényekkel:

select 
a = iif(1=1, 'cica', 'kutya'),	--cica
b = iif(1=2, 'cica', 'kutya'),      --kutya
n = iif(null = 1, 'cica', 'kutya'); --kutya

A choose az n. argumentumot adja vissza, 1-gyel kezdődő sorszámmal:

select 
choose(1, 'a', 'b', 'c') as 'first', 
choose(2, 'a', 'b', 'c') as 'second';

A concat függvénnyel szövegeket lehet egybefűzni. Abban különbözik a + operátortól, hogy mivel a paraméterei stringek, ha más típus megy be paraméterül, az automatikusan stringgé konvertálódik, így biztosan stringként kerül összefűzésre . A másik különbség, hogy a NULL paraméterek helyett üres stringet helyettesít be, míg a + operátor alap set opciók esetén NULL-t ad vissza.

declare @PurchaseOrderNumber int = 123;
select concat('PO', @PurchaseOrderNumber) PO1, 
concat('PO', NULL, @PurchaseOrderNumber) PO2;

Bár az adatok formázása általában nem az adatbázis, hanem a megjelenítési réteg feladata, ennek ellenére sokszor kellett eddig is például számokat vagy dátumokat formázni SQL-ben is. Az új függvényekkel a .NET formázások teljes repertoárja elérhető az SQL programozók részére is.

SQL prospektus kiküldve

Monday, June 4th, 2012

Feladtam postára az eddig beérkezett igényeket, aki szerencsés, már holnap megkapja, aki nem, az soha, ismerve a minőségéről híres postát. Ha valaki nem kapja meg két héten belül jelezze, elküldöm még egyszer.

Jó olvasgatást. :)