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