Esportazione dati con specifica Stampa
Scritto da Cinzia Pagani   
Lunedì 15 Gennaio 2007 21:16

Cambiare il tipo di un dato esportato senza ricreare ex-novo la specifica.

In Access è possibile esportare i dati di una tabella e/o di una query in un file di testo usando una specifica di esportazione. La specifica può essere creata nella maschera di esportazione cliccando sul bottone Avanzate.
Se state esportando in un file di testo a larghezza fissa, la procedura guidata vi consente di definire per ogni campo della query o della tabella il carattere di inizio e la larghezza, il tipo di dato viene dedotto da Access in base ai dati di esempio usati per creare la specifica. Queste informazioni sono salvate in 2 tabelle di sistema MSysIMEXSpecs, che contiene un record per ogni specifica salvata e MSysIMEXColumns relazionata alla precedente sul campo SpecID che contiene i dettagli di esportazione di ogni singola colonna. Può succedere che per qualche motivo dovete cambiare il tipo di dato esportato rispetto a quello usato in fase di creazione della specifica e per farlo avete due possibilità:

  1. ricreate ex-novo la specifica, se ripartite da quella che avete già il tipo di dato non viene comunque cambiato (Procedura consigliata per i meno esperti)
  2. Modificate la tabella MSysIMEXColumns (Procedura consigliata solo per i più esperti)

In questo secondo caso se si rendono visibili le tabelle di sistema agendo su Strumenti – Opzioni Scheda Visualizzazione e mettendo la spunta a Oggetti di sistema, noterete che aprendo la tabella in questione questa non può essere modificata direttamente. E’ possibile però fare le modifiche utilizzando una query di aggiornamento. Per facilitare l’operazione ecco una funzione che esegue questo aggiornamento per voi:

 'NomeSpecifica: Nome della specifica su cui volete apportare la modifica 
'nomecampo: Nome del campo da modificare 'nuovoTipodato: rappresentante il nuovo tipo dato
'Valore di ritorno: Vero - Aggiornamento eseguito -- Falso Aggiornamento non eseguito

Function AggiornaTipoDatoSpecifica(ByVal nomeSpecifica As String,
ByVal
nomeCampo As String, ByVal nuovotipoDato As DAO.DataTypeEnum) As Boolean
Dim strsql As String
Dim blnRet As Boolean
On Error GoTo AggiornaTipoDatoSpecifica_Err
strsql = "UPDATE MSysIMEXColumns INNER JOIN MSysIMEXSpecs " & _
"ON MSysIMEXColumns.SpecID =MSysIMEXSpecs.SpecID " & _
"SET DataType = " & nuovotipoDato & " WHERE SpecName ='" &_
Replace(nomeSpecifica, "'", "''") & _
"' AND FieldName='" & nomeCampo & "'"
With CurrentDb
.Execute strsql, dbFailOnError
blnRet= CBool(.RecordsAffected)
end With
AggiornaTipoDatoSpecifica = True
AggiornaTipoDatoSpecifica_Exit:
AggiornaTipoDatoSpecifica=blnRet
Exit Function
AggiornaTipoDatoSpecifica_Err:
MsgBox (Err.Description)
AggiornaTipoDatoSpecifica = False
Resume AggiornaTipoDatoSpecifica_Exit
End Function

 

Esempio di utilizzo:

AggiornaTipoDatoSpecifica(“MiaSpecifica”, “NumColli”, dbText)

NB. Usate con estrema cautela e fate un backup prima di usare questa funzione, le tabelle di sistema non andrebbero modificate.

 


Sistema operativo: Win32
Applicazioni: Access 2000, Access 2002/XP, Access 2003

 

Ultimo aggiornamento Giovedì 02 Luglio 2009 11:40