[VB6] Gestione specifiche import-export di database Access
Pubblicato da Mario De Ghetto su 15 Febbraio 2008
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.
Pubblicato su Articoli vari, Office | Contrassegnato da tag: Access, VB6 | 1 Commento »