Newsgroup: it.comp.appl.access
Titolo: Modifica tabella via codice

Ciao a tutti.
Devo modificare la struttura di campi in una tabella di un BE.
Con ...CreateField posso aggiungere nuovi campi.
Come posso fare invece a modificare la dimensione
di un campo gia' esistente (di tipo testo) ?
Grazie. ElioP.

in SQL c'e l'istruzione ALTER TABLE nometabella ALTER COLUMN nomecampo
tipodata(dimensione), che serve per modificare i campi dei db.
ho provato ma su jet non sono  riuscito a farlo funzionare, mi da un
errore nell'istruzione sql. In effetti l'help di access riporta solo le
clausole DROP e ADD.......
se qualcuno a tempo e voglia di provare, e magari trova la
soluzione..... sarei curioso anch'io....
saluti
tratto da msdn:
Programmatically modifies the structure of a table.
Syntax
ALTER TABLE TableName1
ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]]
[NOCPTRANS]
[NOVALIDATE]
-or-
ALTER TABLE TableName1
ALTER [COLUMN] FieldName2
[NULL | NOT NULL]
[SET DEFAULT eExpression2]
[SET CHECK lExpression2 [ERROR cMessageText2]]
[DROP DEFAULT]
[DROP CHECK]
[NOVALIDATE]
-or-
ALTER TABLE TableName1
[DROP [COLUMN] FieldName3]
[SET CHECK lExpression3 [ERROR cMessageText3]]
[DROP CHECK]
[ADD PRIMARY KEY eExpression3 TAG TagName2 [FOR lExpression4]]
[DROP PRIMARY KEY]
[ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]]
[DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY [eExpression5] TAG TagName4 [FOR lExpression6]
REFERENCES TableName2 [TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6 [SAVE]]
[RENAME COLUMN FieldName4 TO FieldName5]
[NOVALIDATE]
Arguments
TableName1
Specifies the name of the table whose structure is modified.
ADD [COLUMN] FieldName1
Specifies the name of the field to add. A single table can contain up to
255 fields. If one or more fields allow null values, the limit is
reduced by one to 254 fields.
ALTER [COLUMN] FieldName1
Specifies the name of an existing field to modify.
FieldType [(nFieldWidth [, nPrecision])]
Specifies the field type, field width, and field precision (number of
decimal places) for a new or modified field.
FieldType is a single letter indicating the field's data type. Some
field data types require that you specify nFieldWidth or nPrecision or
both.
The following table lists the values for FieldType and indicates whether
nFieldWidth and nPrecision are required:
FieldType nFieldWidth nPrecision Description
C n – Character field of width n
D – – Date
T – – DateTime
N n d Numeric field of width n with d decimal places
F n d Floating numeric field of width n with d decimal places
I – – Integer
B – d Double
Y – – Currency
L – – Logical
M – – Memo
G – – General
P – – Picture
nFieldWidth and nPrecision are ignored for D, T, I, Y, L, M, G, and P
types. nPrecision defaults to zero (no decimal places) if nPrecision
isn't included for the N, F, or B types.
NULL | NOT NULL


 di un campo gia' esistente (di tipo testo) ?
Tutti gli oggetti hanno delle proprieta' (in genere) modificabili.
Una tabella e' un oggetto TableDef e appartiene all'insieme TableDefs.
Accedi via codice alla tabella come oggetto TableDef e modificane le
proprietà che devi modificare (vedi help per maggiori dettagli)
nella fattispecie, la proprietà che dovresti impostare e' la proprieta' size
del campo della tabella, ma questo, da codice, non si può fare con
semplicita' perche' questa proprieta' e' di sola lettura.
Sei sicuro che non ti convenga impostare la proprieta' a mano aprendo la
tabella in visualizzazione struttura?
L'unico artificio per fare questa operazione da codice e' piuttosto
farraginosa: crei un nuovo campo nella tabella con le proprieta' che ti
servono, copi tutti i dati dal campo originale, elimini il vecchio campo e
rinomini il nuovo con il nome del vecchio. Facile no?
Ciao, Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente