Search:

Stickers:

Ultimi commenti:

Tags:

Archivi:

Marzo 2013 ( 1 )
Dicembre 2010 ( 1 )
Novembre 2010 ( 2 )
Luglio 2010 ( 1 )
Giugno 2010 ( 3 )
Maggio 2010 ( 1 )
Aprile 2010 ( 2 )
Novembre 2009 ( 1 )
Settembre 2009 ( 2 )
Luglio 2009 ( 2 )
Maggio 2009 ( 2 )
Aprile 2009 ( 1 )
Marzo 2009 ( 2 )
Gennaio 2009 ( 1 )
Dicembre 2008 ( 1 )
Novembre 2008 ( 4 )
Ottobre 2008 ( 2 )
Settembre 2008 ( 2 )
Agosto 2008 ( 1 )
Luglio 2008 ( 2 )
Giugno 2008 ( 2 )
Maggio 2008 ( 2 )
Aprile 2008 ( 3 )
Febbraio 2008 ( 3 )
Gennaio 2008 ( 6 )
Dicembre 2007 ( 2 )
Novembre 2007 ( 3 )
Ottobre 2007 ( 1 )
Settembre 2007 ( 3 )
Agosto 2007 ( 2 )
Luglio 2007 ( 5 )
Giugno 2007 ( 11 )
Maggio 2007 ( 13 )
Aprile 2007 ( 2 )

Managed Windows API

Capita a volte di dover utilizzare delle funzionalita’ di Windows che non sono accessibili direttamente tramite il .NET framework. In questi casi e’ necessario utilizzare delle chiamate a funzioni contenute in DLL di sistema. Utile e’ il sito http://www.pinvoke.net/ , che ci aiuta a definire la corretta firma i vari metodi delle DLL da inserire nel nostro codice .NET.

Una volta presa la firma delle funzioni che ci interessano, queste chiamate vanno wrappate in modo che sia piu’ semplice utilizzarle.

Su questo sito e’ presente una collection di componenti C# che permette di fare chiamate ad API di Windows direttamente da codice managed, senza stare a scrivere manualmente le firme dei metodi. In pratica e’ sufficiente aggiungere la DLL al proprio progetto .NET ed invocare i metodi esposti da essa. I metodi sono categorizzati in namespace, quindi e’ facile trovare quello che ci serve. Inoltre sono disponibili i sorgenti, cosi’ da poter aggiungere eventuali altre chiamate a API non presenti.

Technorati Tag: ,,

Pubblicato il: 9 giugno 2010 0:34; 1 commenti so far.

Tags: Programmazione


Count di 2 tabelle

Mi e’ capitato in questi giorni di dover fare una query per controllare il numero di record all’interno di due tabelle (ad es. Customers e Orders), ovviamente la mia intenzione era quella di fare tutto con un’unica chiamata.

Un modo per fare questa query potrebbe essere il seguente:

(SELECT COUNT (*) FROM Northwind.dbo.Customers)
  UNION ALL 
(SELECT COUNT (*) FROM Northwind.dbo.Orders)

Ottenendo il seguente risultato:

Risultato 1

 

Ho avuto quel che volevo su di un’unica colonna. Ma se io volessi entrambi sulla stessa riga ma su due colonne diverse?

Per fare questo si potrebbe utilizzare la seguente query:

SELECT
(SELECT COUNT (*) FROM Northwind.dbo.Customers) AS CustomersCount,
(SELECT COUNT (*) FROM Northwind.dbo.Orders) AS OrdersCount

Questa query ha il seguente risultato:

Risultato SQL Server

 

Cosi’ facendo ho un modo chiaro per identificare il risultato delle 2 tabelle. Purtroppo questa query funziona in SQL Server ma non in Access. C’e’ un modo per scrivere la stessa query in un SQL che vada bene per entrambi?

Ecco la soluzione:

SELECT Sum(Cust) AS CustomersCount, Sum(Ord) AS OrdersCount FROM
(
  SELECT COUNT (*) AS Cust, 0 AS Ord FROM Northwind.dbo.Customers
    UNION ALL
  SELECT 0 AS Cust, COUNT (*) AS Ord FROM Northwind.dbo.Orders
) AS T

Come si puo’ vedere, il risultato e’ identico anche in Access:

Risultato Access

Technorati Tag: ,

Pubblicato il: 8 maggio 2010 10:46; 0 commenti so far.

Tags: Programmazione