Condividi tramite


Collezione Fields

La collezione Fields è una delle raccolte intrinseche di ADO. Una raccolta è un set ordinato di elementi a cui è possibile fare riferimento come unità. Per altre informazioni sulle raccolte ADO, vedere Il modello a oggetti ADO.

L'insieme Fields contiene un oggetto Field per ogni campo (colonna) nel Recordset. Analogamente a tutte le raccolte ADO, include le proprietà Count e Item, nonché i metodi Append e Refresh. Include anche CancelUpdate, Delete, Resynce Update metodi, che non sono disponibili per altre raccolte ADO.

Analisi della Collezione Fields

Si consideri la raccolta di Fields dell'esempio Recordset introdotta in questa sezione. Il recordset di esempio è stato derivato dall'istruzione SQL

SELECT ProductID, ProductName, UnitPrice FROM Products WHERE CategoryID = 7  

Pertanto, si noterebbe che l'insieme Recordset Fields contiene tre campi.

'BeginWalkFields  
    Dim objFields As ADODB.Fields  
    Dim intLoop As Integer  
  
    objRs.Open strSQL, strConnStr, adOpenForwardOnly, adLockReadOnly, adCmdText  
  
    Set objFields = objRs.Fields  
  
    For intLoop = 0 To (objFields.Count - 1)  
        Debug.Print objFields.Item(intLoop).Name  
    Next  
'EndWalkFields  

Questo codice determina semplicemente il numero di oggetti Field nell'insieme Fields utilizzando la proprietà Count e scorre l'insieme, restituendo il valore della proprietà Name per ogni oggetto Field. È possibile usare molte altre proprietà Field per ottenere informazioni su un campo. Per ulteriori informazioni sull'interrogazione di un campo , vedere l'oggetto Campo.

Conteggio colonne

Come previsto, la proprietà Count restituisce il numero effettivo di oggetti Field nell'insieme Fields. Poiché la numerazione per i membri di una raccolta inizia con zero, è consigliabile eseguire sempre cicli di codice che iniziano con il membro zero e terminano con il valore della proprietà count meno 1. Se si utilizza Microsoft Visual Basic e si desidera scorrere i membri di una raccolta senza controllare la proprietà Count, utilizzare il comando For Each...Next.

Se la proprietà Count è zero, nell'insieme non sono presenti oggetti.

Arrivare al campo

Come per qualsiasi insieme ADO, la proprietà Item è la proprietà predefinita dell'insieme. Restituisce il singolo oggetto Field specificato dal nome o dall'indice passato. Di conseguenza, le istruzioni seguenti sono equivalenti per l'esempio Recordset:

objField = objRecordset.Fields.Item("ProductID")  
objField = objRecordset.Fields("ProductID")  
objField = objRecordset.Fields.Item(0)  
objField = objRecordset.Fields(0)  

Se questi metodi sono equivalenti, qual è il migliore? Dipende. L'uso di un indice per recuperare un Field dalla raccolta è più veloce perché accede direttamente al Field senza dover eseguire una ricerca di stringhe. D'altra parte, l'ordine di Fields all'interno dell'insieme deve essere noto e, se l'ordine cambia, il riferimento all'indice del campo di deve essere modificato in ogni occorrenza. Anche se leggermente più lento, l'uso del nome del campo è più flessibile perché non dipende dall'ordine dei campi nella collezione.

Utilizzo del metodo Refresh

A differenza di altre raccolte ADO, l'utilizzo del metodo Refresh nell'insieme Fields non ha alcun effetto visibile. Per recuperare le modifiche dalla struttura di database sottostante, è necessario utilizzare il metodo Requery oppure se l'oggetto recordset non supporta i segnalibri, il metodo MoveFirst, che causerà di nuovo l'esecuzione del comando sul provider.

Aggiunta di campi a un insieme di record

Il metodo Append viene utilizzato per aggiungere campi a un Recordset.

È possibile utilizzare il metodo Append per creare a livello di codice un oggetto Recordset senza aprire una connessione a un'origine dati. Si verificherà un errore di run-time se il metodo Append viene chiamato sull'insieme Fields di un Recordset aperto o su un Recordset in cui è stata impostata la proprietà ActiveConnection. È possibile aggiungere campi solo a un recordset che non è aperto e non è ancora stato connesso a un'origine dati. Tuttavia, per specificare i valori per i campi appena accodati, è necessario aprire prima il recordset .

Gli sviluppatori hanno spesso bisogno di un luogo per archiviare temporaneamente alcuni dati o vogliono che alcuni dati funzionino come se provenissero da un server in modo da poter partecipare al data binding in un'interfaccia utente. ADO (in combinazione con il servizio cursore Microsoft per OLE DB) consente allo sviluppatore di compilare un oggetto Recordset vuoto specificando le informazioni sulla colonna e chiamando Open. Nell'esempio seguente vengono aggiunti tre nuovi campi a un nuovo oggetto Recordset . Viene quindi aperto il recordset, vengono aggiunti due nuovi record e il recordset viene salvato in modo permanente in un file. Per altre informazioni sulla persistenza del recordset di, vedere Aggiornamento e Salvataggio Permanente dei Dati.

'BeginFabricate  
    Dim objRs As ADODB.Recordset  
    Set objRs = New ADODB.Recordset  
  
    With objRs.Fields  
        .Append "StudentID", adChar, 11, adFldUpdatable  
        .Append "FullName", adVarChar, 50, adFldUpdatable  
        .Append "PhoneNmbr", adVarChar, 20, adFldUpdatable  
    End With  
  
    With objRs  
        .Open  
  
        .AddNew  
        .Fields(0) = "123-45-6789"  
        .Fields(1) = "John Doe"  
        .Fields(2) = "(425) 555-5555"  
        .Update  
  
        .AddNew  
        .Fields(0) = "123-45-6780"  
        .Fields(1) = "Jane Doe"  
        .Fields(2) = "(615) 555-1212"  
        .Update  
    End With  
  
    objRs.Save App.Path & "FabriTest.adtg", adPersistADTG  
  
    objRs.Close  
'EndFabricate  

L'utilizzo del metodo Fields Append differisce tra l'oggetto Recordset e l'oggetto Record. Per ulteriori informazioni sull'oggetto Record , vedere Records and Streams .

Vedere anche

creazione di recordset gerarchici