La collection
Fields
e gli oggetti
Field
consentono l'accesso ai singoli dati
che compongono un record. La collection viene gestita tramite il
Recordset, attraverso
la collection si accede ai singoli oggetti
Field che contengono informazioni relative
alla singola colonna (campo) del database.
Si puo' utilizzare l'oggetto
Field
per creare un nuovo record o per modificare dati esistenti, quindi
utilizzare i metodi del
Recordset per aggiornare i dati.
L'esempio seguente utilizza gli oggetti
Field
per reperire informazioni da un
Recordset):
Dim rs As New ADODB.Recordset
Dim fld As ADODB.Field
rs.Open "select * from titles", "DSN=pubs;UID=sa"
Set Flds = rs.Fields
Dim TotalCount As Integer
TotalCount = Flds.Count
i = 0
For Each fld In Flds
Debug.Print fld.Name
Debug.Print fld.Type
Debug.Print fld.Value
Next
rs.Close
Torna alla mappa
Count
|
Indica il numero di oggetti contenuti nell'insieme. e' una
proprieta' di sola lettura. Se il valore restituito e' pari a 0,
l'insieme e' vuoto e non contiene nessun oggetto.
Nota:
La numerazione degli oggetti nell'insieme parte da 0 e non da 1.
|
Append
|
Accoda un nuovo field all'insieme. e' possibile creare un nuovo Field
prima di aggiungerlo all'insieme.
Sintassi
recordset.Fields.Append nome, tipo, size, att
o
recordset.Fields.Append field
Parametri
recordset e' il
Recordset su cui si sta' operando.
nome e' il nome che si vuole assegnare al campo, vedere
Name
tipo e' il tipo di campo da aggiungere, vedere
Type
size e' la dimensione del campo, vedere
Size
att attributi del campo, vedere
Attributes
field e' l'oggetto
Field precedentemente creato.
Prima di chiamare Append
e' necessario impostare la proprieta'
CursorLocation
su adUseClient.
Se si richiama Append per un
Recordset
aperto o su uno per cui sia stata impostata la proprieta'
ActiveConnection.
si verifichera' un errore in fase di esecuzione.
|
Delete
|
Elimina un oggetto dall'insieme.
Sintassi
Recordset.Fields.Delete indice
e' possibile utilizzare
Delete
solamente su
Recordset disconnessi, Se si richiama
Delete
su un
Recordset aperto, si generera' un errore
in fase di elaborazione.
|
Item
|
Restituisce un membro specifico dell'insieme in base al
nome o al numero ordinale.
Sintassi
field = Recordset.Fields.Item( indice )
oggetto e' la variabile Field che ricevera' l'oggetto richiesto
Recordset e' l'oggetto
Recordset su cui si sta' operando
indice e' il nome o il numero ordinale del campo da
reperire.
Osservazioni
Utilizzare Item per reperire
un oggetto specifico nell'insieme. Se non e' possibile trovare
nell'insieme un oggetto corrispondente all'argomento indice,
si verifichera' un errore.
Item e' il metodo predefinito per tutti gli
insiemi, quindi e' possibile utilizzare anche la forma "ridotta"
del metodo.
field = Recordset.Fields(indice)
|
Refresh
|
Questo metodo e' presente solo per compatibilita' con le altre
collection, richiamandolo non si hanno effetti visibili.
Perche' la collection venga aggiornata e' necessario utilizzare
i metodi
Requery
o
Resync
del
Recordset.
|
Attributes
|
Questa proprieta' e' di sola lettura e il suo valore puo'
corrispondere alla somma di uno o piu' dei valori riportati
nella tabella che segue:
- adFldMayDefer
Indica che il campo e' differito, vale a dire che i valori di
campo non vengono recuperati dalla fonte dati con il record
intero, ma solo quando vi si accede esplicitamente.
- adFldUpdatable
Indica che il campo e' scrivibile.
- adFldUnknownUpdatable
Indica che il provider non e' in grado di determinare se il
campo e' scrivibile.
- adFldFixed
Indica che il campo contiene dati a lunghezza fissa.
- adFldIsNullable
Indica che il campo accetta valori Null.
- adFldMayBeNull
Indica che e' possibile leggere i valori Null del campo.
- adFldLong
Indica che il campo e' di tipo binario lungo e che
e' possibile utilizzare i metodi
AppendChunk
e
GetChunk.
- adFldRowID
Indica che il campo contiene un identificatore di riga costante
che non e' scrivibile e presenta un valore descrittivo solo
per l'identificazione della riga, quale un numero di record, un
identificatore univoco e cosi' via.
- adFldRowVersion
Indica che il campo contiene un tipo di indicatore di data e ora
per controllare gli aggiornamenti.
- adFldCacheDeferred
Indica che il provider memorizza nella cache i valori di campo
e che le letture successive vengono effettuate dalla cache.
|
Name
|
Indica il nome del campo.
|
Type
|
Indica il tipo operativo o il tipo di dato del campo, questa
proprieta' e' di sola lettura.
Il valore puo' essere una delle costanti seguenti:
L'indicatore di tipo OLE DB corrispondente e' riportato tra
parentesi. Per ulteriori informazioni sui tipi di dati OLE DB,
consultare il capitolo 10 e l'appendice A della guida di
riferimento per i programmatori di OLE DB.
- adArray
Unito in un operatore logico OR a un altro tipo per indicare che
i dati costituiscono una matrice sicura di quel tipo
(DBTYPE_ARRAY).
- adBigInt
Intero con segno da 8 byte (DBTYPE_I8).
- adBinary
Valore binario (DBTYPE_BYTES).
- adBoolean
Valore booleano (DBTYPE_BOOL).
- adByRef
Unito in un operatore logico OR a un altro tipo per indicare che
i dati costituiscono un puntatore a dati di altro tipo
(DBTYPE_BYREF).
- adBSTR
Stringa di caratteri a terminazione Null (Unicode)
(DBTYPE_BSTR).
- adChar
Valore String (DBTYPE_STR).
- adCurrency
Valore di valuta (DBTYPE_CY). Si tratta di un numero a virgola
fissa con quattro cifre a destra della virgola decimale.
E' memorizzato in un intero con segno da 8 byte scalato
per 10.000.
- adDate
Valore Date (DBTYPE_DATE). Si tratta di una data memorizzata come
Double, la cui parte intera rappresenta il numero di giorni a
partire dal 30 dicembre 1899, mentre la parte
frazionaria rappresenta la frazione di un giorno.
- adDBDate
Valore data (ggmmaaaa) (DBTYPE_DBDATE).
- adDBTime
Valore tempo (oommss) (DBTYPE_DBTIME).
- adDBTimeStamp
Indicatore data/ora (ggmmaaaaoommss piu' una frazione in
miliardesimi) (DBTYPE_DBTIMESTAMP).
- adDecimal
Valore numerico esatto con grado di precisione e di scala
fisso (DBTYPE_DECIMAL).
- adDouble
Valore con virgola mobile in precisione doppia (DBTYPE_R8).
- adEmpty
Non e' stato specificato alcun valore (DBTYPE_EMPTY).
- adError
Codice di errore a 32 bit (DBTYPE_ERROR).
- adGUID
Identificatore univoco globale (GUID) (DBTYPE_GUID).
- adIDispatch
Puntatore a un'interfaccia Idispatch su un oggetto OLE
(DBTYPE_IDISPATCH).
- adInteger
Intero con segno da 4 byte (DBTYPE_I4).
- adIUnknown
Puntatore a un'interfaccia Iunknown su un oggetto OLE
(DBTYPE_IUNKNOWN).
- adLongVarBinary
Valore binario lungo (solo oggetto Parameter).
- adLongVarChar
Valore String lungo (solo oggetto Parameter).
- adLongVarWChar
Valore stringa a terminazione Null lungo
(solo oggetto Parameter).
- adNumeric
Valore numerico esatto con grado di precisione e di scala
fisso (DBTYPE_NUMERIC).
- adSingle
Valore con virgola mobile in precisione semplice (DBTYPE_R4).
- adSmallInt
Intero con segno da 2 byte (DBTYPE_I2).
- adTinyInt
Intero con segno da 1 byte (DBTYPE_I1).
- adUnsignedBigInt
Intero senza segno da 8 byte (DBTYPE_UI8).
- adUnsignedInt
Intero senza segno da 4 byte (DBTYPE_UI4).
- adUnsignedSmallInt
Intero senza segno da 2 byte (DBTYPE_UI2).
- adUnsignedTinyInt
Intero senza segno da 1 byte (DBTYPE_UI1).
- adUserDefined
Variabile definita dall'utente (DBTYPE_UDT).
- adVarBinary
Valore binario (solo oggetto Parameter).
- adVarChar
Valore String (solo oggetto Parameter).
- adVariant
Variant di automazione (DBTYPE_VARIANT).
- adVector
Unito in un operatore logico OR a un altro tipo per indicare che
i dati rappresentano una struttura DBVECTOR, cosi' come viene
definita da OLE DB, nella quale sono inclusi il conteggio degli
elementi e un puntatore a dati di altro tipo (DBTYPE_VECTOR).
- adVarWChar
Stringa di caratteri Unicode a terminazione Null (solo
oggetto Parameter).
- adWChar
Stringa di caratteri Unicode a terminazione Null (DBTYPE_WSTR).
|
Value
|
Contiene il valore del campo. Questa proprieta' e di
lettura/scrittura.
|
ActualSize
|
Indica la lunghezza reale del valore di un campo.
Alcuni provider consentono di impostare questa proprieta' in
modo da destinare spazio per i dati BLOB. In tal caso il valore
predefinito sara' 0.
Utilizzare ActualSize per
restituire la lunghezza reale del valore del campo, la proprieta'
e' di sola lettura per tutti i campi. Se ADO non e' in grado di
determinare la lunghezza del valore, la proprieta' restituisce
adUnknown.
Le proprieta' ActualSize e
DefinedSize
sono diverse: per un campo con un tipo dichiarato di
adVarChar e una lunghezza
massima di 50 caratteri,
DefinedSize restituisce 50,
mentre ActualSize restituisce
la lunghezza dei dati effettivamente memorizzati nel campo.
|
DefinedSize
|
Indica le dimensioni definite del campo.
Restituisce un valore che riflette le dimensioni definite del
campo espresse in numero di byte.
Utilizzare DefinedSize per determinare
la quantita' di dati che e' possibile inserire in un campo.
Le proprieta' ActualSize e
DefinedSize
sono diverse: per un campo con un tipo dichiarato di
adVarChar e una lunghezza
massima di 50 caratteri,
DefinedSize restituisce 50,
mentre ActualSize restituisce
la lunghezza dei dati effettivamente memorizzati nel campo.
|
NumericScale
|
Indica la scala dei valori numerici.
Imposta o restituisce un valore che indica il numero di
cifre decimali in base a cui verranno risolti i valori numerici.
Questo valore e' di sola lettura.
|
OriginalValue
|
Indica il valore di un oggetto campo presente nel record
prima di aver apportato eventuali modifiche.
Osservazioni
Utilizzare questa proprieta' per restituire il valore originale
di un campo dal record corrente. Nella modalita' di aggiornamento
immediato, in cui il provider scrive le modifiche sulla fonte
dati del livello inferiore quando viene chiamato il metodo
Update,
questa proprieta' restituira' il valore di campo antecedente a
eventuali modifiche, vale a dire quello presente l'ultima volta
in cui e' stato chiamato il metodo
Update.
Si tratta dello stesso valore utilizzato dal metodo
CancelUpdate.
per ripristinare le condizioni prima della modifica.
Nella modalita' di aggiornamento batch, in cui il provider
memorizza nella cache le modifiche e le scrive sulla fonte dati
del livello inferiore quando viene chiamato il metodo
UpdateBatch,
questa proprieta' restituira' il valore di campo antecedente a
eventuali modifiche, vale a dire quello presente l'ultima volta
in cui e' stato chiamato il metodo
Update.
Si tratta dello stesso valore utilizzato dal metodo
CancelBatch per ripristinare il valore.
Quando si utilizza questa proprieta' con la proprieta'
UnderlyingValue,
e' possibile risolvere eventuali conflitti risultanti
dall'esecuzione degli aggiornamenti in modalita' batch.
|
Precision
|
Indica il grado di precisione dei valori numerici.
Il valore e' di sola lettura.
|
UnderlyingValue
|
Indica un valore corrente dell'oggetto Field nel database.
Osservazioni
Questa proprieta' viene utilizzata per restituire il valore
corrente dal database. Il valore nella proprieta' corrisponde
al valore visibile alla transazione e puo' corrispondere al
risultato di un recente aggiornamento da parte di un'altra
transazione. Tale valore si differenzia da quello della proprieta'
OriginalValue,
che corrisponde al valore restituito in origine al
Recordset.
Il suo utilizzo e' simile al metodo
Resync,
ma a differenza di quello restituisce soltanto il valore per
un campo specifico del record corrente. Si tratta dello stesso
valore che
Resync utilizza.
L'utilizzo di questa proprieta' con la proprieta'
OriginalValue consente di risolvere
eventuali conflitti originati durante gli aggiornamenti
in modalita' batch.
|
Precision
|
Indica il grado di precisione dei valori numerici nel campo.
Questa proprieta' e' di sola lettura.
|
AppendChunk
|
Accoda dati in formato testo o binario.
Sintassi
field.AppendChunk dati
dati Elemento contenente i dati che si desidera accodare
all'oggetto.
Osservazioni
Utilizzare questo metodo su un campo per inserirvi dati binari
o letterali lunghi. Nel caso in cui la memoria del sistema sia
limitata, sara' possibile utilizzare
AppendChunk
per gestire i valori lunghi in blocchi anziche' integralmente.
Se adFldLong nella proprieta'
Attributes
e' impostato su True, sara' possibile utilizzare
AppendChunk per il campo.
La prima chiamata ad AppendChunk
consente di scrivere dati nel campo sovrascrivendo i dati esistenti.
Le successive chiamate consentono invece di aggiungere dati ai dati
esistenti.
Se si accodano dati in un campo, quindi si imposta o si legge il
valore di un altro campo nel record corrente, si presupporra' che
si e' terminato di accodare dati nel primo campo. Se si chiama
nuovamente
AppendChunk sul primo campo,
la chiamata verra' interpretata come una nuova operazione ed i
dati esistenti verranno sovrascritti. L'accesso ai campi di altri
Recordset che non siano cloni del primo
non interrompera' le operazioni
AppendChunk.
Se non vi e' alcun record corrente al momento della chiamata ad
AppendChunk, si verifichera'
un errore.
|
GetChunk
|
Restituisce l'intero contenuto o una parte del contenuto di un
campo di grandi dimensioni in formato testo o binario.
Sintassi
variabile = campo.GetChunk( size )
variabile e' la variabile che ricevera' i dati
size indica il numero di byte o caratteri da recuperare.
Osservazioni
Utilizzare
GetChunk su un campo di grandi
dimensioni per recuperare tutti i dati binari o letterali o una
parte di essi. Nel caso in cui la memoria del sistema sia limitata,
e' possibile utilizzare
GetChunk
per gestire i valori lunghi in blocchi anziche' integralmente.
I dati restituiti da una chiamata a
GetChunk vengono assegnati
a una variabile. Se size e' maggiore dei dati rimanenti,
il metodo
GetChunk restituira' solo
i dati rimanenti senza inserire spazi vuoti di riempimento nella
variabile. Se il campo e' vuoto,
GetChunk restituira'
Null.
Qualsiasi chiamata successiva a
GetChunk
consentira' di recuperare i dati iniziando da dove si e'
interrotta la chiamata precedente. Se tuttavia si recuperano dati
da un campo, quindi si imposta o si legge il valore di un altro
campo nel record corrente, si presupporra' che l'operazione di
recupero di informazioni dal primo campo sia terminata. Se si
richiama nuovamente
GetChunk sul primo campo, la
chiamata verra' interpretata come una nuova operazione e la
lettura avra' inizio dai primi dati. Accedendo ai campi di altri
Recordset
che non siano cloni del primo non si interromperanno le operazioni
GetChunk.
Se adFldLong nella proprieta'
Attributes
del campo e' impostato su True, sara' possibile utilizzare il
GetChunk per quel campo.
Se non vi e' alcun record corrente quando si utilizza
GetChunk, si verifichera'
un errore.
|
|