Soci (Soczó Zsolt) szakmai blogja

2012.06.14.

RadioButton MVVM alatti használata

Filed under: .NET,Szakmai élet,WPF — Soczó Zsolt @ 07:50

Jó kis megoldás, elegáns.

2012.06.05.

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

Filed under: Élet,Tőzsde — Soczó Zsolt @ 15:02

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.

2012.06.04.

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

Filed under: Adatbázisok,SQL Server,SQL Server 2008 R2,Szakmai élet — Soczó Zsolt @ 22:35

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

Filed under: Adatbázisok,Felhívás,SQL Server,SQL Server 2012,Szakmai élet — Soczó Zsolt @ 11:50

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. :)

Powered by WordPress