Fields
Proprietà
Count
Metodi
Append,
Delete,
Item,
Refresh
|
|
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 può utilizzare l'oggetto
Field
per creare un nuovo record o per modificare dati
esistenti, quindi utilizzare i metodi
del
Recordset
per aggiornare i dati (solo se il
Recordset).
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
|
Proprietà
|
|
Count |
Indica il numero di oggetti contenuti nell'insieme. è una proprietà di sola
lettura. Se il valore restituito è pari a 0, l'insieme è vuoto e non contiene
nessun oggetto.
Nota:
La numerazione degli oggetti nell'insieme parte da 0 e non da 1.
|
|
Metodi
|
|
Append |
Accoda un nuovo field all'insieme. è 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 è il
Recordset
su cui si stà operando.
nome è il nome che si vuole assegnare al campo, vedere
Name
tipo è il tipo di campo da aggiungere, vedere
Type
size è la dimensione del campo, vedere
Size
att attributi del campo, vedere
Attributes
field è l'oggetto
Field precedentemente creato.
Prima di chiamare Append è necessario
impostare la proprietà
CursorLocation
su adUseClient.
Se si richiama Append per un
Recordset
aperto o su uno per cui sia stata impostata la proprietà
ActiveConnection.
si verificherà un errore in fase di esecuzione.
|
Delete |
Elimina un oggetto dall'insieme.
Sintassi
Recordset.Fields.Delete indice
è possibile utilizzare
Delete
solamente su
Recordset
disconnessi, Se si richiama
Delete
su un
Recordset
aperto, si genererà 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 è la variabile Field
che riceverà l'oggetto richiesto
Recordset è l'oggetto
Recordset
su cui si stà operando
indice è il nome o il numero ordinale del campo da reperire.
Osservazioni
Utilizzare Item per reperire un oggetto
specifico nell'insieme. Se non è possibile trovare nell'insieme un oggetto corrispondente
all'argomento indice, si verificherà un errore.
Item è il metodo predefinito per tutti gli
insiemi, quindi è possibile utilizzare anche la forma "ridotta" del metodo.
field = Recordset.Fields(indice)
|
Refresh |
Questo metodo è presente solo per compatibilità con le altre collection,
richiamandolo non si hanno effetti visibili. Perchè la collection venga aggiornata
è necessario utilizzare i metodi
Requery
o
Resync
del
Recordset.
|
|
Field
Proprietà
Attributes,
Name,
Type,
Value,
ActualSize,
DefinedSize,
NumericScale,
OriginalValue,
Precision,
UnderlyingValue,
Precision
Metodi
AppendChunk,
GetChunk
|
|
Torna alla mappa
|
Proprietà
|
|
Attributes |
Questa proprietà è di sola lettura e il suo valore puņ corrispondere alla somma
di uno o più dei valori riportati nella tabella che segue:
- adFldMayDefer
Indica che il campo è 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 è scrivibile.
- adFldUnknownUpdatable
Indica che il provider non è in grado di determinare se il campo è scrivibile.
- adFldFixed
Indica che il campo contiene dati a lunghezza fissa.
- adFldIsNullable
Indica che il campo accetta valori Null.
- adFldMayBeNull
Indica che è possibile leggere i valori Null
del campo.
- adFldLong
Indica che il campo è di tipo binario lungo e che è possibile utilizzare i metodi
AppendChunk
e
GetChunk.
- adFldRowID
Indica che il campo contiene un identificatore di riga costante che non è scrivibile
e presenta un valore descrittivo solo per l'identificazione della riga, quale un
numero di record, un identificatore univoco e così 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 proprietà
è di sola lettura.
Il valore può essere una delle costanti seguenti:
L'indicatore di tipo OLE DB corrispondente è 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. Č 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 più 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 è 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, così 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 proprietà e di lettura/scrittura.
|
ActualSize |
Indica la lunghezza reale del valore di un campo.
Alcuni provider consentono di impostare questa proprietà in modo da destinare
spazio per i dati BLOB. In tal caso il valore predefinito sarà 0.
Utilizzare ActualSize per restituire la
lunghezza reale del valore del campo, la proprietà è di sola lettura per tutti i campi.
Se ADO non è in grado di determinare la lunghezza del valore, la proprietà restituisce
adUnknown.
Le proprietà 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 quantità di dati che è possibile inserire in un campo.
Le proprietà 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 è di sola lettura.
|
OriginalValue |
Indica il valore di un oggetto campo presente nel record prima di aver apportato
eventuali modifiche.
Osservazioni
Utilizzare questa proprietà per restituire il valore originale di un campo
dal record corrente. Nella modalità di aggiornamento immediato, in cui il
provider scrive le modifiche sulla fonte dati del livello inferiore quando viene
chiamato il metodo
Update,
questa proprietà restituirà il valore di campo antecedente a eventuali modifiche,
vale a dire quello presente l'ultima volta in cui è stato chiamato il metodo
Update.
Si tratta dello stesso valore utilizzato dal metodo
CancelUpdate.
per ripristinare le condizioni prima della modifica.
Nella modalità 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 proprietà restituirà il valore di campo antecedente a eventuali modifiche,
vale a dire quello presente l'ultima volta in cui è stato chiamato il metodo
Update.
Si tratta dello stesso valore utilizzato dal metodo
CancelBatch
per ripristinare il valore.
Quando si utilizza questa proprietà con la proprietà
UnderlyingValue,
è possibile risolvere eventuali conflitti risultanti dall'esecuzione degli
aggiornamenti in modalità batch.
|
Precision |
Indica il grado di precisione dei valori numerici.
Il valore è di sola lettura.
|
UnderlyingValue |
Indica un valore corrente dell'oggetto Field nel database.
Osservazioni
Questa proprietà viene utilizzata per restituire il valore corrente dal database.
Il valore nella proprietà corrisponde al valore visibile alla transazione e puņ
corrispondere al risultato di un recente aggiornamento da parte di un'altra transazione.
Tale valore si differenzia da quello della proprietà
OriginalValue,
che corrisponde al valore restituito in origine al
Recordset.
Il suo utilizzo è 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 proprietà con la proprietà
OriginalValue
consente di risolvere eventuali conflitti originati durante gli aggiornamenti
in modalità batch.
|
Precision |
Indica il grado di precisione dei valori numerici nel campo.
Questa proprietà è di sola lettura.
|
|
Metodi
|
|
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, sarà possibile utilizzare
AppendChunk per gestire i valori lunghi
in blocchi anzichè integralmente.
Se adFldLong nella proprietà
Attributes
è impostato su True, sarà 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 presupporrà che si è terminato di
accodare dati nel primo campo. Se si chiama nuovamente
AppendChunk sul primo campo,
la chiamata verrà 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 interromperà le operazioni
AppendChunk.
Se non vi è alcun record corrente al momento della chiamata ad
AppendChunk, si verificherà 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 è la variabile che riceverà 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, è possibile utilizzare
GetChunk per gestire i valori lunghi
in blocchi anzichè integralmente.
I dati restituiti da una chiamata a
GetChunk vengono assegnati a una
variabile. Se size è maggiore dei dati rimanenti, il metodo
GetChunk restituirà solo i dati
rimanenti senza inserire spazi vuoti di riempimento nella variabile. Se il
campo è vuoto, GetChunk restituirà
Null.
Qualsiasi chiamata successiva a GetChunk
consentirà di recuperare i dati iniziando da dove si è 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 presupporrà che l'operazione di recupero di informazioni dal primo campo
sia terminata. Se si richiama nuovamente
GetChunk sul primo campo, la
chiamata verrà interpretata come una nuova operazione e la lettura avrà 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 proprietà
Attributes
del campo è impostato su True, sarà possibile utilizzare il
GetChunk per quel campo.
Se non vi è alcun record corrente quando si utilizza
GetChunk, si verificherà
un errore.
|
|