<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>I Blogs di LightSwitch Tips &amp; Tricks</title><link>http://blogs.lightswitch.it/MainFeed.aspx</link><description /><generator>Subtext Version 2.5.1.19</generator><item><title>Le sub con parametri di ritorno</title><link>http://blogs.lightswitch.it/diego/archive/2010/08/30/Le-sub-con-parametri-di-ritorno.aspx</link><pubDate>Mon, 30 Aug 2010 12:35:51 GMT</pubDate><guid isPermaLink="true">http://blogs.lightswitch.it/diego/archive/2010/08/30/Le-sub-con-parametri-di-ritorno.aspx</guid><wfw:comment>http://blogs.lightswitch.it/diego/comments/49.aspx</wfw:comment><wfw:commentRss>http://blogs.lightswitch.it/diego/comments/commentRss/49.aspx</wfw:commentRss><comments>http://blogs.lightswitch.it/diego/archive/2010/08/30/Le-sub-con-parametri-di-ritorno.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.lightswitch.it/diego/services/trackbacks/49.aspx</trackback:ping><source url="http://blogs.lightswitch.it/diego/rss.aspx">Le sub con parametri di ritorno</source><description>&lt;p&gt;Nelle mie prove di sviluppo di applicazioni LightSwitch mi sono imbattuto in una caratteristica che, di primo acchito, mi ha dato fastidio: i metodi di evento con parametri di ritorno.&lt;/p&gt;
&lt;p&gt;A esempio, nel codice di valorizzazione di un campo calcolato (cioè della &lt;em&gt;Computed Property&lt;/em&gt; di una &lt;em&gt;Entity&lt;/em&gt;), ci viene proposto un metodo con un parametro 'di ritorno':&lt;/p&gt;
&lt;pre class="pregrigio"&gt;&lt;span style="COLOR: #0000ff"&gt;  Private&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;span&gt; Quantity_Validate(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;ByVal&lt;/span&gt;&lt;span&gt; results &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;EntityValidationResultsBuilder&lt;/span&gt;&lt;span&gt;)&lt;br /&gt;  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;  If&lt;/span&gt;&lt;span&gt; Quantity &amp;lt; 1 &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Then&lt;/span&gt;&lt;span&gt; _&lt;br /&gt;      results.AddPropertyError(&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;"Quantity must be greater then zero"&lt;/span&gt;&lt;span&gt;)&lt;br /&gt;  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;End&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
Il fastidio era dovuto all'idea che un valore di ritorno dovesse essere restituito da una Function. Cioè il codice chiamante sarebbe dovuto essere di assegnazione. Qualcosa come:&lt;/p&gt;
&lt;pre class="pregrigio"&gt;&lt;span&gt;   &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;Dim&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;As&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;EntityValidationResult&lt;/span&gt;&lt;span&gt; = Quantity_Validate()&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;
Intendiamoci: non è che sia un 'errore' o un bug. Basta ragionarci un pochino su per scoprire che è molto meglio così.&lt;/p&gt;
&lt;p&gt;Semplicemente, nell'oggetto che chiama questo metodo esiste un oggetto &lt;em&gt;EntityValidationResultsBuilder&lt;/em&gt; che gestisce un insieme di tipo &lt;em&gt;EntityValidationResults&lt;/em&gt; (presumibilmente, non lo so ancora con sicurezza, ma ai fini del mio discorso non è importante). Quindi a questo metodo viene passato il riferimento a quell'insieme.&lt;/p&gt;
&lt;p&gt;Infatti, bisogna tener conto del fatto che viene convalidata l'entità, non la sua singola proprietà. Quindi ci possono essere più di una causa di mancata convalida. Ecco perché ci si trova di fornte 'un insieme' di risultati.&lt;/p&gt;
&lt;p&gt;Con questo breve ragionamento, spero di 'levare il fastidio' a coloro che, eventualmente, lo stessero provando come l'ho provato io.&lt;/p&gt;&lt;img src="http://blogs.lightswitch.it/diego/aggbug/49.aspx" width="1" height="1" /&gt;</description><dc:creator>Diego Cattaruzza</dc:creator></item><item><title>Comprendere i formati dei numeri telefonici</title><link>http://blogs.lightswitch.it/diego/archive/2010/08/20/Comprendere-i-formati-dei-numeri-telefonici.aspx</link><pubDate>Fri, 20 Aug 2010 15:21:27 GMT</pubDate><guid isPermaLink="true">http://blogs.lightswitch.it/diego/archive/2010/08/20/Comprendere-i-formati-dei-numeri-telefonici.aspx</guid><wfw:comment>http://blogs.lightswitch.it/diego/comments/45.aspx</wfw:comment><wfw:commentRss>http://blogs.lightswitch.it/diego/comments/commentRss/45.aspx</wfw:commentRss><comments>http://blogs.lightswitch.it/diego/archive/2010/08/20/Comprendere-i-formati-dei-numeri-telefonici.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.lightswitch.it/diego/services/trackbacks/45.aspx</trackback:ping><source url="http://blogs.lightswitch.it/diego/rss.aspx">Comprendere i formati dei numeri telefonici</source><description>&lt;p&gt;&lt;font face=""&gt;&lt;strong&gt;Premessa&lt;/strong&gt;&lt;br /&gt;
Il mio primo post su &lt;em&gt;Visual Studio LightSwitch&lt;/em&gt; consegue alla scoperta dei formati telefonici, nella finestra delle proprietà di un campo di tipo &lt;em&gt;PhoneNumber&lt;/em&gt;, e di un piccolo problema.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;strong&gt;Introduzione&lt;/strong&gt;&lt;br /&gt;
Quando si progetta una tabella, oltre ai 'soliti' tipi di campo, &lt;em&gt;LightSwitch&lt;/em&gt; ci mette a disposizione anche i tipi 'business' &lt;em&gt;EmailAddress&lt;/em&gt;, &lt;em&gt;Money&lt;/em&gt; e &lt;em&gt;PhoneNumber&lt;/em&gt;. Sono detti 'business' perché non sono tipi specifici di dati (come intero,&lt;br /&gt;
double, boolean, datetime, string, eccetera), ma sono specifici di applicazioni.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Il senso dell'introduzione di questi nuovi elementi sta nella volontà di fornire una validazione automatica a determinati tipi comuni di dato. Non è più necessario scrivere codice per regolare l'immissione e/o validare un indirizzo email, un importo, un recapito telefonico.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;E' abbastanza intuitivo che &lt;em&gt;EmailAddress&lt;/em&gt; è un tipo &lt;em&gt;string&lt;/em&gt; che pretende, per essere ritenuto valido, la presenza della chiocciola e delle parti che permettono di riconoscere la casella. Altrettanto intuitivo è impostare (caso mai non fosse già impostato da &lt;em&gt;LightSwitch&lt;/em&gt; secondo le impostazioni internazionali del pc su cui viene installato) il formato del tipo &lt;em&gt;Money&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Per i formati dei numeri telefonici, invece, &lt;em&gt;LightSwitch&lt;/em&gt; fornisce una lista di formati accessibile dalla finestra delle proprietà di un campo di tipo &lt;em&gt;PhoneNumber&lt;/em&gt; (un link "&lt;em&gt;Phone Number Formats&lt;/em&gt;" sotto "&lt;em&gt;Appearance&lt;/em&gt;").&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Questa lista elenca i formati possibili e accettabili per il dato 'numero telefonico' in ordine di priorità: Quando viene immesso un numero telefonico, esso viene confrontato con gli elementi di questa lista e, se conforme a un&lt;br /&gt;
formato accettabile, viene mostrato secondo il primo formato della stessa classe.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Purtroppo, però, &lt;em&gt;LightSwitch&lt;/em&gt; (sto parlando della versione &lt;em&gt;Beta1&lt;/em&gt;) fornisce solo i formati statunitensi. A esempio:&lt;/font&gt;&lt;/p&gt;
&lt;ol class="preazzurro"&gt;
    &lt;li&gt;C (AAA) NNN-NNNN&lt;/li&gt;
    &lt;li&gt;C (AAA) NNNNNNN&lt;/li&gt;
    &lt;li&gt;CAAANNNNNNN&lt;/li&gt;
    &lt;li&gt;(AAA) NNN-NNNN&lt;/li&gt;
    &lt;li&gt;(AAA) NNNNNNN&lt;/li&gt;
    &lt;li&gt;AAANNNNNNN&lt;/li&gt;
    &lt;li&gt;NNN-NNNN&lt;/li&gt;
    &lt;li&gt;NNNNNNN&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;font face=""&gt;Però è possibile modificare e aggiungere i propri formati. &lt;/font&gt;&lt;font face=""&gt;Il che era proprio quanto mi accingevo a fare, mentre preparavo (si fa per dire) la prima tabella del mio primo progetto &lt;em&gt;LightSwitch&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;strong&gt;Il problema&lt;/strong&gt;&lt;br /&gt;
Anche se si comprende rapidamente (grazie all'Help) che C sta per Country, A per Area e N per cifra, non è altrettanto immediato comprendere il meccanismo, e la guida non è (al momento) sufficientemente chiara. Di conseguenza, i miei&lt;br /&gt;
tentativi di impostare formati accettabili in Italia (e in Europa) fallivano uno dopo l'altro.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Finché, tenta e ritenta, ho capito il meccanismo, che ho già formulato sopra, ma che ripeto, per poterlo spiegare meglio:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Quando viene immesso un numero telefonico, esso viene confrontato con gli elementi di questa lista e, se conforme a un formato accettabile, viene mostrato secondo il primo formato della stessa classe.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Poiché sembra un oscuro gioco di parole, lo illustrerò con un esempio:&lt;br /&gt;
immaginiamo di scrivere&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;39045558419&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Cioè un numero di undici cifre. Esso viene confrontato con il formato numero 1 (della lista mostrata qui sopra) che contempla proprio undici elementi C o A o N) e viene ritenuto NON valido, poi con il formato numero 2, ancora NON valido, infine con il formato numero 3, in base al quale viene reso valido, quindi verrà mostrato secondo il primo formato di questi tre (che formano una classe).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;3 (904) 555-8419&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Supponiamo adesso di immettere un numero con le parentesi:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;3(904)5558419&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Esso viene validato dal formato numero 2 e visualizzato, ancora, come indicato nel formato numero 1.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;Infatti, i formati 1, 2 e 3 sono della stessa classe, sono cioè costituiti da dieci elementi C o A o N. Si differenziano per i caratteri accessori, cioè parentesi, spazi e trattini. Quindi ciascuno di essi può validare una immissione di dati che collimi col numero degli elementi e/o con il numero e la posizione dei caratteri accessori. In base all'ordine di priorità, per la visualizzazione viene usato il primo formato tra quelli della stessa classe, cioè il formato numero 1.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face=""&gt;&lt;strong&gt;I formati europei&lt;/strong&gt;&lt;br /&gt;
Capito il meccanismo, non mi è restato altro da fare che impostare con pazienza i formati (per me) accettabili e possibili:&lt;/font&gt;&lt;/p&gt;
&lt;font face=""&gt;
&lt;ol class="preazzurro"&gt;
    &lt;li&gt;AAA NNNNNNN&lt;/li&gt;
    &lt;li&gt;AAANNNNNNN&lt;/li&gt;
    &lt;li&gt;AAA NNNNNN&lt;/li&gt;
    &lt;li&gt;AAANNNNNN&lt;/li&gt;
    &lt;li&gt;+CC AAA NNNNNNN&lt;/li&gt;
    &lt;li&gt;+CCAAANNNNNNN&lt;/li&gt;
    &lt;li&gt;+CC AAA NNNNNN&lt;/li&gt;
    &lt;li&gt;+CCAAANNNNNN&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Conclusione&lt;/strong&gt;&lt;br /&gt;
Spero che questo mio primo post sia utile nella comprensione di una caratteristica facilitazione tra le tante offerte da LightSwitch: l'impostazione della lista di formati accettabili per l'immissione (e la visualizzazione) di numeri telefonici.&lt;br /&gt;
&lt;/p&gt;
&lt;/font&gt; &lt;img src="http://blogs.lightswitch.it/diego/aggbug/45.aspx" width="1" height="1" /&gt;</description><dc:creator>Diego Cattaruzza</dc:creator></item></channel></rss>
