Newsgroup: it.comp.appl.access
Titolo: Introdurre nuovo campo in una tabella

Ciao a tutti.
Un cliente mi ha chiesto delle modifiche per cui devo aggiungere ad una
tabella un'ulteriore colonna il cui contenuto in realtà é derivato dal
contenuto di altre. (non vi sto a raccontare perchè lo *vuole* così!)
La tabella ha più di 50000 (cinquanta mila) record quindi non posso
aggiornarla a mano!
Ho provato con delle query "make table" e "update" ma confesso che non
ci sono riuscito!
La chiave primaria di questa tabella - quindi anche di collegamento ad
altre - é un campo "autonumber" che non viene ripetuto nei dati che
riesco a ottenere.
Nei dati originali, frutto dell'utilizzo, la chiave non inizia più con
"1" e non sempre é consecutiva - invece nei risultati che finora ho
ottenuto mi ritrovo sempre la chiave iniziando con 1 e consecutiva,
distruggendo così il collegamento alle altre tabelle!...
Qualcuno mi aiuterebbe? 
Ringrazio anticipatamente.
G.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:c595e0332c765a95743...@mygate.mailgate.org...

Cominciamo con un esempio per aggiungere un nuovo campo a una tabella 
allegata usando DAOe dal F.E.:
Public Sub NuovoCampo()
 On Error Resume Next
    Dim dbs As Database
    Dim tdf As TableDef, fld1 As Field
    Dim i As Integer
    Set dbs = OpenDatabase("TuaPathENomeDatabase.mdb")
    For i = 1 To dbs.TableDefs.Count
    If dbs.TableDefs(i).Name = "TuaTabella" Then
    Set tdf = dbs.TableDefs(i)
    Exit For
    End If
    Next i
    Set fld1 = tdf.CreateField("TuoNomeCampo", dbText)
    tdf.Fields.Append fld1
    Set dbs = Nothing
    Exit Sub
End Sub
Ora cosa devi accodare o editare in questo nuovo campo?
Ciao, Carlo 

 Ciao, Carlo
Ciao.
Ti ringrazio per l'esempio.
Per continuare, diciamo che devo solo copiare un campo già esistente in
quello nuovo. Da lì sarò capace di continuare.
Un'altra cosa: in questo caso sto lavorando direttamente sullo stesso
DB, non da un FE ad un BE.
Ho provato ad eseguire questo codice ma ha dato subito un'errore nel
"Dim dbs As Database": user-defined type not defined.
Io uso Access 2000. Non é che mi manca qualcosa?


 ha scritto nel messaggio 
news:cbb78d79bab34a43e68...@mygate.mailgate.org...

Sì l'esempio è fatto usando DAO, come ho scritto. Devi impostare nei 
riferimenti il DAO oltre che ADO e dichiarare le variabili in modo 
esplicito:
Dim dbs As Dao.Database...
Veniamo al problema di accodare i dati. Il campo da accodare risiede nella 
stessa tabella? Se sì basta un copia e incolla o una query di accodamento. 
Se no bisogna evitare casini e non accodare dati non pertinenti. Le due 
tabelle sono legate da relazione? Se sì di che tipo...fai un esempio. Fai 
anche un esempio di cosa devi accodare. Il numero di record da accodare e 
pari ai record della prima tabella?

 pari ai record della prima tabella?
Possiamo immaginare che la mia tabella abbia 4 campi:
ID, Data1, Data2, Data3
in cui ID é un "autonumber" nonchč chiave primaria.
La tabella dovrą avere un nuovo campo 'Data4'
Quindi, una volta che avrņ aggiunto al layout della tabella il nuovo
campo, dovrņ, record per record (sono pił di 50000), riempire questo
nuovo campo secondo la formula:
Data4 = (Data3-Data2)/Data1
Questa operazione va fatta solo una volta, perchč in operazione il nuovo
campo verrą normalmente riempito dall'applicazione.
Di per se, non sembra complicato, ma io non sono riuscito a comporre una
query che lo faccia.
Grazie di nuovo.



Che tipo di dati vi sono nei campi Data3 e 2 e data1? Possono contenere 
valori nulli o impostati a zero? Come si chiama la tabella?
Detta così questa istruzione sql dovrebbe funzionare (una query di 
aggiornamento):
UPDATE [TuaTabella] SET [TuaTabella].Data4 = ([data3]-[data1])/[data1];
Ciao, Carlo

 wrote in message
news:eive4l$vk8$
1...@tdi.cu.mi.it

L'avevo già provato e non aveva funzionato.
Ecco perchè mi ro buttato su tabelle di appoggio e compagnia e quindi i
problemi con gli "autonumber" i tutto il resto.
Questo tuo suggerimento é stato come una conferma, quindi mi ha indotto
a riverificare tutto e ho trovato dove sbagliavo.
Ora ho la mia tabella aggiornata!
Grazie 10^6!!!
