Newsgroup: it.comp.appl.access
Titolo: aggiungere campi alle tabelle da codice

Come si possono aggiungere dei campi ad una tabella di Access 2000 usando la
programmazione?
Ho letto qualcosa sull'insieme Fields e sul metodo Append, ma ho ancora dei
dubbi.
Sarebbe gradito anche un esempio di codice.
I dati di partenza sono:
Nome e percorso del database: c:\EsempiAccess11\Dati.mdb
Nome della tabella: Fatture
Campo da inserire: 'ImportFatture' numerico intero lungo.
Ringrazio anticipatamente.
GioVe

 ha scritto nel messaggio
news:k%YVc.169312$5D1.8...@news4.tin.it...

[Risposta]
Leggi questo:
http://www.applecore99.com/tbl/tbl001.asp
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio
news:k%YVc.169312$5D1.8...@news4.tin.it...

Le cose non sono così semplici.
Il codice da scrivere è veramente poco; quello che è più complesso è la
gestione.
Ti faccio un esempio.
In diversi gestionali che ho fatto mi è capitato di dover aggiungere un
campo ad una tabella dopo aver rilasciato il programma stesso al cliente.
Per prima cosa è necessario dividere il db il due db uno (BE) con le tabelle
e un altro (FE) con tutto il resto.
Le tabelle vengono allegate al FE. Questo ti pernette di fare tutte le
modifiche che vuoi sul FE senza toccare i dati presenti nelle tabelle (BE)
del cliente. Alla fine ti sarà sufficiente distribuire il solo FE.
Le procedure fatte per aggiungere un campo ad una tabella sono:
aggiunta manuale del campo alla tabella (presso il mio studio)
costruzione di una query (nel FE) che prevede solo quel campo nuovo di
quella tabella
eliminazione manuale del campo dalla tabella
da codice verifico se eseguendo la query mi restituisce un errore
se l'errore è diverso da zero vuol dire che il campo non esiste...in questo
caso
eseguo il codice che mi accoda il nuovo campo alla tabella:
Public Sub NuovoCampoNFatt()
 On Error Resume Next
    Dim dbs As Database
    Dim tdf As TableDef, fld1 As Field
    Dim i As Integer
    Set dbs = OpenDatabase(MiaDir & "\MioDb.mdb")
    For i = 1 To dbs.TableDefs.Count
    If dbs.TableDefs(i).Name = "MioNomeTabella" Then
    Set tdf = dbs.TableDefs(i)
    Exit For
    End If
    Next i
    Set fld1 = tdf.CreateField("NFattura", dbLong)
    tdf.Fields.Append fld1
        Set dbs = Nothing
    Exit Sub
End Sub
Dimenticavo di dirti che tutte le query o maschere che utilizzeranno il
nuovo campo vanno già previste e realizzate nel nuovo FE che darai al
cliente. Questi oggetti devono essere costruiti a partire da una tabella con
il campo già inserito (da fare in studio).
Tutti questi passaggi possono essere modificati e si possono scegliere varie
strade. L'importante è verificare che il campo esista e solo se assente
eseguire il codice per il nuovo campo. Tutto ciò è più fattibile, con meno
possibilità di danni, utilizzando la struttura BE/FE.
Ciao, Carlo

 ha scritto nel messaggio
news:k%YVc.169312$5D1.8...@news4.tin.it...

Prova Cosě
------------
CurrentDb.Execute "ALTER TABLE [Ms
Access;Database=C:\TuoPercorso\TuoDb.Mdb;].Fatture ADD NFattura Long"
------------
Ciao Giorgio

 ha scritto nel
messaggio news:67_Vc.169532$5D1.8...@news4.tin.it...

Ciao Carlo,
ti ringrazio tantissimo, hai risolto proprio il mio caso.
Visto che ci siamo, puoi dirmi come risolvere il problema dell'accodamento
nel BE del mio studio dei record presenti nel BE di un cliente? Il problema
si pone specialmente con le tabelle collegate da un campo contatore.
E' da tempo che cerco di risolvere questo problema, ma finora non sono
riuscito a creare una procedura da utilizzare ogni qual volta necessito di
avere nei miei archivi anche i dati dei miei clienti.
Di nuovo grazie.
GioVe


Il consiglio è quello di avere nello studio una tabella identica a quella
del cliente ma al posto del campo contatore un campo di tipo long. In questo
modo potrai "accodare" gli stessi numeri o id del cliente e farvi
riferimento.
Una query di accodamento risolverà il problema dell'importazione.
Ciao, Carlo