Archivi giornalieri: 15 febbraio 2008

[VB 2005-2008] Controllo: barra di progressione circolare (stile SQL Server 2005)

AGGIORNATO (sostituiti i link non funzionanti) 

Ecco un progetto, con sorgenti e demo, per creare delle barre di progressione circolari come troviamo su SQL Server 2005:
http://www.codeproject.com/KB/cpp/sql2005circularprogress.aspx

Un effetto speciale secondo me veramente simpatico (vedi immagine qui sotto):
http://www.codeproject.com/KB/cpp/sql2005circularprogress/sql2005circularprogress.jpg

Il progetto è scritto in VB 2005.

[VB6] Gestione specifiche import-export di database Access

Per il mio lavoro, spesso ho la necessità di gestire l’importazione e l’esportazione di file di dati (tipicamente file di testo con record a lunghezza fissa) da Microsoft Access. Per queste attività ho sempre utilizzato la gestione delle specifiche di importazione/esportazione nativa di Access, ma è una funzionalità che non mi ha mai soddisfatto completamente.

Per esempio ci sono stati dei casi in cui non sono riuscito a modificare una specifica già esistente e ho dovuto ricrearla da zero, senza contare il problema di inserire un campo all’interno di una specifica già esistente: in questo caso è necessario ricalcolare manualmente il carattere di partenza di ciascun campo successivo. Anche lo spostamento di un campo in una diversa posizione è un’attività che può diventare un’atroce perdita di tempo.

Ecco quindi che, diverso tempo fa, ho pensato di creare un progetto in Visual Basic 6.0 (download di 153 kb). Anzi, i progetti sono più di uno:

  • un progetto che comprende l’interfaccia principale (ImportExport.vbp)
  • un progetto che comprende l’interfaccia per la gestione delle specifiche (Specifiche.vbp)
  • un progetto per gestire le attività di importazione (Import.vbp)
  • un progetto per gestire le attività di esportazione (Export.vbp). 

Con il link sopra riportato potete scaricare tutti questi progetti, con anche gli eseguibili già compilati, un database di prova e alcuni file di testo, con qualche specifica di importazione/esportazione già caricata.

Le specifiche, infatti, vengono caricate in una tabella di Access. E’ possibile estrarre anche le specifiche da un database già esistente e salvarle in questa tabella speciale, così da centralizzare tutte le attività di importazione/esportazione.

Non è tutto: considerato che potrebbe essere necessario eseguire un’importazione/esportazione anche direttamente da un programma VBA scritto all’interno di Access (o di un altro prodotto Office) o perfino in un proprio programma scritto in qualsiasi altro linguaggio (perfino VB.NET), ho pensato di gestire i parametri della riga di comando utilizzati per avviare i programmi Import.exe e Export.exe.

In questo modo è possibile avviare, per esempio, Import.exe passandogli già i parametri necessari per eseguire l’importazione senza nemmeno aprire la sua interfaccia grafica! Il trucco sta tutto nell’evento Load del form Import.frm:

Private Sub Form_Load() 
    ReDim argv(5) As String 
    Dim i As Integer 
    
    Dim sNomeFile 
    Dim sNomeSpecifica 
    Dim sNomeDB 
    Dim sNomeTabella 
      

    ' legge la riga di comando: 
    argv = GetCommandLine(argv) 
    
    If argv(1) <> "" Then 
        ' i parametri vengono passati secondo quest'ordine: 
        sNomeFile = argv(1) 
        sNomeSpecifica = argv(2) 
        sNomeDB = argv(3) 
        sNomeTabella = argv(4) 
        sFlagDelete = argv(5) 
        
        If argv(5) = 1 Then 
            Call DeleteTable(sNomeDB, sNomeTabella) 
        End If 
        
        If argv(1) <> "" Then 
            Call ImportaFile(sNomeFile, sNomeSpecifica, sNomeDB, sNomeTabella) 
        End If 
        
        ' annulla il caricamento del form: 
        Unload Me 
        Exit Sub 
    End If 
    
    ReDim arraySpecifiche(1) 
    arraySpecifiche = ElencaSpecifiche() 
    
    Me.txtNomeSpecifica.Clear 
    For i = 1 To arraySpecifiche(0) 
        Me.txtNomeSpecifica.AddItem arraySpecifiche(i) 
    Next i 
        
End Sub

Per ultima, una piccola precisazione: questo programma l’ho scritto qualche anno fa, ma non l’avevo mai pubblicato prima, quindi è una soluzione assolutamente inedita.

Può sembrare anacronistico un progetto scritto in VB6 come nuova soluzione, visto che ormai .NET è diventata la piattaforma di sviluppo prevalente, ma c’è una considerazione da tenere presente: tra i file forniti con il file compresso c’è anche un report dell’analisi eseguita con Code Advisor per verificare la compatibilità dei progetti con VB.NET. L’esito è assolutamente confortante, dato che viene segnalato solo un piccolo problema relativo a Option Explicit, facilmente eliminabile.

Ovviamente questo progetto può essere utilizzato come prototipo per realizzare una soluzione analoga e più orientata agli oggetti, utilizzando codice VB.NET puro.

In ogni caso spero che possa essere utile a chi, come me, ha avuto problemi nell’utilizzo delle funzionalità native di Access per la gestione delle specifiche di importazione/esportazione.

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 846 follower