<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.devleap.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Il blog di Lorenzo Braidi </title><subtitle type="html">Database e dintorni...&lt;br /&gt;&lt;a href="http:\\www.braidi.com\default.asp"&gt;Home page&lt;/a&gt;</subtitle><id>http://blogs.devleap.com/lorenzo/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.devleap.com/lorenzo/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2004-12-29T16.20.00Z</updated><entry><title>Planeta Informatica &amp; Sistemi</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2006/03/17/6973.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2006/03/17/6973.aspx</id><published>2006-03-17T11.46.00Z</published><updated>2006-03-17T11.46.00Z</updated><content type="html">Da qualche tempo mi sono &lt;I&gt;imbarcato&lt;/I&gt; in una nuova avventgura lavorativa presso &lt;B&gt;Planeta Informatica &amp;amp; Sistemi.&lt;/B&gt;&lt;BR&gt;Planeta Informatica &amp;amp; Sistemi Srl nasce nel 2005 con la volontà di proporsi come partner prettamente tecnologico per fornire servizi e consulenza di eccellente qualità. La pluriennale esperienza dei tecnici che compongono il nostro organico garantiscono ai nostri clienti successi nei seguenti ambiti: &lt;A href="http://www.planetasrl.it/giada.jsp"&gt;&lt;B&gt;Gestione documentale&lt;/B&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.planetasrl.it/giadaASP.jsp"&gt;&lt;B&gt;Conservazione sostitutiva&lt;/B&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.planetasrl.it/consulenzaTecnologica.jsp"&gt;&lt;B&gt;Consulenza tecnologica&lt;/B&gt;&lt;/A&gt;&lt;BR&gt;&lt;A href="http://www.planetasrl.it/consulenzaBancaria.jsp"&gt;&lt;B&gt;Consulenza bancaria&lt;/B&gt;&lt;/A&gt; &lt;/B&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=6973" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author></entry><entry><title>Nuovo articolo su DEV</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/07/19/5391.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/07/19/5391.aspx</id><published>2005-07-19T14.27.00Z</published><updated>2005-07-19T14.27.00Z</updated><content type="html">&lt;IMG src="http://www.braidi.com/immagini/dev131.jpg" align=left&gt; 
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Anche questo mese prosegue la collaborazione con la rivista DEV: Questa volta si parla della gestione della visibilità e della profilazione utilizzando le caratteristiche di SQL Server.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Buona lettura&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=5391" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author></entry><entry><title>SPAM su questo blog...</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/06/24/4624.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/06/24/4624.aspx</id><published>2005-06-24T14.12.00Z</published><updated>2005-06-24T14.12.00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;Negli ultimi giorni e nonostante le contromisure predisposte da chi ci ospita in queste pagine, si sono intensificati i commenti/spam che vedo comparire sul mio blog.&lt;BR&gt;Per adesso mi limito a cancellarli pi&amp;#249; in fretta possibile, ma penso che ben presto sar&amp;#242; costretto ad inibire la possibilit&amp;#224; di&amp;nbsp; lasciare commenti.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Peccato, era interessante avere qualche feedback dai lettori!&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=4624" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /></entry><entry><title>Speciale su SQL Server</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/06/23/4258.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/06/23/4258.aspx</id><published>2005-06-23T14.57.00Z</published><updated>2005-06-23T14.57.00Z</updated><content type="html">&lt;IMG src="http://www.braidi.com/immagini/dev130.jpg" align=left&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Il numero 130 di DEV in edicola nel mese di Giugno &amp;#232; in gran parte dedicato a SQL Server.&lt;BR&gt;Nell'ambito di questo speciale, &amp;#232; presente un mio articolo che parla di alcuni aspetti relativi alla gestione della sicurezza del sistema che ospita il database server di Microsoft.&lt;BR&gt;L'articolo &amp;#232; il primo di una mini-serie che ne vedr&amp;#224; altri due e che si pone l'obiettivo di analizzare a tuttocampo la questione della sicurezza di SQL Server.&lt;BR&gt;Buona lettura&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=4258" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /></entry><entry><title>Posta elettronica certificata</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/06/13/3997.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/06/13/3997.aspx</id><published>2005-06-13T07.54.00Z</published><updated>2005-06-13T07.54.00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;Da qualche tempo &amp;#232; stata pubblicata - da parte del ministero competente -&amp;nbsp;la normativa che regola gli scambi di messaggistica elettronica con valenza legale: la posta elettronica certificata.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Per chi vuole saperne di pi&amp;#249;, e non se la sente di leggersi il &lt;EM&gt;burocratese &lt;/EM&gt;del DPR, &lt;A href="http://www.braidi.com/default.asp"&gt;leggete qui&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Buona lettura&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=3997" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /></entry><entry><title>Disegnare un database</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/03/30/3086.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/03/30/3086.aspx</id><published>2005-03-30T14.26.00Z</published><updated>2005-03-30T14.26.00Z</updated><content type="html">&lt;IMG src="http://www.braidi.com/immagini/dev127.jpg" align=left&gt; 
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Il processo di progettazione di un database prevede la produzione di diversi diagrammi che rappresentano ciascuna delle sue fasi. I diagrammi sono di importanza considerevole poich&amp;#233; sono l'unico strumento possibile per condividere le linee intraprese con altre persone, magari non informatici.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;L'ottava parte del corso che st&amp;#242; curando su DEV parla di queste problematiche: buona lettura.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=3086" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /></entry><entry><title>Il risolutore di Excel</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/03/09/2911.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/03/09/2911.aspx</id><published>2005-03-09T08.17.00Z</published><updated>2005-03-09T08.17.00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;Microsoft Excel &amp;#232; dotato di un componente chiamato Risolutore (in inglese Solver) che &amp;#232; in grado di trovare soluzioni a sistemi di funzioni di una certa complessit&amp;#224;.&lt;BR&gt;Il risolutore pu&amp;#242; essere utilizzato sia in maniera interattiva, che da codice, magari all'interno di una macro. Se lo si utilizza da codice &amp;#232; possibile fare in modo che esso non emetta nessun Message-Box (cosa che invece fa di default). La cosa che nella documentazione non &amp;#232; spiegata in alcun modo &amp;#232; come sia possibile interpretare il risultato dell'elaborazione se si &amp;#232; scelto di nascondere la messaggistica... La documentazione ufficiale non ne fa nessun accenno.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Dopo un po' di ricerche ho trovato su un NG la soluzione ai miei interrogativi. Ecco l'elenco dei codici di ritorno e le relative spiegazioni:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;0. Solver found a solution. All constraints and optimality conditions are satisfied.&lt;BR&gt;1. Solver has converged to the current solution. All constraints are satisfied.&lt;BR&gt;2. Solver cannot improve the current solution. All constraints are satisfied.&lt;BR&gt;3. Stop chosen when the maximum iteration limit was reached.&lt;BR&gt;4. The Set Cell values do not converge.&lt;BR&gt;5. Solver could not find a feasible solution.&lt;BR&gt;6. Solver stopped at user's request.&lt;BR&gt;7. The conditions for Assume Linear Model are not satisfied.&lt;BR&gt;8. The problem is too large for Solver to handle.&lt;BR&gt;9. Solver encountered an error value in a target or constraint cell.&lt;BR&gt;10. Stop chosen when maximum time limit was reached.&lt;BR&gt;11. There is not enough memory available to solve the problem.&lt;BR&gt;12. Another Excel instance is using SOLVER.DLL. Try again later.&lt;BR&gt;13. Error in model. Please verify that all cells and constraints are valid.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2911" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Programming" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Programming/default.aspx" /></entry><entry><title>Consigli pratici ed errori da evitare...</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/02/25/2795.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/02/25/2795.aspx</id><published>2005-02-25T07.51.00Z</published><updated>2005-02-25T07.51.00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;IMG height=104 src="http://www.braidi.com/Immagini/dev126.jpg" width=70 align=left border=0&gt;Quali sono gli errori pi&amp;#249; comuni che si commettono in fase di progettazione di una base dati?&lt;BR&gt;A che punto ci si deve fermare con il processo di normalizzazione dei dati?&lt;BR&gt;Cosa sono i Dead-Lock e come &amp;#232; possibile evitarli?&lt;BR&gt;Seguendo quali criteri si deve procedere nella scelta del tipo da assgnare alle colonne di una tabella?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;La risposta a questi quesiti e a tanti altri la trovate nella &lt;/FONT&gt;&lt;A href="http://www.braidi.com/Articolinext.asp"&gt;&lt;FONT size=2&gt;sesta parte &lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;del corso di &lt;/FONT&gt;&lt;A href="http://www.braidi.com/Libri.asp"&gt;&lt;FONT size=2&gt;Database design&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; in edicola questo mese con DEV n. 126.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;&lt;A href="http://www.braidi.com/Tips.asp"&gt;Buona lettura&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2795" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /></entry><entry><title>Calcolo del giorno di Pasqua (2)</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/02/08/2635.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/02/08/2635.aspx</id><published>2005-02-08T08.34.00Z</published><updated>2005-02-08T08.34.00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Arial size=2&gt;Un lettore di questo blog che non si &amp;#232; firmato mi ha segnalato un comportamento anomalo nella &lt;/FONT&gt;&lt;A href="http://www.braidi.com/Pasqua.asp"&gt;&lt;FONT face=Arial size=2&gt;stored procedure&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt; che ho pubblicato qualche tempo fa per calcolare il giorno di Pasqua.&lt;BR&gt;L'anomalia segnalata &amp;#232; docuta ad una svista nel codice che compromette la correttezza del calcolo per gli anni precedenti al 2000. In pratica era presente un 16 anzich&amp;#233; un 19...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial size=2&gt;Ecco la stored procedure riveduta e corretta:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT face="Courier New" size=1&gt;CREATE PROCEDURE GetPasqua (&lt;BR&gt;@Anno INT,&lt;BR&gt;@Pasqua DATETIME OUTPUT)&lt;BR&gt;AS&lt;BR&gt;DECLARE @T1 INT&lt;BR&gt;DECLARE @T2 INT&lt;BR&gt;DECLARE @T3 INT&lt;BR&gt;DECLARE @T4 INT&lt;BR&gt;DECLARE @T5 INT&lt;BR&gt;DECLARE @Var1 INT&lt;BR&gt;DECLARE @Var2 INT&lt;BR&gt;DECLARE @NumGG INT&lt;BR&gt;&lt;BR&gt;SET @T1 = 0&lt;BR&gt;SET @T2 = 0&lt;BR&gt;SET @T3 = 0&lt;BR&gt;SET @T4 = 0&lt;BR&gt;SET @T5 = 0&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;IF @Anno &amp;lt; 1900 OR @Anno &amp;gt; 2199&lt;BR&gt;BEGIN&lt;BR&gt;RAISERROR ('La procedura gestisce solo le date comprese tra il 1500 ed il 2199', 16, 1)&lt;BR&gt;END&amp;nbsp;&lt;BR&gt;&lt;BR&gt;IF @Anno &amp;gt;= 1900 AND @Anno &amp;lt;= 2099&lt;BR&gt;BEGIN&lt;BR&gt;SET @Var1 = 24&lt;BR&gt;SET @Var2 = 5&lt;BR&gt;END&lt;BR&gt;IF @Anno &amp;gt;= 2100 AND @Anno &amp;lt;= 2199&lt;BR&gt;BEGIN&lt;BR&gt;SET @Var1 = 24&lt;BR&gt;SET @Var2 = 6&lt;BR&gt;END&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;SET @T1 = @Anno % 19&lt;BR&gt;SET @T2 = @Anno % 4&lt;BR&gt;SET @T3 = @Anno % 7&lt;BR&gt;&lt;STRONG&gt;SET @T4 = ((19 * @T1) + @Var1) % 30&lt;BR&gt;&lt;/STRONG&gt;SET @T5 = ((2 * @T2) + (4 * @T3) + (6 * @T4) + @Var2) % 7&lt;BR&gt;&lt;BR&gt;SET @NumGG = 22 + @T4 + @T5&lt;BR&gt;&lt;BR&gt;IF @NumGG &amp;lt;= 31&lt;BR&gt;BEGIN&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '03' + RIGHT('0' + CAST(@NumGG AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END ELSE&lt;BR&gt;BEGIN&lt;BR&gt;SET @NumGG = @NumGG - 31&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '04' + RIGHT('0' + CAST(@NumGG AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END&lt;BR&gt;&lt;BR&gt;RETURN(0)&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;La cosa interessante &amp;#232; che quel lettore mi ha suggerito un modo alternativo per ottenere il medesimo risultato allegando la stored procedure che riporto di seguito:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=1&gt;CREATE PROCEDURE GetPasqua (&lt;BR&gt;@Anno INT,&lt;BR&gt;@Pasqua DATETIME OUTPUT)&lt;BR&gt;AS&lt;BR&gt;DECLARE @Sec INT&lt;BR&gt;DECLARE @H INT&lt;BR&gt;DECLARE @I INT&lt;BR&gt;DECLARE @J INT&lt;BR&gt;DECLARE @L INT&lt;BR&gt;DECLARE @Mese INT&lt;BR&gt;DECLARE @Giorno INT&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=1&gt;SET @Sec = @anno % 19&lt;BR&gt;SET @H = (&lt;/FONT&gt;&lt;A href="mailto:24+19*@Sec"&gt;&lt;FONT face="Courier New" color=#0000ff size=1&gt;24+19*@Sec&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" color=#0000ff size=1&gt;) % 30&lt;BR&gt;SET @I = @H - CEILING(@H/28)&lt;BR&gt;set @J = (@ANNO + ceiling(@ANNO/4) + @I -13) % 7&lt;BR&gt;SET @L = @i - @j&lt;BR&gt;SET @Mese = 3 + ceiling((@l+40)/44)&lt;BR&gt;SET @Giorno = @L + 28 -31*CEILING(@Mese/4)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=1&gt;IF @Mese &amp;gt; 3&lt;BR&gt;BEGIN&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '04' + RIGHT('0' + CAST(@Giorno AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END ELSE&lt;BR&gt;BEGIN&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '03' + RIGHT('0' + CAST(@Giorno AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END&lt;BR&gt;RETURN(0)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2635" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /><category term="Programming" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Programming/default.aspx" /></entry><entry><title>Precedente installazione in sospeso</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/02/01/2571.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/02/01/2571.aspx</id><published>2005-02-01T09.45.00Z</published><updated>2005-02-01T09.45.00Z</updated><content type="html">Per chi, come me, effettua parecchie installazioni e disinstallazioni sul proprio computer, non è raro che si arrivi ad un punto in cui il sistema non funziona più correttamente.&lt;br&gt;
Mi è capitato parecchie volte di ricevere un messaggio che più o meno diceva "Una precedente installazione ha lasciato operazioni su file in sospeso. Riavviare il computer prima di effetuare l'installazione".&lt;br&gt;
Inutile dire che - anche riavviando il pc - il messaggio si &lt;b&gt;ripresenta uguale!&lt;/b&gt;&lt;br&gt;
Il problema (come accade spesso) è un problema di registry: una chiave che serve per rinominare o rimuovere i file in uso è rimasta &lt;i&gt;sporca&lt;/i&gt;. Si tratta della chiave&lt;br&gt; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperation.&lt;br&gt;
Per aggirare il problema è sufficente eliminare o rinominare questa chiave.&lt;br&gt;&lt;br&gt;
&lt;a href="http://www.braidi.com/Pasqua.asp"&gt;Lorenzo&lt;/a&gt;
&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2571" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /></entry><entry><title>Le business rule nel database</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/01/27/2544.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/01/27/2544.aspx</id><published>2005-01-27T13.06.00Z</published><updated>2005-01-27T13.06.00Z</updated><content type="html">&lt;img src="http://online.infomedia.it/immagini/riviste/covers/dev/dev125sm.jpg" align="left"&gt;Prosegue anche questo mese la rassegna dedicata alle tecniche di progettazione delle basi dati che stò curando per la rivista &lt;a href="http://www.infomedia.it"&gt;DEV&lt;/a&gt;.
In questa puntata - la sesta della serie che ne comprenderà alla fine dieci - si parla delle business rule. Fino a che livello è possibile specificare le logiche delle applicazioni direttamente a livello di database? Che vantaggi si ottengono con l'introduzione delle BR nel DB?&lt;br&gt;
Queste sono tutte domande alle quali l'articolo in edicola questo mese fornisce una risposta...&lt;br&gt;
Buona lettura!&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2544" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /></entry><entry><title>Il giorno di Pasqua</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/01/04/2272.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/01/04/2272.aspx</id><published>2005-01-04T09.45.00Z</published><updated>2005-01-04T09.45.00Z</updated><content type="html">&lt;P&gt;Ci sono almeno due algoritmi con cui - chi prima, chi poi - tutti ci siamo trovati a doverci confrontare:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Il calcolo del codice fiscale, 
&lt;LI&gt;il calcolo del Luned&amp;#236; di Pasqua &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Sul primo si &amp;#232; scritto molto, ed io stesso ho contribuito ad aumentare le pagine ad esso dedicato pubblicando su &lt;A href="http://online.infomedia.it/riviste/vbj/vbj.htm"&gt;Visual Basic &amp;amp; .NET Journal&lt;/A&gt; l'articolo "&lt;I&gt;&lt;A href="http://www.braidi.com/Articoli2004.asp"&gt;Calcolo del codice fiscale in VB6&lt;/A&gt;&lt;/I&gt;" nei primi mesi del 2004.&lt;BR&gt;Sulla&amp;nbsp; Pasqua, invece, si trovano molti meno esempi ed articoli, tant&amp;#232; che spesso si tende ad inserire nei propri programmi un elenco dei giorni di Pasqua dei successivi 20 anni senza implmentare alcun algoritmo di calcolo.&lt;/P&gt;
&lt;P&gt;Provo a colmare questa lacuna, anche se - come si vedr&amp;#224; - l'algoritmo risulta essere parecchio empirico e richiede "aggiustamenti" per poter funzionare correttamente.&lt;BR&gt;In generale diciamo che&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Il giorno di Pasqua (e di conseguenza il Luned&amp;#236; di Pasqua) cade nella prima Domenica che succede al plenilunio immediatamente successivo all'equinozio di primavera. 
&lt;LI&gt;per ragioni &lt;I&gt;astronomiche &lt;/I&gt;la data pu&amp;#242; variare tra il 22 di Marzo ed il 25 di Aprile &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Il calcolo si basa su tre variabili, due delle quali sono il risultato di una tabella compilata a priori e statica che ha lo scopo di "aggiustare" il calcolo, la terza &amp;#232; l'anno del quale si vuole conoscere la data del giorno di Pasqua.&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="25%" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;1583-1699&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;22&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;2&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;1700-1799&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;23&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;3&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;1800-1899&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;23&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;4&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;1900-2099&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;24&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;2100-2199&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;24&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;6&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;2200-2299&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;25&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;0&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;2300-2399&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;26&lt;/TD&gt;
&lt;TD align=right width="25%"&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Possedendo i dati di questa tabella, &amp;#232; sufficiente&amp;nbsp; eseguire cinque divisioni e considerare i loro resti per ottenere il risultato.desiderato. Come si vede dall'esempio che riporto di seguito, il risultato &amp;#232; un numero che pu&amp;#242; essere superiore o inferiore a 31. Se &amp;#232; inferiore a 31, allora si considera quel numero come il giorno del mese di Marzo, in caso contrario, si sottre 31 e si considera come mese Aprile.&lt;/P&gt;
&lt;P&gt;Riporto qui di seguito una stored procedure per SQL server che realizza tale algoritmo.&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#e1e1e1 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="100%"&gt;&lt;FONT face="Courier New" size=1&gt;CREATE PROCEDURE GetPasqua (&lt;BR&gt;@Anno INT,&lt;BR&gt;@Pasqua DATETIME OUTPUT)&lt;BR&gt;AS&lt;BR&gt;DECLARE @T1 INT&lt;BR&gt;DECLARE @T2 INT&lt;BR&gt;DECLARE @T3 INT&lt;BR&gt;DECLARE @T4 INT&lt;BR&gt;DECLARE @T5 INT&lt;BR&gt;DECLARE @Var1 INT&lt;BR&gt;DECLARE @Var2 INT&lt;BR&gt;DECLARE @NumGG INT&lt;BR&gt;&lt;BR&gt;SET @T1 = 0&lt;BR&gt;SET @T2 = 0&lt;BR&gt;SET @T3 = 0&lt;BR&gt;SET @T4 = 0&lt;BR&gt;SET @T5 = 0&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;IF @Anno &amp;lt; 1900 OR @Anno &amp;gt; 2199&lt;BR&gt;BEGIN&lt;BR&gt;RAISERROR ('La procedura gestisce solo le date comprese tra il 1500 ed il 2199', 16, 1)&lt;BR&gt;END&amp;nbsp;&lt;BR&gt;&lt;BR&gt;IF @Anno &amp;gt;= 1900 AND @Anno &amp;lt;= 2099&lt;BR&gt;BEGIN&lt;BR&gt;SET @Var1 = 24&lt;BR&gt;SET @Var2 = 5&lt;BR&gt;END&lt;BR&gt;IF @Anno &amp;gt;= 2100 AND @Anno &amp;lt;= 2199&lt;BR&gt;BEGIN&lt;BR&gt;SET @Var1 = 24&lt;BR&gt;SET @Var2 = 6&lt;BR&gt;END&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;SET @T1 = @Anno % 19&lt;BR&gt;SET @T2 = @Anno % 4&lt;BR&gt;SET @T3 = @Anno % 7&lt;BR&gt;SET @T4 = ((19 * @T1) + @Var1) % 30&lt;BR&gt;SET @T5 = ((2 * @T2) + (4 * @T3) + (6 * @T4) + @Var2) % 7&lt;BR&gt;&lt;BR&gt;SET @NumGG = 22 + @T4 + @T5&lt;BR&gt;&lt;BR&gt;IF @NumGG &amp;lt;= 31&lt;BR&gt;BEGIN&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '03' + RIGHT('0' + CAST(@NumGG AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END ELSE&lt;BR&gt;BEGIN&lt;BR&gt;SET @NumGG = @NumGG - 31&lt;BR&gt;SET @Pasqua = CAST(CAST(@Anno AS VARCHAR(4)) + '04' + RIGHT('0' + CAST(@NumGG AS VARCHAR(2)), 2) AS DATETIME)&lt;BR&gt;END&lt;BR&gt;&lt;BR&gt;RETURN(0)&lt;BR&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Lascio a voi l'esercizio di realizzare la stessa procedura con altri linguaggi di programmazione...Buon divertimento!&lt;/P&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2272" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /><category term="Programming" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Programming/default.aspx" /></entry><entry><title>Quick Start</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2005/01/03/2265.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2005/01/03/2265.aspx</id><published>2005-01-03T16.09.00Z</published><updated>2005-01-03T16.09.00Z</updated><content type="html">Volete avvicinarvi ad ASP.NET e non sapete da dove cominciare?&lt;br&gt;
Conoscete ADO e volete passare ad ADO.NET?&lt;br&gt;
Volete farvi un'idea sui Web Services?&lt;br&gt;&lt;br&gt;
Insomma, se siete ai primi passi e non volete perdere tempo, non potete perdervi  le guide &lt;b&gt;How Do I?&lt;/b&gt;&lt;br&gt;
Le trovate a questo indirizzo &lt;a href="http://samples.gotdotnet.com/quickstart/howto/"&gt;samples.gotdotnet.com/quickstart/howto&lt;/a&gt;&lt;br&gt;&lt;br&gt;Buona lettura!&lt;br&gt;&lt;br&gt;
&lt;a href="http:\\www.braidi.com\recensioni.asp"&gt;Lorenzo&lt;/a&gt;&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2265" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /></entry><entry><title>Integrità referenziale con SQL Server</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2004/12/30/2236.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2004/12/30/2236.aspx</id><published>2004-12-30T14.48.00Z</published><updated>2004-12-30T14.48.00Z</updated><content type="html">&lt;p&gt;Mi &amp;#232; successo di incappare in un errore riportato da SQL Server che - a mio
modesto parere - se non &amp;#232; un buco, &amp;#232; quantomeno poco chiaro e rischia di
trarre in inganno il DBA.&lt;br&gt;
L'errore si presenta nelle situazioni in cui si definiscono diverse relazioni di
integrit&amp;#224; referenziale residenti sulla stessa tabella ed aventi come
"padre" una seconda tabella.&lt;br&gt;
I books on line parlano di una situazione analoga a quella che vado a descrivere
solo nel caso di relazioni autoreferenzianti. In quel caso &amp;#232; vero che la
situazione pu&amp;#242; prendere strade che portano ad un loop, ma in questo caso no!&lt;/p&gt;
&lt;p&gt;Ma vediamo di capire bene di cosa st&amp;#242; parlando con un esempio... &lt;/p&gt;
&lt;p&gt;Supponiamo di avere due tabelle (Ordini ed Utenti) aventi la struttura
riportata di seguito:&lt;/p&gt;
&lt;table border="0" width="100%" bgcolor="#D7D7D7" cellspacing="0" cellpadding="0"&gt;
  &lt;tr&gt;
    &lt;td width="100%"&gt;&lt;font size="1" face="Courier New"&gt;use [Test_DB]&lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Ordini]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)&lt;br&gt;
      drop table [dbo].[Ordini]&lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Utenti]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)&lt;br&gt;
      drop table [dbo].[Utenti]&lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      &lt;br&gt;
      CREATE TABLE [dbo].[Ordini] (&lt;br&gt;
	[OrdineID] [int] NOT NULL ,&lt;br&gt;
	[Data] [datetime] NULL ,&lt;br&gt;
	[UtenteInserimento] [int] NULL ,&lt;br&gt;
	[UtenteAggiornamento] [int] NULL &lt;br&gt;
      ) ON [PRIMARY]&lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      CREATE TABLE [dbo].[Utenti] (&lt;br&gt;
	[UtenteID] [int] NOT NULL ,&lt;br&gt;
	[Cognome] [varchar] (50) COLLATE Latin1_General_CI_AS NULL ,&lt;br&gt;
	[Nome] [varchar] (50) COLLATE Latin1_General_CI_AS NULL &lt;br&gt;
      ) ON [PRIMARY]&lt;br&gt;
      GO&lt;br&gt;
      &lt;/font&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Una volta definite le tabelle, passiamo ad inserire le
loro chiavi primarie.&lt;/font&gt;&lt;/p&gt;
&lt;table border="0" width="100%" bgcolor="#D7D7D7" cellspacing="0" cellpadding="0"&gt;
  &lt;tr&gt;
    &lt;td width="100%"&gt;&lt;font size="1" face="Courier New"&gt;ALTER TABLE [dbo].[Ordini] WITH NOCHECK ADD &lt;br&gt;
	CONSTRAINT [PK_Ordini] PRIMARY KEY  CLUSTERED &lt;br&gt;
	(&lt;br&gt;
		[OrdineID]&lt;br&gt;
	)  ON [PRIMARY] &lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      ALTER TABLE [dbo].[Utenti] WITH NOCHECK ADD &lt;br&gt;
	CONSTRAINT [PK_Utenti] PRIMARY KEY  CLUSTERED &lt;br&gt;
	(&lt;br&gt;
		[UtenteID]&lt;br&gt;
	)  ON [PRIMARY] &lt;br&gt;
      GO&lt;br&gt;
      &lt;/font&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;font face="Arial"&gt;A questo punto, diciamo che vogliamo porre qualche
vincolo  allo scopo di garantire l'integrit&amp;#224; dei dati presenti nelle due
tabelle. La cosa pi&amp;#249; semplice e lineare sarebbe quella di inserire due foreign
key per i campi UtenteInserimento ed UtenteAggiornamento vincolandoli al campo
UtenteID della relativa tabella.&lt;br&gt;
Se per&amp;#242; vogliamo dare  ai nostri utenti la possibilit&amp;#224; di modificare il
codice identificativo degli utenti anche dopo che essi hanno inserito e/o
aggiornato degli ordini, la definizione delle relazioni dovr&amp;#224; essere come
riportato di seguito:&lt;/font&gt;&lt;/p&gt;
&lt;table border="0" width="100%" bgcolor="#D7D7D7" cellspacing="0" cellpadding="0"&gt;
  &lt;tr&gt;
    &lt;td width="100%"&gt;&lt;font size="1" face="Courier New"&gt;ALTER TABLE [dbo].[Ordini] ADD &lt;br&gt;
	CONSTRAINT [FK_Ordini_Utenti_Inserimento] FOREIGN KEY &lt;br&gt;
	(&lt;br&gt;
		[UtenteInserimento]&lt;br&gt;
	) REFERENCES [dbo].[Utenti] (&lt;br&gt;
		[UtenteID]&lt;br&gt;
	) ON DELETE CASCADE  ON UPDATE CASCADE &lt;br&gt;
      GO&lt;br&gt;
      &lt;br&gt;
      ALTER TABLE [dbo].[Ordini] ADD &lt;br&gt;
	CONSTRAINT [FK_Ordini_Utenti_Aggiornamento] FOREIGN KEY &lt;br&gt;
	(&lt;br&gt;
		[UtenteAggiornamento]&lt;br&gt;
	) REFERENCES [dbo].[Utenti] (&lt;br&gt;
		[UtenteID]&lt;br&gt;
	) ON DELETE CASCADE  ON UPDATE CASCADE &lt;br&gt;
      GO&lt;br&gt;
      &lt;/font&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Specificando le clausole ON DELETE e ON UPDATE, infatti,
si ottiene la propagazione automatica su tutti i record referenziati delle
eventuali modifiche e cancellazioni svolte sulla tabella  Utenti.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Se, per&amp;#242;, si esegue quest'ultima parte dello script si
ottiene il seguente errore:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Server: messaggio 1785, livello 16, stato 1, riga 1&lt;br&gt;
L'impostazione del vincolo FOREIGN KEY 'FK_Ordini_Utenti_Aggiornamento' nella tabella 'Ordini' potrebbe generare cicli o percorsi a catena multipla. Specificare ON DELETE NO ACTION oppure ON UPDATE NO ACTION oppure modificare altri vincoli FOREIGN KEY.&lt;br&gt;
Server: messaggio 1750, livello 16, stato 1, riga 1&lt;br&gt;
Impossibile creare il vincolo. Vedere gli errori precedenti.&lt;br&gt;
&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Analizzando la struttura (molto semplice, per la verit&amp;#224;) delle due tabelle,
&amp;#232; evidente che non c'&amp;#232; alcun rischio di ciclo o di percorso multiplo come
invece ci segnala l'RDBMS di Microsoft.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Soluzione&lt;/b&gt;&lt;br&gt;
Non esiste una soluzione "pulita": SQL Server 2000 non supporta questo
tipo di integrit&amp;#224; referenziale "multipla". Faccio notare, per&amp;#242;, che
RDBMS come Oracle o addirittura Access la supportano tranquillamente...&lt;br&gt;
L'unica scappatoia che si presenta &amp;#232; quella di implmentare l'integrit&amp;#224;
referenziale non con le relazioni bens&amp;#236; con i trigger.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.braidi.com/default.asp"&gt;Lorenzo Braidi&lt;/a&gt;&lt;br&gt;
...acquista "&lt;a href="http://www.braidi.com/libri.asp"&gt;Database Design&lt;/a&gt;",
il mio primo libro!&lt;/p&gt;

&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2236" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /><category term="Curiosità" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Curiosit_E000_/default.aspx" /></entry><entry><title>In edicola questo mese...</title><link rel="alternate" type="text/html" href="http://blogs.devleap.com/lorenzo/archive/2004/12/29/2228.aspx" /><id>http://blogs.devleap.com/lorenzo/archive/2004/12/29/2228.aspx</id><published>2004-12-29T15.20.00Z</published><updated>2004-12-29T15.20.00Z</updated><content type="html">&lt;img src="http:\\www.braidi.com\immagini\dev124.jpg" align="left"&gt;Prosegue anche questo mese il corso di Database Design che stò tenendo su DEV nella rubrica "Programmo subito". Questa lezione è interamente dedicata alle viste: cosa sono, a cosa servono, come si definiscono, ecc.
&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;img src="http:\\www.braidi.com\immagini\vbj60.jpg" align="right"&gt;
Nei mesi scorsi (a Marzo) è uscito su Visual Basic Journal un mio articolo che illustrava l'algoritmo  che si utilizza per calcolare e validare un codice fiscale. Allegato a quell'articolo c'era anche un piccolo &lt;i&gt;progettino&lt;/i&gt; VB6 che implementava l'algoritmo oggetto dell'articolo. Un lettore si è accorto di un caso particolare nel quale il software suddetto non funzionava correttamente. Nel numero di VBJ di questo mese è pubblicata la correzione di tale baco. Comunque, il software che si scarica dal sito FTP di Infomedia è stato immediatamente corretto...&lt;img src="http://blogs.devleap.com/aggbug.aspx?PostID=2228" width="1" height="1"&gt;</content><author><name>lorenzo</name><uri>http://blogs.devleap.com/members/lorenzo.aspx</uri></author><category term="Database" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Database/default.aspx" /><category term="Programming" scheme="http://blogs.devleap.com/lorenzo/archive/tags/Programming/default.aspx" /></entry></feed>