Newsgroup: it.comp.lang.visual-basic
Titolo: aggiungere campi a una tabella

la guida in proposito mi pare molto vaga e oscura....
ho una tabella (popolata) in un db access alla quale vorrei aggiungere dei
campi da VB.
pensavo di procedere cosě, usando ADO:
- stabilisco la connessione ad db
- apro la tabella in un recordset (per conoscerne la struttura)
- aggiungo i campi
ovviamente perň avendo il recordset aperto non mi fa modificare la
struttura, diversamente se chiudo il recordset non ho l'elenco dei campi
presenti e quindi non ha senso aggungerne altri.
cosa mi sfugge ?
grazie!
Marco

 - aggiungo i campi
- spero di ritrovarlo nella nuova veste, seno'
-    recupero la copia, se esiste
-        torno alla prima casella
-    seno'
-        m'attacco 'fine senno
-    fine seno'
ciao, j.gioco.dell.oca :)


 pensavo di procedere cosě, usando ADO:
Un po' come Java:
-Ho la nuova struttura scritta su un file di testo, sempre diponibile.
-Scopro che č diversa da quella della tabella presente nel database
-Rinomino la tabella in un nome certamente inesistente
-Creo la tabella col nome effettivo e con la nuova struttura, vuota
-Scandaglio tutti i records della tabella rinominata (vecchia) e recupero
tutti i records/campi (in questo modo posso anche cambiare la
tipologia/lunghezza di un campo e, se compatibile, ne recupero il valore,
posso rinominare campi, etc.)
-Cancello la tabella rinominata e vecchia

 -Cancello la tabella rinominata e vecchia
uh... grazie a tutti e due!
ma... č l'unica soluzione possibile ? cioč praticamente devo creare ex-novo
una tabella con i nuovi campi e popolarla con i dati di quella di partenza
?!? mi pare un tantino macchinoso! speravo si potessero aggiungere campi
direttamente sulla tabella di partenza, ma tant'č.....
grazie ancora!
Marco

 direttamente sulla tabella di partenza, ma tant'è.....
Certo si può fare. Io uso DAO e si può fare, sempre che non vi siano
elementi che lo impediscono, come (vado a naso, non sto affermando)
recordset aperti e/o transazioni in corso.

 recordset aperti e/o transazioni in corso.
allora, scusatemi, ma non ho afferrato il concetto.
mi è sembrato di capire, che avrei dovuto salvarmi la struttura ( =
definizione dei campi) della tabella di partenza, poi devo creamrmi una
nuova tabella vuota con i campi precedentemente salvati e con quelli che
desidero aggiungere, copiare i record dalla tabelle di partenza a quella di
arrivo, infine eliminare la vecchia tabella e continuare a usare quella
nuova.
se invece è possibile evitare sto casino, e aggiungere un campo in coda a
quelli esistenti *direttamente* sulla tabella interessata, vi pregherei di
spiegarmi come si può fare o almeno indirizzarmi su un argomento della guida
che tratti questo. il metodo append dell'insieme fields lo si può apoplicare
solo quando il recordset non è aperto (da quel che ho capito) ma così non
serve a un tubo... io devo prima avere l'insieme fields popolato con i campi
della tabella alla quale sono connesso, *dopo* posso aggiungere i campi che
mi servono.
grazie ancora e scusate l'ottusità.... :)
Marco

 ha scritto


 mi servono.
No, se usi le istruzioni dirette alla struttura del database di DAO, non hai
bisogno (anzi, non devi) di far riferimento alle proprietà degli insiemi di
un recordset aperto.
    Dim db As DAO.Database
    Dim tabella As DAO.TableDef
    Dim campo As DAO.Field
    Set db = OpenDatabase("PERCORSO_E_NOME_DATABASE.MDB")
    Set tabella = db.TableDefs("NOME_TABELLA")
    Set campo = tabella.CreateField("NOME_CAMPO", dbText, 25)
    tabella.Fields.Append campo
    db.Close
    Set db = Nothing

Ovviamente, usando DAO, lo stesso (3.6) deve essere fra i riferimenti.

 ha scritto nel messaggio
news:mRvp9.15848$RO.3...@twister1.libero.it...
