Linq To Sql – query con campi a null
Lavorando su un progetto winform in vb.net e linq to sql mi sono imbattuto in un problema in cui ho perso un pò di tempo per venirne a capo.
Praticamente il problema di fondo è quello di scrivere una query linq che recuperi dei record filtrandoli su un campo che può essere anche NULL (nell’esempio il campo che contiene anche valori a NULL è il campo CF).
Quindi avere sia i record che soddisfano la condizione del parametro sia quelli che hanno il campo a NULL.
In t-sql la query sarebbe scritta piĂą o meno in questa maniera:
SELECT * FROM Anagrafica WHERE NOME = @Nome AND((@cf IS NULL) OR (cf = @cf))
ottobre 15, 2011
Tags: linq, LinqToSQL, SQL, SQL Server Posted in: Coding, Develop, Programmazione, SQL
No Comments
Windows 7 e le icone del desktop perdute!
Questa mattina dopo aver acceso il PC, noto solo dopo qualche minuto (stavo ancora dormendo
) che tutte le mie icone sul desktop erano sparite! La cosa strana è che se aprivo “esplora risorse” e cliccavo sull’icona del desktop tutte le mie icone e documenti erano li. In un primo momento ho pensato che il processo di explorer.exe si fosse corrotto, e quindi dal task manager l’ho terminato e rifatto partire, ma niente.
Allora “googlando” un pò ho trovato una cosa al dir poco curiosa. Praticamente in Windows 7 esiste una procedura di manutenzione che ogni domenica mattina all’una ripulisce le icone corrotte e che non sono piĂą valide (tipo collegamenti a periferiche USB non piĂą collegate).
Per ripristinare la situazione alla normalità è bastato fare tasto destro sul desktop , cliccare sulla voce Visualizza e mettere il segno di spunta sulla voce Mostra Icone Desktop.
dicembre 26, 2010
Posted in: Tecnologie
No Comments
Concatenazione di righe utilizzando FOR XML PATH
Riporto oggi un tip che a volte può tornare molto utile.
Può capitare di dover volere un elenco di elementi distribuiti su piĂą righe visualizzati in un’unica riga e separati da una virgola o da qualsiasi altro carattere divisorio.
Vediamo come fare:
CREATE TABLE Products (
id INT PRIMARY KEY,
product_desc VARCHAR(50));
INSERT INTO Products VALUES (1, 'Book');
INSERT INTO Products VALUES (2, 'DVD');
INSERT INTO Products VALUES (3, 'Blueray');
INSERT INTO Products VALUES (4, 'CD');
INSERT INTO Products VALUES (5, 'Magazine');
-- Primo step ci facciamo ritornare l'xml classico
SELECT product_desc
FROM Products
ORDER BY product_desc
FOR XML PATH('')
--RESULT:
<product_desc>Blueray</product_desc><product_desc>Book</product_desc><product_desc>CD</product_desc><product_desc>DVD</product_desc><product_desc>Magazine</product_desc>
Poi eliminiamo il TAG product_desc sostituendolo con il nostro carattere separatore (in questo caso usiamo la virgola)
SELECT ',' + product_desc
FROM Products
ORDER BY product_desc
FOR XML PATH('')
--RESULT:
,Blueray,Book,CD,DVD,Magazine
Adesso non rimane che eliminare il primo carattere, utilizziamo la funzione STUFF
SELECT STUFF((
SELECT ',' + product_desc
FROM Products
ORDER BY product_desc
FOR XML PATH('')),1,1,'')
--RESULT:
Blueray,Book,CD,DVD,Magazine
fonte ufficiale: SQLSHARE
novembre 20, 2010
Posted in: Develop, Programmazione, SQL
2 Comments
SSMS Tools Pack 1.9
Consiglio a tutti gli appassionati di SQL Server un add-in che non può mancare tra i loro tools, sto parlando dell’ SSMS Tools Pack.
L’ Add-in è valido per le versioni di SQL 2005 e 2008 e cosa piĂą eccezionale è completamente free!
settembre 19, 2010
Posted in: Programmazione, SQL
2 Comments
SQL Tips : ANSI_NULLS
La seguente query :
SELECT DISTINCT Color from Production.Product WHERE Color IS NOT NULL;
luglio 14, 2010
Posted in: Coding, Programmazione, SQL
No Comments
Google censura l’uso del Bluetooth nel Market di Android!
Voglio riportare un fatto che è da tempo che seguo con molto interesse e che ancora oggi sto cercando di trovare delle spiegazioni plausibili a tutto ciò.
Di seguito trovate la traduzione in italiano del post originale che potete trovare invece qui
Un giorno di Giugno 2010, la nostra applicazione per Android Bluetooth file transfer è stata rimossa manualmente da Google dall’Android Market senza nessuna ragione. In principio abbiamo pensato che fosse uno dei soliti e famosi bug di Android, dovuto all’estrema fragilitĂ dell’intera piattaforma, e così eravamo abbastanza ottimisti. Ma dopo qualche giorno, la nostra applicazione non era ancora visibile sul Market e con “alcune ispezione” abbiamo scoperto che era stata rimossa/nascosta a tutti i cellulari con il firmaware 1.5 e 1.6: ovvero il 50% di tutti i telefoni Android!!!(fonte: Android website)
luglio 9, 2010
Posted in: Android, Tecnologie
No Comments
SQL : Funzione per calcolare l’etĂ
Calcola l’etĂ fornendo una data e confrontandola con la data attuale:
CREATE FUNCTION [dbo].[Age] (@birthday DATETIME)
RETURNS INT
AS
BEGIN
DECLARE @age INT
DECLARE @d AS DATETIME
SET @d=GETDATE()
SELECT @age = DATEDIFF(yy, @birthday, @d) -
--Se non ha compiuto gli anni nell'ultimo anno in corso sottrae 1 anno.
( CASE
WHEN ( DATEPART(m,@birthday ) > DATEPART(m, @d) )
OR ( DATEPART(m, @birthday ) = DATEPART(m, @d) AND DATEPART(d, @birthday) > DATEPART(d, @d) )
THEN 1
ELSE 0
END
)
RETURN( @age )
END
Per eseguirla :
SELECT DBO.AGE('05/02/1977')
Una variante potrebbe essere sapere che età si aveva in un anno specifico, quindi passando due parametri anzichè uno:
CREATE FUNCTION [dbo].[AgeAt] (@birthday DATETIME, @d DATETIME)
RETURNS INT
AS
BEGIN
DECLARE @age INT
SELECT @age = DATEDIFF(yy, @birthday, @d) -
--Se non ha compiuto gli anni nell'ultimo anno in corso sottrae 1 anno.
( CASE
WHEN ( DATEPART(m,@birthday ) > DATEPART(m, @d) )
OR ( DATEPART(m, @birthday ) = DATEPART(m, @d) AND DATEPART(d, @birthday) > DATEPART(d, @d) )
THEN 1
ELSE 0
END
)
RETURN( @age )
END
E per utilizzarla semplicemente :
select dbo.AgeAt ('05/02/1977', '01/02/1998') -- risultato 21
luglio 8, 2010
Posted in: Coding, Programmazione, SQL
One Comment
Cisco Cius – L’anti-iPad ha il cuore Android
Cominciano ad essere ormai decine le aziende che vogliono essere presenti sul mercato dei tablet-pc. Ora fa il suo ingresso anche un nome altisonante come quello di Cisco , che entro i primi mesi del 2011 presenterĂ il suo tablet di nome CIUS (see us) ovvero vediamoci!
Equipaggiato con il sistema operativo Android, Cisco vuole essere presente e cercare di prendersi la sua fetta di mercato.
Staremo a vedere cosa uscirĂ fuori.
giugno 30, 2010
Posted in: Senza categoria
No Comments
Which language?
Found this on a forum. In response to the question “Which programming language should I learn first?” – one user responds:
Depends.
To program in an expressive and powerful language: Python
To get a website up quickly:Â PHP
To mingle with programmers who call themselves “rockstars”: Ruby.
To really learn to program: C.
To achieve enlightenment: Scheme.
To feel depressed: SQL
To drop a chromosome: Microsoft Visual Basic
To get a guaranteed, mediocre, but well paying job writing financial applications in a cubicle under fluorescent lights: Java.
To do the same thing with certifications and letters after your name: C#
To achieve a magical sense of childlike wonder that you have a hard time differentiating from megalomania: Objective C
I could go on… but I’m not feeling hateful enough today.
maggio 7, 2010
Posted in: Develop
No Comments
Android dev: Episode #11 – Intents – Multi Activity Applications
Sul sito http://www.xtensivearts.com/ è stato pubblicato un nuovo video tutorial (11° episodio)  sullo sviluppo di applicazioni per Android.
Speriamo che l’autore continui a pubblicarne altri in quanto secondo il mio parere sono ben fatti.
Buon coding…
aprile 17, 2010
Posted in: Android, Coding, Develop, Programmazione
One Comment




Code Emotion 2011