giovedì 4 dicembre 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Novembre 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine novembre 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione umanitaria a voi più gradita e fate a questa il vostro pagamento.

Powerered with Window Live Write

domenica 16 novembre 2008

La responsabilità dei medici

In questi giorni è data come certa una modifica alla legge che depenalizza i medici dalle responsabilità penali derivanti dai casi di morte dei pazienti.

Sotto il profilo penale è ovvio che non posso che concordare, il dolo va dimostrato, non credo che ci siano medici che dolosamente causano la morte dei loro pazienti.

Però .. oltre il dolo ci sono anche altri fattori di cui tenere conto, fattori come  imperizia, inidoneità, stanchezza o altro che direttamente o indirettamente contribuisce a far diventare interventi anche banali in casi di malasanità.

La colpa in questi casi a chi va imputata?, "al sistema sanitario" dicono i medici.

Invece io sono convinto che come per qualsiasi altra cosa la responsabilità è personale, se andiamo a ben vedere sono convinto ci sono medici che in tutta la loro carriera non hanno mai avuto incidenti e altri invece che ne hanno avuti più di uno.

Magari saranno anche dei luminari ma .. di fronte al rischio di essere operato da un luminare che sbaglia o da un'altro che luminare non è ma non ha mai incidenti io preferisco il secondo.

Depenalizzare ok può anche essere una cosa giusta sotto il profilo giuridico ma diventerebbe ingiusta rispetto ai medici che si comportano bene, assisteremmo ad un appiattimento dove se sbagli non succede niente e se ti comporti bene non ti dicono neanche grazie.

Se potessi decidere io propenderei per escludere dalla pratica della medicina chi per dolo o colpa grave ha causato/contribuito a causare lesioni e/o morte anche di un solo paziente.

Powerered with Window Live Write

martedì 4 novembre 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Ottobre 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine ottobre 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione umanitaria a voi più gradita e fate a questa il vostro pagamento.

Powerered with Window Live Write

domenica 26 ottobre 2008

Gestire una colonna calcolata nel DataSet

Incuriosito da un post che lamentava l'impossibilità di gestire un campo di tipo testo che doveva evidenziare le righe con una data valida e rimanere vuoto nel caso di data nulla ho realizzato questo piccolo esempio che dimostra come si può gestire il databinding semplicemente aggiungendo una colonna calcolata e la relativa formula.

Non ho fatto altro che definire un campo calcolato all'interno della mia tabella di prova impostando la proprietà Expression della mia colonna con il codice:

iif(isnull(data,#01/01/1800#) = #01/01/1800#,'','Valida')

Il risultato è stato ottenere la gestione del databinding ed avere nello stesso tempo il mio campo calcolato, campo che ovviamente si aggiorna in base ai dati presenti nella riga.

Ora io ho popolato il dataset con un semplice ciclo, ma niente vieta che l'origine dati sia un database.

Progetto di esempio sviluppato per Visual Basic 2008

Non credo però che ci sia bisogno di consultarlo, per una cosa così banale io me ne vergognerei :)

sabato 25 ottobre 2008

Connettere Sql Server da Windows Mobile

La gestione di Sql Server da palmare equipaggiato con Windows Mobile risulta abbastanza agevole se la si fa compiendo i passi giusti.

In via preliminare però è necessario aver gestito

  • Abilitato su Sql Server la connessione "mista"
  • Aggiunto un nuovo utente di Sql Server per  la connessione da pda
  • Avere l'emulatore installato con abilitata la connessione di rete e/o il palmare connesso con Active Sync o con "Gestione dispositivi Mobili"

Si apre Visual Studio 2008 e si sceglie la creazione di un nuovo progetto per Smart Device.

Successivamente il Wizard mostra la finestra per la scelta specifica del tipo di dispositivo che si vuole gestire.

Io su questa ho scelto Windows Mobile 5, ho  un iPaq hw6915 con Windows Mobile 5, se si possiede un palmare con pocket pc 2003 o con altri successivi sistemi operativi si scelga opportunamente in questo momento.

Aggiuingiamo tra i riferimenti del progetto System.Data.SqlClient

Aggiungiamo al progetto un controllo DataGrid e impostiamo la sua proprietà "Dock" a Fill.

Aggiungiamo il gestore dell'evento Form.Load

C#

 private void Form1_Load(object sender, EventArgs e)

 {
     DataTable tableclienti = new DataTable("Clienti"); 
     SqlConnection cn = new SqlConnection("Data Source=192.168.111.2;user id=pda;password=pdapassword;Initial Catalog=Northwind;");
     SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", cn);
     da.Fill(tableclienti);
     dataGrid1.DataSource = tableclienti;
}

VB.NET

Private Sub Form1_Load(sender As Object, e As EventArgs)
      
Dim tableclienti As New DataTable("Clienti")
       Dim cn As New SqlConnection("Data Source=192.168.111.2;user id=pda;password=pdapassword;Initial Catalog=Northwind;")
       Dim da As New SqlDataAdapter("SELECT * FROM Customers", cn)
       da.Fill(tableclienti)
       dataGrid1.DataSource = tableclienti
End Sub

Da notare:

  1. Utilizzo numero di IP al posto del Nome (non ho voluto rischiare che il DNS non ce la facesse)
  2. Utilizzo della connessione "standard" con login e password
  3. Database Northwind

Si parte!, possiamo mandare in esecuzione il nostro programmino.

Compare l'emulatore: Ricordarsi di abilitare la connessione di rete sull'emulatore

Finalmente compare la nostra form che ci conferma che il nostro programma funziona.

Strano ma vero, funziona!

Alla prossima

Powerered with Window Live Writer

lunedì 20 ottobre 2008

Una piccola riflessione

Per me è stata una quasi-rivelazione già molti anni fa, lo scoprire che il peggior codice scritto da me era relativo a progetti completati in emergenza.

La classica conferma del detto veneto "presto e ben noi va d'acordo" facilmente traducibile in "presto e bene non vanno d'accordo".

E' capitato che affrontassi qualche impegno parzialmente impreparato sul linguaggio che dovevo utilizzare.

E' la mancanza di uno studio approfondito e di una puntuale pratica di prove ed esperimenti che limitano l'orizzonte a quello che si conosce, a quello che "viene meglio" utilizare.

Gli strumenti e le tecnologie ci vengono incontro solo se, è paradossale, impariamo come utilizzarle.

Quindi non lamentiamoci, se scriviamo del pessimo codice è solo colpa della nostra impreparazione.

Spesso, spessissimo vedo degli sviluppatori che si mettono alla tastiera a trascinare oggetti dalla toolbar componento con l'ide la loro prima applicazione senza aver neanche letto la copertina di un manuale.

Io non dico che i manuali siano indispensabili, anzi sono convinto che una accorta lettura dell'help in linea e di una googlata siano più che sufficienti per risolvere qualsiasi questione senza aver speso nulla.

Powerered with Window Live Writer

sabato 4 ottobre 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Settembre 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine settembre 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione a voi più gradita e fate a questa il vostro pagamento.

Powerered with Window Live Writer

giovedì 18 settembre 2008

Alitalia una fine preannunciata

Questo piccolo OT per solidarizzare con i lavoratori di Alitalia e mettere alcuni punti fermi.

Ma tant'è, la soluzione prospettata da CAI sarebbe stata comunque "pezo el tacon del buso", con CAI e lavoratori entrambi insoddisfatti della soluzione.

Ma chi è che può accettare di lavorare per meno soldi e per più tempo di prima se come contropartita c'è solo il ricatto di CAI.

Ora ha buon gioco Berlusconi accusando tutti a destra e a manca (nel senso che le accuse sono solo alla sinistra come al solito), tutti fuorchè la sua pensata (stavo per scrivere c.gata) in pieno periodo elettorale di far fallire l'accordo con Air France.

Qualsiasi soluzione, era già pronto con la sua risposta, se CAI avesse "vinto" avrebbe detto "avete visto? sono stato io a propugnare la cordata e a impegnarmi", se ci fosse stato il fallimento delle trattative, la soluzione è "dare la colpa ai sindacati" in entrambi i casi B. ha vinto.

Non credo si sia mai preoccupato delle sorti di Alitalia e dei lavoratori, si sente con Putin, Bush e gli altri grandi quasi quotidianamente, poteva benissimo combinarne una delle sue insieme con Tremonti, invece no.

Mi sembra inoltre, quella della cordata CAI, una riedizione aggiornata della cordata che acquisì la SME bloccando le trattative in atto con l'annuncio di una cordata e per interposto Craxi.

Che fine anno fatto quelle aziende?, la SME è stata smembrata e le sue aziende, quelle ancora in piedi sono in mano ai colossi stranieri.

La stessa cosa succedera con le poste attive di Alitalia, vedrete che fra qualche anno ci ritroveremo in qualche aula di giustizia a discutere di "nuovi furbetti".

Rinnovo la solidarietà ai lavoratori Alitalia, mica il lavoro verrà a mancare, ci sarà pur qualcuno che prenderà le tratte Alitalia e avrà bisogno di check-in, piloti, ecc.

A tutti l'invito a vigilare e stare accorti perchè sono convinto che nei prossimi giorni ne vedremo delle belle.

sabato 13 settembre 2008

Installato Window Server 2008

Finalmente mi hanno consegnato un computer assemblato dal mio spacciatore di hardware preferito, Nomen omen "Compumania SPA" di Padova.

Dati essenziali:

  • iQ9550 Core 2 Quad, m/b G33FB
  • 8 Gb Ram
  • 1TB 3,5' sATAII 32Mb. 7K1000 (Hitachi)
  • Super Multi Blue Blu-Ray GGW-H20L LG 360140003S (LG)
  • Sk Video EN8500GT Silent Magic 512Mb. PCI-E Asus

L'installazione di Windows 2008 è stata velocissima, in un tempo ultrarapido ho avuto un sistema funzionante.

Il pannello di controllo che si presenta all'amministratore è simile a quello presentato per Windows Server 2003, la configurazione della sk di rete è del tutto simile a quanto già "visto" su Windows Vista.

Le regole di default per la validità e composizione delle password sono diventate più rigide, una password che mi sembrava "buona" mi è stata rifiutata perchè non conteneva caratteri maiuscoli e/o simboli.

Mancano la reinstallazione delle applicazioni ed il recupero dei dati presenti nel vecchio Windows Server 2003 ma per ora sono soddisfatto.

Powerered with Window Live Writer

venerdì 12 settembre 2008

Open XML Format SDK 2.0

E' disponibile il developer kit relativo al formato Open Xml, formato creato da Microsoft per i suoi documenti di Office, Excel e Word principalmente.

Sono presenti esempi e documentazione che aiutano lo sviluppatore a leggere e scrivere i documenti Office nel formato Open XML.

Powerered with Window Live Writer

giovedì 11 settembre 2008

Oracle + Visual Studio .NET - Una bella guida disponibile online

E' disponibile online un pdf  contenente il manuale "Learn Oracle on .NET for Visual Studio 2005/2008 in 2 days".

Tralasciando il discorso senz'altro falso dei 2 giorni :) a prima vista si tratta di una guida veramente ottima che per chi ha/vuole Oracle come database credo sia indispensabile consultare.

Powerered with Window Live Writer

domenica 7 settembre 2008

Registro - Aggiungere un valore binario

Per inserire un valore binario utilizziamo la classe Registry che si trova su sul namespace Microsoft.Win32.

Un valore binario non è altro che la rappresentazione di un array di bytes, ciascun byte è composto da 2 caratteri ed è classificato come REG_BINARY

Può essere recuperato con una analoga funzione che "rigenera" l'array di bytes.

VB.NET
Dim regkey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( "Software\Test")
Dim b() As Byte = {0, 2, 0, 1, 1, 1}
regkey.SetValue("Valore", b)

C#
RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Test");
byte[] b = {0, 2, 0, 1, 1, 1};
regkey.SetValue("Valore", b);  

Da notare che per C# è obbligatorio inserire un riferimento alla libreria Microsoft.VisualBasic ed eventualmente un "using Microsoft.Win32"

Il mio piccolo esempio genera la voce di registro:
HKEY_CURRENT_USER\Software\Test
all'interno di questa il valore "Valore"
L'invito a utilizzare Regedit per cancellare la voce inserita credo sia doveroso, è invece obbligatorio se si vuole eseguire una seconda volta con le stesse impostazioni. 

Powerered with Window Live Writer

venerdì 5 settembre 2008

Suddivisione file di testo in più pezzi - Split File Testo

Capita a volte di avere la necessità di suddividere in pezzi dei file molto grandi (split).

Questo presentato suddivide il file in tanti pezzi contenenti ciascuno un il numero di linee impostato come parametro (con esclusione dell'ultimo che avrà solo il resto del file).

File:  nome del file comprensivo di path da suddividere, deve essere un file di testo e non un file binario

Cartella: nome della cartella di destinazione del file suddiviso

Righe per file: numero di righe di testo da posizionare su ciascun pezzo

Righe totali: è fatto un calcolo approsimativo del numero di righe presenti nel file paragonando il peso di alcune righe con le dimensioni dell'intero file, è esatto con i file con le righe a lunghezza fissa e "assomiglia" al risultato reale negli altri casi.

A questo indirizzo è disponibile il progetto per Visual Studio 2008 per C#

Powerered with Window Live Writer

mercoledì 3 settembre 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Agosto 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine agosto 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.
I ringraziamenti sono comunque graditi.
Se sentite il malsano bisogno di farmi pervenire una somma di denaro, scegliete l'organizzazione a voi più gradita e fate a questa il vostro pagamento.

Powerered with Window Live Writer

venerdì 29 agosto 2008

Installare XP SP3 porta sfiga?

Ho alcune macchine virtuali con xp installato, per aggiornarle al sp3 ho provveduto a scaricare il sp3 e a metterlo su un cdrom.

Nessun problema con l'aggiornamento sulle macchine virtuali.

Il mio secondo portatile (quello vecchio) aveva anch'esso xp installato.

Oggi l'ho riacceso e la prima cosa che ha fatto è stata installare il sp3, o meglio ci ha provato ed è andato in errore con un messaggio che più criptico di così non si può: "accesso negato"

Armato di tanta pazienza ho googlato con quel poco che avevo.

Ho trovato questo articolo della knowledge di base che descriveva il mio problema e la sua soluzione.

Peccato però che durante l'applicazione del metodo 3 ho avuto un Blue Screen, così dopo aver riprovato e riottenuto un altro Blue Scree ho rimosso uno dei due chip di ram da 1gb installati (il secondo per la precisione), risultato: il SP3 si è installato correttamente.

Ora però devo andare a comprare la ram per rimpiazzare quella guasta.

Coincidenze o altro?

Powerered with Window Live Writer

venerdì 22 agosto 2008

Installato Sql Server 2008 e Visual Studio 2008 SP1

Avevo voglia di provare il nuovo Sql Server 2008 così mi sono attrezzato, e ho scaricato Sql Server 2008 Developer dal mio abbonamento MSDN .

Per primo ho fatto una nuova installazione su una macchina virtuale con Windows XP installato, poi verificato che Microsoft Dynamics NAV funzionava con Sql Server 2008 (per chi non lo sapesse Dynamics NAV è la fonte del mio lavoro quindi almeno per me è che funzionasse era ed è un prerequisito irrinunciabile) ho provveduto ad installarlo come upgrade di Sql Server 2005 sul mio portatile con Windows Vista

Installazione Ex-Novo di SQL Server 2005 su nuova macchina virtuale con Windows XP.

Scelto nel setup l'opzione di nuova installazione il processo, circa due ore è andato avanti ed è terminato senza intoppi.
Poi ho installato Dynamics NAV 5 SP1, configurato il -T4616 sui parametri di partenza di Sql Server 2008 e impostato la DLL di Dynamics il tutto ha funzionato quasi al primo colpo.

 

Installazione come upgrade di Sql Server 2005

L'installazione come upgrade è un pò più complessa, infatti partivo da una situazione con già installati (i più importanti):

  1. Visual Studio 2008 Team Edition for Professional Developers
  2. Microsoft Dynamics NAV 4 SP3 (più gli hotfix specifici per Vista)
  3. Sql Server 2005 Developer
  4. Sql Server 2005 Express
  5. Reporting Services
  6. Analysis Services

Ho provveduto in modo preliminare ad installare ed eseguire il programma intitolato "Preparazione aggiornamento a Sql Server 2008" che ha rilevato che andava tutto bene fuorchè la mancanza di Visual Studio 2008 SP1, che ho provveduto immediatamente a scaricare e a installare online.

L'upgrade di Sql Server 2005 è andato molto a rilento, circa 3 ore per l'installazione ma è proseguito e concluso senza intoppi.

Powerered with Window Live Writer

domenica 3 agosto 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Luglio 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine luglio 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.

Powerered with Window Live Writer

martedì 1 luglio 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Giugno 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine giugno 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.

Powerered with Window Live Writer

domenica 22 giugno 2008

Una parte della mia libreria


Alcuni libri che ho preso per stare al passo con l'evoluzione di .NET.
Lo so, dovrei pubblicare un commento a ciascun titolo ma .. sono troppo pigro.

Powerered with Window Live Writer

mercoledì 4 giugno 2008

Archivio Sportelli Bancari - Elenco Abi Cab Aggiornato a Fine Maggio 2008

L'archivio sportelli bancari elenco Abi Cab aggiornato a fine maggio 2008  è disponibile per lo scaricamento a questo indirizzo:
Alcune informazioni sui files:
- campi separati da tabulazione hex: 09
- righe separate dal terminatore di riga windows hex: 0d0a
- intestazione colonne sulla prima riga
Il file TabAbi contiene i dati relativi alle banche.
Il file TabAbiCab contiene le informazioni relative agli sportelli
Nel file TabAbi e TabAbiCab è presente il campo "Aggiornamento" che evidenzia la data di riferimento di validità dei dati.
Tutte le righe di TabAbiCab che NON contengono la data più recente sono da considerarsi relative a sportelli non più attivi o assorbiti da altre banche, tali sportelli sono presenti solo come log dei dati storici, ne è sconsigliato l'utilizzo per nuove emissioni di flussi di comunicazione con le banche.
Questo archivio è da considerarsi frutto di una rielaborazione "amatoriale" dei dati degli sportelli bancari reperibili in rete l'unico mio apporto è l'aggiunta della data di ultima importazione in modo tale da costituire un archivio comprendente anche i dati di banche e sportelli non più attivi.
Non si rivendica nessun diritto riguardo al contenuto del file, l'utilizzatore ne può fare ciò che vuole senza contattarmi nè informarmi della cosa, preferirei inoltre non essere neanche citato come fonte in eventuali successive redistribuzioni.
Se si vuole una garanzia circa la correttezza dei dati e/o una qualsiasi licenza il mio consiglio è di NON utilizzare il presente archivio e di rivolgersi direttamente alla propria banca chiedendo di avere in forma ufficiale il file degli sportelli bancari.

Powerered with Window Live Writer

venerdì 30 maggio 2008

Microsoft DreamSpark - una opportunità per tutti gli studenti

Microsoft dà la possibilità a tutti gli studenti di avere gli strumenti di sviluppo a livello professionale.
Sostanzialmente DreamSpark è composto da:

  • Visual Studio 2008 Professional Edition
  • Visual Studio 2005 Professional Edition
  • Sql Server 2005 Developer Edition
  • Xna Game Studio 2.0
  • Xna Creators Club Online
  • Microsoft Expression Studio
  • Windows Server 2003 Standard Edition

Tutti gli studenti / responsabili scolastici / presidi possono scaricare e utilizzare gratuitamente tutti i pacchetti.

Le note dolenti .. l'Italia NON è compresa nella lista di chi può avere subito gli strumenti di DreamaSparsk, lo sarà nel corso del 2009 :( :( :(

Powerered with Window Live Writer

giovedì 29 maggio 2008

Dynamics NAV CTP 2009

In questi giorni sto giocando con la "Technical Preview for Microsoft Dynamics NAV".

Ho scaricato l'immagine del disco virtuale dal sito di  Microsoft Partnersource.

Nel disco è contenuta l'immagine di una installazione Windows Server 2003 trial contenente:

  1. Dynamics NAV 5.1
  2. SQL Server 2005
  3. Visual C# Express
  4. Micorosft Office 2007
  5. Microsoft Office 2007 Server
  6. Microsoft Share Point

Il nuovo client di Dynamics NAV come noto fornisce un nuovo front-end utente basato su una web application con dei servizi ASP.NET che interfacciano il database di Dynamics ospitato su SQL Server 2005.

Questa l'interfaccia della nuova scheda cliente, la società di esempio è la classica "Cronus"

 

Questa invece è la stessa Form con il client "Classico" che punta allo stesso database della web application.

 

 

 

Come noto le novità sostanziali di questa release che, a detta di MIcrosoft verrà distribuita a partire da settembre 2008 sono:

  1. Nuovo oggetto "page", contiene il tracciato xaml per la definizione delle pagine per l'interfaccia web application
  2. Il report di Microsoft Reporting Services accanto (meglio in sostituzione) del classico report, il report di navision rimane perchè i reports hanno una doppia funzione: a) report b) batch di elaborazione
  3. Possibilità di "consumare" i web services con una "classica" applicazione Windows Forms

Esiste un tool di trasformazione che a fronte degli oggetti di Dynamics NAV "genera" dei nuovi oggetti che forniscono l'interfaccia tra il database e la web application.

Tutti i sorgenti che ho visto sono in C#.

Powerered with Window Live Writer

lunedì 19 maggio 2008

Calcolo del Cin del Bollettino Freccia

Su richiesta di qualcuno che me l'ha chiesto esemplifico il calcolo del Cin del bollettino freccia.

Il bollettino freccia è il sostituto del bollettino postale introdotto dalle banche come forma alternativa di pagamento.

I campi necessari per il calcolo del cin del bollettino freccia sono i seguenti

Campo Componenti Lunghezza Note
Importo   9 Importo * 100 senza decimali con zeri significativi nessun segno solo importi positivi
Cin importo   1 Vedi formula
Identificativo pagamento   21  
  Codice Sia 5 Attribuito dalla banca all'azienda cliente
  Riferimento 16 Riferimento univoco al documento
Cin intermedio   1 Vedi formula
IBAN   27  
  Codice paese 2 previsti IT e SM
  CIN IBAN 2 Vedi calcolo CIN IBAN
  CIN BBAN 1 Vedi calcolo CIN BBAN
  ABI 5 Codice Abi cliente
  CAB 5 Codice Cab cliente
  CC 12 Numero conto corrente cliente
Codice esenzione   1 Valore fisso = 1
Codice Divisa   1 Valore fisso = E
Cin complessivo   1 Calcolato su tutti i campi precedenti

 

I caratteri ammessi per i campi alfanumerici sono tutti i 26 caratteri maiuscoli i caratteri cioè presenti nella  tabella ASCII da 65 a 90 compresi più i 10 caratteri da 0 a 9 compresi.

Rimando alla consultazione del mio blog per il calcolo del CIN del BBAN e dell'IBAN.

Formula del Cin Freccia

Il calcolo è abbastanza lineare (in pseudocodice):

Per ogni carattere contenuto nel codice da cui calcolare il cin
Si accumula il valore ascii moltiplicato per la posizione relativa del carattere nel codice partendo da sinistra (Esempio con un codice A1 la somma diventa 65 * 1 +  49 * 2).

Si calcola il resto della divisione intera per 36 (funzione modulo) + 1

Con quest'ultimo valore si ottiene il carattere "puntato" come sottostringa di: Z0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

La funzione in C#

private static string CalcolaCin(string valore)
{
       if ((valore == string.Empty) || (valore == null))
       {
             throw new Exception("Valore non ammesso");
       }
       string lettere = "Z0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       int somma = 0;
       int i = 0;
       for (int k = 0; k < valore.Length; k++)
       {
             char c = valore.Substring(k,1).ToCharArray()[0];
             somma += (int) c * (k + 1);
       }
       i = (somma % 36);
       return lettere.Substring(i,1);
}

Esempio di calcolo con C#
Esempio di calcolo con VB.NET
Libreria comune da referenziare

Powerered with Window Live Writer

Microsoft Expression Blend 2.5 Preview Marzo 2008

MIcrosoft Expression Blend 2.5 Preview Marzo 2008 è disponibile per lo scaricamento.

Expression Blend è uno strumento professionale per la produzione di applicazioni web compatibili con Silverlight.

sabato 17 maggio 2008

Internet Explorer 8 Beta 1 Disponibile

E' disponibile a questo indirizzo Internet Explorer 8 Beta 1.

venerdì 16 maggio 2008

Un backup per le cartelle di Outlook 2002 e successivi

Microsoft distibuisce un add-in che consente di predisporre, a intervalli regolari, un salvataggio automatico delle casrtelle di Office Outlook.

Il tutto è disponibile a questo link

giovedì 15 maggio 2008

Utilizzo di SQLite su Visual Studio 2005 - 2008

SQLite è uno dei DataBase che più agevolmente si presta a diventare un valido sostituto di Access.
Come database embedded è leggerissimo, non ha bisogno di nessuna installazione se non quella del provider ADO.NET System.Data.SQLite.

Anche se non obbligatorio, è' opportuno scaricare il database e i tools dal sito di SQLite soprattutto sqlite3.exe che fornisce una console "linea comandi" di gestione al database, una vera manna per gli smanettoni.

Oltre a fornire l'interfaccia / provider ADO.NET di SQLite è possibile "disegnare" la propria base dati e, all'occasione poter creare il database.

Il problema dell'interfaccia ide è che si tratta di un addon, sulla versione Express non è prevista, nel designer di connessioni e dataset altri database che non siano Access o Sql Express entrambi gestiti in locale.

Per poter aggirare questa limitazione i creatori del driver hanno pensato bene di permettere di "sganciare" da express il provider di Access e sostituire provvisoriamente il proprio a questo.

L'installazione aggiunge nel menù un semplice programma che su Visual Express provvede a sganciare / riagganciare access tra i provider.

Con esclusione della versione Express 2008 su tutte le altre versioni di Visual Studio 2005 e 2008 è possibile utilizzare il wizard per la definizione del dataset tipizzato, della connessione ai dati ed eventualmente creare anche il database.

Su Express 2008 c'è un bug già riconosciuto che impedisce l'utilizzo del wizard e del designer, il collegamento "a mano" con la definizione da codice è sempre possibile, come è possibile in tutte le altri progetti basati sul Framework 2 o successivi.

Nei casi in cui non sia possibile geneare un nuovo database tramite l'ide è possibile utilizzare il programma console sqlite3.exe.

Un esempio di utilizzo del programma a linea comandi:

D:\sqlite>sqlite3.exe dbprova.db3
sqlite> create table tableprova (id integer primary key autoincrement, descrizione varchar(50), valore decimal(10,3));

Per "solidarietà" con la versione express non utilizzo la definizione del dataset tipizzato / tableadapter.
Tra l'altro .. sono andato a "sbirciare" sul dataset tipizzato / tableadapter di prova generato da visual express 2005, beh il codice è comunque incompleto.

Se può essere d'aiuto la gestione del dataset può essere fatta con un database di access e poi si può intervenire nella classe generata dal wizard con una nostra "partial class" che dall'interno riconfiguri tutti gli elementi (command, connection, ecc) facendoli puntare a SQLite.

Proseguiamo con l'aggiungere un dataset non tipizzato al progetto.

Aggiungiamo un DataTable "tableprova" al progetto e i 3 campi

Campo Tipo Note
id Int32 PK, autonumber (-1 sul seed e sullo start)
descrizione string  
valore decimal 12 interi,3 decimali

Completata questa fase è possibile aggiungere alla form selezionandoli dalla casella degi strumenti il controllo BindingSource e il controllo BindingNavigator .

Agendo sulla prprietà dei controlli colleghiamo BindingNavigator a BindingSource e BindingSource al DataSet il bindinsource collegato al dataset/tableprova.

Ora inizia la parte difficile, dobbiamo sostituire quanto fa il designer che genera il TableAdapter  un oggetto che è costruito ad hoc dal wizard, al suo posto utilizzeremo un normale DataAdapter.

A livello di classe definiamo un oggetto di tipo DataAdapter 

C#
SQLiteDataAdapter daTableProva;
// Definiamo anche la stringa di connessione

string Connessione = Properties.Settings.Default.Connessione;

VB.NET
Dim daTableProva As SQLiteDataAdapter
'Definiamo anche la stringa di connessione
Dim Connessione As String = My.Settings.Connessione

Per la configurazione del SQLiteDataAdapter ho introdotto un metodo apposito "Inizializza".

C#

void Inizializza()
{
   SQLiteConnection cn = new SQLiteConnection(Connessione);
   daTableProva = new SQLiteDataAdapter("SELECT * FROM tableprova", cn);
   System.Data.Common.DataTableMapping tableMapping = new System.Data.Common.DataTableMapping();
   tableMapping.SourceTable = "Table";
   tableMapping.DataSetTable = "tableprova";
   tableMapping.ColumnMappings.Add("id", "id");
   tableMapping.ColumnMappings.Add("descrizione", "descrizione");
   tableMapping.ColumnMappings.Add("valore", "valore");
   daTableProva.TableMappings.Add(tableMapping);
   SQLiteCommandBuilder cmb = new SQLiteCommandBuilder(daTableProva);
   daTableProva.InsertCommand = cmb.GetInsertCommand();
   daTableProva.UpdateCommand = cmb.GetUpdateCommand();
   daTableProva.DeleteCommand = cmb.GetDeleteCommand();

}

VB.NET

   Private Sub Inizializza()
        Dim cn As New SQLiteConnection(Connessione)
        daTableProva = New SQLiteDataAdapter("SELECT * FROM tableprova", cn)
        Dim tableMapping As New System.Data.Common.DataTableMapping()
        tableMapping.SourceTable = "Table"
        tableMapping.DataSetTable = "tableprova"
        tableMapping.ColumnMappings.Add("id", "id")
        tableMapping.ColumnMappings.Add("descrizione", "descrizione")
        tableMapping.ColumnMappings.Add("valore", "valore")
        daTableProva.TableMappings.Add(tableMapping)
        Dim cmb As New SQLiteCommandBuilder(daTableProva)
        daTableProva.InsertCommand = cmb.GetInsertCommand()
        daTableProva.UpdateCommand = cmb.GetUpdateCommand()
        daTableProva.DeleteCommand = cmb.GetDeleteCommand()
    End Sub

Problema del recupero dell'ultimo ID nel caso di campi chiave autonumber.
Il comando sql per generare un campo autonumber durante la creazione di una tabella SQLite è:
CREATE TABLE mytable (id integer primary key autonumber, ..altri campi);
Su SQLite esiste una funzione last_insert_rowid() che restituisce l'ultimo id attribuito.

Per recuperarlo nel nostro dataset è necessario "abbonarsi" all'evento RowUpdated di SQLiteDataAdapter.

C#
daTableProva.RowUpdated += new EventHandler<System.Data.Common.RowUpdatedEventArgs>(daTableProva_RowUpdated);
...

void daTableProva_RowUpdated(object sender, System.Data.Common.RowUpdatedEventArgs e)

{
    // recupero dell'ultimo id attribuito automaticamente negli
    // inserimenti
    if (e.Row.RowState == DataRowState.Added)
    {
       SQLiteCommand cm = new SQLiteCommand("SELECT last_insert_rowid() As ID", daTableProva.SelectCommand.Connection);
       SQLiteDataReader dr = cm.ExecuteReader();
       int k = 0;
       if (dr.Read())
         k = (int)((Int64)dr[0]);
       e.Row["id"] = k;
    }
}



VB.NET
AddHandler daTableProva.RowUpdated, AddressOf daTableProva_RowUpdated

...

Private Sub daTableProva_RowUpdated(ByVal sender As Object, ByVal e As System.Data.Common.RowUpdatedEventArgs)
    ' recupero dell'ultimo id attribuito automaticamente negli
    ' inserimenti
    If e.Row.RowState = DataRowState.Added Then
       Dim cm As New SQLiteCommand("SELECT last_insert_rowid() As ID", daTableProva.SelectCommand.Connection)
       Dim dr As SQLiteDataReader = cm.ExecuteReader()
       Dim k As Integer = 0
       If dr.Read() Then
          k = CInt(DirectCast(dr(0), Int64))
       End If
       e.Row("id") = k
    End If
End Sub

Progetto di esempio in C# realizzato con Visual Studio 2008
Progetto di esempio VB.NET realizzato con Visual Studio 2008

Powerered with Window Live Writer