Condividi tramite


Oggetto Campo

Ogni oggetto Field corrisponde in genere a una colonna in una tabella di database. Tuttavia, un Field può anche rappresentare un puntatore a un altro Recordset, chiamato capitolo. Le eccezioni, ad esempio le colonne del capitolo, verranno illustrate più avanti in questa guida.

Utilizzare la proprietà Value degli oggetti Field per impostare o restituire dati per il record corrente. A seconda delle funzionalità esposte dal provider, alcuni insiemi, metodi o proprietà di un oggetto Field potrebbero non essere disponibili.

Con le raccolte, i metodi e le proprietà di un oggetto Field, è possibile eseguire le operazioni seguenti:

  • Restituire il nome di un campo utilizzando la proprietà Nome.

  • Visualizzare o modificare i dati nel campo utilizzando la proprietà Valore. Value è la proprietà predefinita dell'oggetto Field.

  • Restituisce le caratteristiche di base di un campo utilizzando le proprietà Type, Precisione NumericScale.

  • Restituire le dimensioni dichiarate di un campo utilizzando la proprietà DefinedSize.

  • Restituisce le dimensioni effettive dei dati in un determinato campo utilizzando la proprietà ActualSize.

  • Determinare quali tipi di funzionalità sono supportati per un determinato campo utilizzando la proprietà Attributes e la raccolta Properties.

  • Modificare i valori dei campi contenenti dati di tipo long binary o long character usando i metodi AppendChunk e GetChunk .

Risolvere le discrepanze nei valori dei campi durante l'aggiornamento batch utilizzando le proprietà OriginalValue e UnderlyingValue, se il provider supporta gli aggiornamenti in batch.

Descrizione di un campo

Gli argomenti seguenti illustrano le proprietà dell'oggetto Field che rappresentano informazioni che descrivono l'oggetto Field stesso, ovvero i metadati relativi al campo. Queste informazioni possono essere usate per determinare molto sullo schema del Recordset . Queste proprietà includono Type, DefinedSize e ActualSize, Namee NumericScale e Precision.

Individuazione del tipo di dati

La proprietà Type indica il tipo di dati del campo. Le costanti enumerate del tipo di dati supportate da ADO sono descritte nella sezione DataTypeEnum del Riferimento per Programmatori ADO.

Per i tipi numerici a virgola mobile, ad esempio adNumeric, è possibile ottenere altre informazioni. La proprietà NumericScale indica quante cifre a destra del punto decimale verranno utilizzate per rappresentare i valori per il campo Field. La proprietà precisione specifica il numero massimo di cifre utilizzate per rappresentare i valori per la Field.

Determinazione delle dimensioni dei campi

Utilizzare la proprietà DefinedSize per determinare la capacità dei dati di un Field.

Utilizzare la proprietà ActualSize per restituire la lunghezza effettiva del valore di un oggetto Field. Per tutti i campi, la proprietà ActualSize è di sola lettura. Se ADO non è in grado di determinare la lunghezza del valore dell'oggetto Field, la proprietà actualSize restituisce adUnknown.

Le proprietà DefinedSize e ActualSize hanno scopi diversi. Si consideri, ad esempio, un oggetto Field con un tipo dichiarato di adVarChar e un valore DefinedSize proprietà pari a 50, contenente un singolo carattere. Il valore della proprietà ActualSize restituito è la lunghezza in byte di un singolo carattere.

Determinazione del contenuto dei campi

L'identificatore della colonna dell'origine dati è rappresentato dalla proprietà Name del Field. La proprietà Value dell'oggetto Field restituisce o imposta il contenuto effettivo dei dati del campo. Questa è la proprietà predefinita.

Per modificare i dati in un campo, impostare la proprietà Valore uguale a un nuovo valore del tipo corretto. Il tipo di cursore deve supportare gli aggiornamenti per modificare il contenuto di un campo. La convalida del database non viene eseguita in modalità batch, pertanto è necessario verificare la presenza di errori quando si chiama UpdateBatch in questo caso. Alcuni provider supportano anche le proprietà UnderlyingValue e OriginalValue dell'oggetto ADO Field per aiutarti a risolvere i conflitti quando tenti di eseguire aggiornamenti in batch. Per informazioni dettagliate su come risolvere tali conflitti, vedere Modifica dei dati.

Nota

Non è possibile impostare i valori del campo di Recordset durante l'aggiunta di nuovi campi a un oggetto Recordset. È invece possibile aggiungere nuovi campi a un oggetto Recordset chiuso. È quindi necessario aprire il recordset e solo allora si possono assegnare i valori a questi campi.

Ottenere altre informazioni sul campo

Gli oggetti ADO hanno due tipi di proprietà: predefinite e dinamiche. A questo punto, sono state illustrate solo le proprietà predefinite dell'oggetto Field.

Le proprietà predefinite sono quelle implementate in ADO e immediatamente disponibili per qualsiasi nuovo oggetto, usando la sintassi MyObject.Property. Non vengono visualizzati come oggetti Property nell'insieme Properties di un oggetto.

Le proprietà dinamiche sono definite dal provider di dati sottostante e vengono visualizzate nell'insieme Properties per l'oggetto ADO appropriato. Ad esempio, una proprietà specifica del provider può indicare se un oggetto Recordset supporta transazioni o aggiornamenti. Queste proprietà aggiuntive verranno visualizzate come oggetti Property nella raccolta Properties dell'oggetto Recordset. È possibile fare riferimento alle proprietà dinamiche solo tramite la raccolta, usando la sintassi MyObject.Properties(0) o MyObject.Properties("Name").

Non è possibile eliminare alcun tipo di proprietà.

Un oggetto Property dinamico dispone di quattro proprietà predefinite proprie:

  • La proprietà Name è una stringa che identifica la proprietà.

  • La proprietà Type è un numero intero che specifica il tipo di dati della proprietà.

  • La proprietà Valore è una variante che contiene l'impostazione della proprietà. Valore è la proprietà predefinita per un oggetto Property.

  • La proprietà Attributes è un valore Long che indica le caratteristiche della proprietà specifica del provider.

L'insieme Properties per l'oggetto Field contiene metadati aggiuntivi sul campo. Il contenuto di questa raccolta varia a seconda del provider. Nell'esempio di codice seguente viene esaminata la collezione di proprietà dell'esempio Recordset introdotto all'inizio di questa sezione. Esamina innanzitutto il contenuto della raccolta. Questo codice usa il provider OLE DB per SQL Server, pertanto la raccolta proprietà contiene informazioni rilevanti per tale provider.

'BeginFieldProps  
    Dim objProp As ADODB.Property  
  
    For intLoop = 0 To (objFields.Count - 1)  
        Debug.Print objFields.Item(intLoop).Name  
  
        For Each objProp In objFields(intLoop).Properties  
            Debug.Print vbTab & objProp.Name & " = " & objProp.Value  
        Next objProp  
    Next intLoop  
'EndFieldProps  

Gestione dei dati binari

Utilizzare il metodo AppendChunk su un oggetto Field per riempirlo con dati binari o di tipo carattere lunghi. In situazioni in cui la memoria di sistema è limitata, è possibile usare il metodo AppendChunk per modificare i valori lunghi in parti anziché in modo completo.

Se il bit adFldLong nella proprietà attributi di un oggetto Field è impostato su True, è possibile utilizzare il metodo AppendChunk per tale campo.

La prima chiamata AppendChunk su un oggetto Field scrive i dati nel campo, sovrascrivendo qualsiasi dato esistente. Le successive chiamate AppendChunk aggiungono ai dati già esistenti. Se si aggiungono dati a un campo e quindi si imposta o si legge il valore di un altro campo nel record corrente, ADO presuppone che i dati vengano accodati al primo campo. Se si chiama di nuovo il metodo AppendChunk sul primo campo, ADO interpreta la chiamata come nuova operazione di AppendChunk e sovrascrive i dati esistenti. L'accesso ai campi in altri oggetti Recordset che non sono cloni del primo oggetto Recordset non interromperà le operazioni di AppendChunk.

Utilizzare il metodo GetChunk su un oggetto Field per recuperare parte o la totalità dei suoi dati binari o caratteri lunghi. In situazioni in cui la memoria di sistema è limitata, è possibile usare il metodo GetChunk per modificare i valori lunghi in parti, anziché nell'intera dimensione.

I dati restituiti da una chiamata GetChunk vengono assegnati alla variabile . Se Size è maggiore dei dati rimanenti, il metodo GetChunk restituisce solo i dati rimanenti senza riempire la variabile con spazi vuoti. Se il campo è vuoto, il metodo GetChunk restituisce un valore Null.

Ogni chiamata successiva GetChunk recupera i dati a partire da dove è stata interrotta la chiamata precedente GetChunk. Tuttavia, se si recuperano dati da un campo e quindi si imposta o si legge il valore di un altro campo nel record corrente, ADO presuppone che sia stato completato il recupero dei dati dal primo campo. Se si chiama nuovamente il metodo GetChunk nel primo campo, ADO interpreta la chiamata come nuova operazione di GetChunk e inizia a leggere dall'inizio dei dati. L'accesso ai campi in altri oggetti Recordset che non sono copie del primo oggetto Recordset non interromperà le operazioni GetChunk .

Se il bit adFldLong nella proprietà Attributes di un oggetto Field di è impostato su True, è possibile utilizzare il metodo GetChunk per tale campo.

Se non è presente alcun record corrente quando si utilizza il GetChunk o metodo AppendChunk su un oggetto Field, si verifica l'errore 3021 (nessun record corrente).

Per un esempio dell'uso di questi metodi per modificare i dati binari, vedere gli esempi del metodo AppendChunk e del metodo GetChunk nel Riferimento del programmatore ADO.