Il Modello ad Oggetti di ADO - Il Recordset


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Login/Register

Attenzione: Causa la quantita' di informazioni, questa pagina e' divisa in due. In questa meta' si trovano le proprieta', i metodi sono invece in questa.

Il RecordSet fornisce dei metodi per manipolare ed accedere ai risultati di una query o di una Stored Procedure.

L'oggetto fornisce i metodi necessari per aggiungere, aggiornare, cancellare e scorrere i records che compongono il recordset stesso.

Ogni record puo' essere reperito ed aggiornato utilizzando la collection Fields ed i corrispondenti oggetti Field che essa contiene. Ogni Field fornisce informazioni ed il contenuto del singolo campo.

Quando un RecordSet e' creato, un cursore e' automaticamente aperto per permettere l'accesso ai dati.

Il Recordset consente di specificare il tipo di cursore e la locazione per il reperimento dei dati. Con la proprieta' CursorType e' possibile specificare il tipo di cursore da utilizzare. Un cursore puo' essere Forward-Only, Static, Keyset-Driven o Dynamic. Il tipo di cursore determina se il Recordset puo' essere "scorso" in avanti e all'indietro o aggiornato.

Il tipo di cursore influisce anche sulla visibilita' dei cambiamenti sui singoli record.

Per default, il cursore e' di tipo Read-Only e Forward-Only, cioe' e' di sola lettura (non si possono modificare i dati) e puo' essere "scorso" solo in avanti.

Si puo' specificare l'utilizzo di un cursore Client-Side o Server-Side usando la proprieta' CursorLocation. La "locazione" del cursore gioca un ruolo molto importante nei Recordset Disconnessi.

Un Recordset puo' essere creato tramite il metodo Connection.Execute o Command.Execute, oppure puo' essere creato a se' stante e quindi "aperto" mediante Open.

Questo esempio usa una Connection per creare e reperire un Recordset:


Dim rs As New ADODB.Recordset
rs.Open "select * from titles", "DSN=pubs;UID=sa"
While (Not rs.EOF)
Debug.Print rs(0)
rs.MoveNext
Wend
rs.Close

Torna alla mappa

AbsolutePage

Imposta o restituisce un valore compreso tra 1 e il numero di "pagine" contenute nel Recordset, oppure restituisce una delle seguenti costanti:

  • adPosUnknown
    Il Recordset e' vuoto, la posizione corrente e' sconosciuta o il provider non supporta questa proprieta'.
  • adPosBOF
    Il puntatore del record corrente si trova in corrispondenza dell'inizio del file, vale a dire BOF e' True.
  • adPosEOF
    Il puntatore del record corrente si trova in corrispondenza della fine del file, vale a dire EOF e' True.

Osservazioni
Utilizzare questa proprieta' per leggere o impostare la pagina attuale. Se si imposta la pagina attuale il Recordset si posizionera' automaticamente sul primo record della "pagina" selezionata.

Per ottenere il numero totale di pagine, utilizzare PageCount.

Utilizzare PageSize per impostare il numero di record che costituiscono ogni pagina.

Nota: la possibilita' di gestire le "pagine" e' fornita dal driver di database che si sta' utilizzando. Non e' detto che tutti i driver forniscano questa possibilta'.

AbsolutePosition

Consente di specificare la posizione ordinale del record corrente.

Imposta o restituisce un valore compreso tra 1 e il numero di record totali contenuti nel Recordset (RecordCount) oppure restituisce una delle seguenti costanti:

  • adPosUnknown
    Il Recordset e' vuoto, la posizione corrente e' sconosciuta oppure il driver non supporta il posizionamento assoluto.
  • adPosBOF
    Il puntatore del record corrente si trova in corrispondenza dell'inizio del recordset.
  • adPosEOF
    Il puntatore del record corrente si trova in corrispondenza della fine del recordset.

Osservazioni
Utilizzare questa proprieta' per posizionarsi su di un record in base alla sua posizione all'interno del Recordset, oppure per determinare la posizione del record corrente. Il driver deve supportare il posizionamento assoluto.

Per ottenere il numero totale di record interrgoare RecordCount.

Quando si imposta AbsolutePosition, anche se su un record della cache corrente, ADO carica di nuovo nella cache un nuovo gruppo di record a partire dal record specificato. CacheSize determina le dimensioni del gruppo.

Nota La posizione di un record puo' cambiare se altri record vengono aggiunti o eliminati dal Recordset, inoltre la posizione varia in funzione dell'ordinamento che viene impostato. Non utilizzare pertanto AbsolutePosition come identificativo di un record. Utilizzare invece i Bookmark per questo scopo.

ActiveConnection

Ritorna o imposta la Connection a cui e' collegato il Recordset.

Osservazioni
Per Recordset aperti o per Recordset la cui proprieta' Source e' impostata su un Command valido, questa proprieta' e' di sola lettura, in tutti gli altri casi puo' essere modificata.

E' possibile impostare questa proprieta' su una Connection esistente o su una stringa di connessione valida. In questo caso il provider creera' una nuova connessione utilizzando questa definizione. Il provider potra' inoltre impostare questa proprieta' alla nuova Connection in modo da ottenere informazioni piu' complete sull'errore o eseguire altri comandi.

Se si utilizza conn di Open per aprire il Recordset, ActiveConnection ne ereditera' il valore.

Se si imposta Source su un Command valido, questa proprieta' ereditera' l'impostazione della equivalente proprieta' del Command usato.

Utilizzo di Remote Data Service
Se utilizzata su un Recordset del client (ADOR), questa proprieta' può essere impostata solo su una stringa di connessione o su Nothing in Microsoft Visual Basic o VBScript.

BOF ed EOF

  • BOF indica che il record corrente si trova prima del primo record del Recordset
  • EOF indica che il record corrente si trova dopo l'ultimo record del Recordset

Le proprieta' BOF ed EOF restituiscono TRUE o FALSE

Osservazioni
Utilizzare queste proprieta per stabilire se il Recodset contiene dei dati oppure se sono stati superati i limiti durante lo spostamento nell'insieme dei record.

BOF restituisce True se il record corrente si trova prima del primo record e False in qualunque altro caso.

EOF restituisce True se il record corrente si trova dopo l'ultimo record e False in qualunque altro caso.

Se il Recordset e' vuoto (non contiene nessun record), entrambe le proprieta' ritornano True.

Nota:
Se si elimina l'ultimo record del Recordset, e' possibile che BOF ed EOF ritornino False, fino a che non si prova a spostare il record corrente.

Bookmark

Restituisce un "segnalibro" che identifica in modo univoco il record corrente, oppure imposta il record corrente sul record identificato da un segnalibro valido.

Osservazioni
Utilizzare questa proprieta' per salvare la posizione attuale all'interno del Recordset e per ritornare al record in qualsiasi momento. I segnalibri sono disponibili solo se il Driver supporta la funzionalita' e se il Recordset e' stato aperto con le opzioni di posizionamento assoluto (vedere Open).

Quando si accede ad un Recordset, ciascuno dei record dispone di un segnalibro univoco. Per memorizzare il segnalibro del record corrente, leggere il valore di Bookmark e memorizzarlo in una variabile, per ritornare a quel record in qualunque momento, impostare Bookmark al valore precedentemente letto.

Il valore letto da Bookmark potrebbe non essere visualizzabile.

Se si utilizza Clone per creare una copia del Recordset, i Bookmark dei due Recordset saranno perfettamente identici.

La proprieta' Bookmark e' sempre disponibile quando e' utilizzata sui Recordset del client (ADOR).

CacheSize

Indica il numero di record memorizzati nella cache locale.

Osservazioni
Utilizzare questa proprieta' per controllare il numero di record mantenuti dal driver nel buffer e il numero di record da recuperare contemporaneamente nella memoria locale. Se ad esempio il valore e' 10, dopo aver aperto il Recordset, il driver recuperera' i primi 10 record nella memoria locale.

Durante gli spostamenti all'interno del Recordset, il driver restituira' i dati presenti nel buffer finche' non si cerca di superare i limiti della cache, a questo punto il driver recuperera' un altro gruppo di record dal database.

Il valore di CacheSize puo' essere modificato anche se il Recordset e' aperto, la modifica del valore tuttavia ha effetto solo sul numero di record contenuti nella cache dopo l'esecuzione di piu' letture successive.

Se sono disponibili meno record di quelli specificati in CacheSize, il provider restituira' i record restanti senza generare alcun errore.

Il valore di CacheSize deve essere >=1.

I record memorizzati nella cache non riflettono le modifiche contemporanee apportate da altri utenti sul database. Per eseguire un aggiornamento di tutti i dati nella cache, utilizzare Resync.

CursorLocation

Imposta o restituisce la posizione del motore del cursore.

Osservazioni
Consente di scegliere tra varie librerie di cursori accessibili da parte del driver. E' in genere possibile scegliere se utilizzare una libreria di cursori del client oppure una presente sul server. L'impostazione della proprieta' non ha effetto sulle connessioni gia' aperte. Inoltre non e' possibile modificarla se la connessione e' gia' aperta.

I cursori ottenuti usando la Connection.Execute erediteranno quest'impostazione. I Recordset erediteranno automaticamente quest'impostazione dalle relative connessioni.

Valori possibili:

  • adUseNone
    Non sono utilizzati servizi del cursore. Questa costante non e' aggiornata ed e' disponibile solo per garantire la compatibilita' con le versioni precedenti.
  • adUseClient
    Utilizza i cursori del client forniti da una libreria di cursori locale.

    I motori di cursore locale consentono in genere di eseguire molte funzioni non supportate dai cursori forniti da driver. Utilizzando quindi tale impostazione sara' possibile usufruire dei vantaggi offerti dalle funzioni che verranno abilitate.

    Per garantire la compatibilita' con le versioni precedenti, e' supportato anche il sinonimo adUseClientBatch.

  • adUseServer
    Predefinita. Utilizza cursori forniti da driver o dal provider di dati. Si tratta a volte di cursori molto flessibili che garantiscono una riservatezza supplementare per le modifiche apportate da altri utenti alla fonte dati. Alcune funzioni del Microsoft Client Cursor Provider, quali i recordset non associati, non possono essere simulate con i cursori del server, rendendo quindi tali funzioni non disponibili con questa impostazione.

Utilizzo di Remote Data Service
Quando viene utilizzata su un Recordset o Connection del client (ADOR), questa proprieta' può essere impostata solo su adUseClient.

CursorType

Indica il tipo di cursore utilizzato.

Valori possibili:

  • adOpenForwardOnly
    Valore predefinito. Cursore a scorrimento in avanti. Si comporta come un cursore statico tranne per il fatto che consente di scorrere i record solo in avanti. In questo modo e' possibile ottenere un miglioramento delle prestazioni quando e' necessario effettuare un unico passaggio all'interno di un recordset.
  • adOpenKeyset
    Cursore direzionale. Si comporta in modo simile a un cursore dinamico ad eccezione del fatto che non consente di visualizzare record aggiunti da altri utenti, anche se i record eliminati da altri utenti non sono accessibili dal proprio recordset. I dati modificati da altri utenti sono ancora visibili.
  • adOpenDynamic
    Cursore dinamico. Consente di visualizzare aggiunte, modifiche ed eliminazioni eseguite da altri utenti e di effettuare tutti i tipi di movimento tramite il recordset, ad eccezione dei segnalibri se non supportati dal provider.
  • adOpenStatic
    Cursore statico. Copia statica di un set di record da utilizzare per Ricerca di dati o la generazione di relazioni. Le aggiunte, modifiche o eliminazioni eseguite da altri utenti non sono visibili.

Osservazioni
Utilizzare questa proprieta' per specificare il tipo di cursore da utilizzare quando viene aperto il Recordset. La proprieta' e' di lettura/scrittura quando il Recordset e' chiuso e di sola lettura quando e' aperto.

Se viene impostato un valore non supportato, non verra' generato alcun errore e verra' utilizzato il tipo di cursore supportato piu' vicino.

Se il driver non supporta il tipo di cursore richiesto, e' possibile che ne venga restituito un tipo diverso. CursorType verra' modificata in modo da corrispondere al tipo di cursore attualmente in uso quando il Recordset e' aperto. Per verificare la funzionalita' specifica del cursore restituito, utilizzare Supports.

Nella tabella che segue viene illustrata la funzionalita' del driver (identificata dalle costanti di Supports) necessaria per ciascun tipo di cursore.

Per un Recordset del tipo indicato, Supports dovra' restituire True per tutte le costanti indicate di seguito:

Tipo cursore Costanti
adOpenForwardOnly nessuna
adOpenKeyset adBookmark, adHoldRecords, adMovePrevious, adResync
adOpenDynamic adMovePrevious
adOpenStatic adBookmark, adHoldRecords, adMovePrevious, adResync

Nota Anche se Supports (adUpdateBatch) puo' risultare valida per cursori dinamici e a scorrimento in avanti, si consiglia di utilizzare un cursore statico o direzionale per gli aggiornamenti batch. Impostare LockType su adLockBatchOptimistic e CursorLocation su adUseClient per abilitare il Microsoft Client Cursor Engine, necessario per gli aggiornamenti batch.

Utilizzo di Remote Data Service
Quando CursorType viene utilizzata su un Recordset del client (ADOR), puo' essere impostata solo su adOpenStatic.

EditMode

Indica se il record corrente e' in fase di modifica oppure no. Questa proprieta' e' di sola lettura, il suo valore puo' essere:

  • adEditNone
    Indica che non e' in esecuzione alcuna operazione di modifica.
  • adEditInProgress
    Indica che i dati nel record corrente sono stati modificati ma non salvati.
  • adEditAdd
    Indica che e' stato chiamato AddNew e che il record corrente e' un nuovo record non salvato nel database.
  • adEditDelete
    Indica che il record corrente e' stato eliminato.

Osservazioni
ADO gestisce un buffer di modifica associato al record corrente. Questa proprieta' indica se sono state apportate modifiche al buffer o se e' stato creato un nuovo record. E' possibile verificare le modifiche in sospeso qualora sia stato interrotto un processo di modifica e determinare se sia necessario utilizzare Update o CancelUpdate.

Vedere anche AddNew per una descrizione piu' dettagliata di EditMode in condizioni di modifica diverse.

Filter

Consente di specificare un filtro sui dati del Recordset.

Impostazioni e valori restituiti
Imposta o restituisce un valore che contiene uno degli elementi seguenti:

  • Stringa di criterio
    una stringa costituita da uno o piu' proposizioni concatenate con gli operatori AND o OR.
  • Serie di segnalibri
    una serie di valori di segnalibro univoci che si riferiscono ai record dell'oggetto Recordset.
  • Una delle seguenti costanti:
    • adFilterNone
      Rimuove il filtro corrente e ripristina tutti i record da visualizzare.
    • adFilterPendingRecords
      Consente di visulizzare solo i record modificati ma non inviati al server. Applicabile solo per la modalita' di aggiornamento batch.
    • adFilterAffectedRecords
      Consente di visualizzare solo i record interessati dall'ultima chiamata Delete, Resync, UpdateBatch, o CancelBatch.
    • adFilterFetchedRecords
      Consente di visualizzare i record della cache corrente, vale a dire i risultati dell'ultima chiamata, per recuperare record dal database.
    • adFilterConflictingRecords
      Consente di visualizzare i record che non sono stati aggiornati in modalita' batch nel corso dell'ultimo tentativo.

Osservazioni
Utilizzare questa proprieta' per scegliere in modo selettivo i record del Recordset. Questa operazione ha effetto su altre proprieta' quali AbsolutePosition, AbsolutePage, RecordCount e PageCount che restituiscono valori basati sul cursore corrente, poiche' l'impostazione di Filter su un valore specifico spostera' il record corrente sul primo record che soddisfa il criterio indicato.

La stringa di criteri e' costituita da proposizioni del tipo NomeCampo-Operatore-Valore, ad esempio:


"LastName = 'Smith'"

E' possibile creare proposizioni composte concatenando proposizioni singole con AND o OR:


"LastName = 'Smith' AND FirstName = 'John'"
"LastName = 'Smith' OR LastName = 'Jones'"

NomeCampo deve corrispondere a un nome di campo valido dal Recordset. Se il nome di campo contiene spazi, e' necessario racchiudere il nome tra parentesi quadre.

Operatore deve corrispondere a uno degli elementi: <, >, <=, >=, <>, = oppure LIKE.

Valore corrisponde al valore con cui verranno confrontati i valori di campo, ad esempio 'Smith', #8/24/95#, 12,345 o L. 50.000. Utilizzare le virgolette singole con le stringhe e diesis (#) con le date. E' possibile ad esempio utilizzare le virgole decimali, i segni di dollaro e la notazione scientifica.

Se Operatore corrisponde a LIKE, in Valore potranno essere utilizzati caratteri jolly. Sono consentiti solo l'asterisco (*) e il segno percentuale (%) purche' siano l'ultimo carattere della stringa. Valore non puo' essere Null.

Non c'e' precedenza tra AND e OR. È possibile raggruppare le proposizioni tra parentesi. Non e' tuttavia possibile raggruppare le proposizioni unite da OR e quindi unire il gruppo a un'altra proposizione con AND:


(LastName = 'Smith' OR LastName = 'Jones') AND _
FirstName = 'John'
(LastName = 'Smith' AND FirstName = 'John') OR _
(LastName = 'Jones' AND FirstName = 'John')

Le costanti del filtro facilitano la risoluzione dei conflitti tra record singoli durante l'aggiornamento in modalita' batch, consentendo di visualizzare ad esempio solo i record modificati durante l'ultima chiamata del metodo UpdateBatch.

E' possibile che Filter non possa essere impostata a causa di un conflitto con i dati del livello inferiore, quando ad esempio un record sia gia' stato eliminato da un altro utente. In tal caso il provider restituira' degli avvisi all'insieme Errors ma non interrompera' l'esecuzione del programma. Si verifichera' un errore in fase di esecuzione solo se esistono conflitti su tutti i record richiesti. Utilizzare Status per individuare i record che presentano conflitti.

Impostando Filter su una stringa di lunghezza zero ("") si otterra' lo stesso risultato ottenuto utilizzando la costante adFilterNone.

Quando viene impostato Filter, la posizione del record corrente viene spostata sul primo record all'interno del sottogruppo filtrato di record del Recordset. Quando il filtro viene eliminato, la posizione del record corrente viene spostata sul primo record del Recordset.

Vedere la proprieta' Bookmark per una descrizione dei valori di segnalibro da cui e' possibile creare una serie da utilizzare con Filter.

LockType

Indica il tipo di Lock utilizzato durante la fase di modifica dei dati.

Valori possibili:

  • adLockReadOnly
    Valore predefinito. Di sola lettura: non e' possibile modificare i dati.
  • adLockPessimistic
    Blocco pessimistico, record per record: il provider esegue le operazioni necessarie per completare la modifica dei record, in genere bloccando i record nella fonte dati subito dopo la modifica.
  • adLockOptimistic
    Blocco ottimistico, record per record: il provider blocca i record solo quando viene chiamato il metodo Update.
  • adLockBatchOptimistic
    Aggiornamenti batch ottimistici: necessari per la modalita' di aggiornamento batch rispetto a quella di aggiornamento immediato.

Osservazioni
Utilizzare questa proprieta' prima di aprire il Recordset per specificare il tipo di lock da utilizzare durante le modifiche. Leggere il valore per conoscere il tipo di lock in uso da un Recordset gia' aperto. La proprieta' e' di lettura/scrittura quando il Recordset e' chiuso e di sola lettura quando e' aperto.

E' possibile che il driver non supporti tutti i tipi di lock. Se il tipo di lock richiesto non e' supportato verra' sostituito con un altro supportato. Per determinare la funzionalita' di lock disponibili utilizzare Supports con adUpdate e adUpdateBatch.

Se CursorLocation e' impostata su adUseClient, l'impostazione adLockPessimistic non sara' supportata.

Utilizzo di Remote Data Service
Quando si usa un Recordset del client (ADOR), l'unico valore valido di lock e' adLockOptimisticBatch.

MarshalOptions

Quando si utilizza un Recordset del client (ADOR), i record modificati sul client vengono riscritti sul livello intermedio o sul server Web utilizzando una tecnica denominata marshaling. Con questo termine si indica il processo di assemblaggio e invio dei parametri di metodo dell'interfaccia attraverso limiti di thread o processo.

L'impostazione di MarshalOptions consente di ottenere un sensibile miglioramento delle prestazioni quando i dati remoti modificati vengono inviati di nuovo al livello intermedio o al server Web per l'aggiornamento.

I valori possibili sono:

  • adMarshalAll
    Valore predefinito. Indica che tutte le righe verranno restituite al server.
  • adMarshalModifiedOnly
    Indica che solo le righe modificate verranno restituite al server.

MaxRecords

Utilizzare questa proprieta' per limitare il numero di record che il driver restituira' dalla fonte dati. L'impostazione predefinita di questa proprieta' e' zero, vale a dire che il provider restituira' tutti i record richiesti.

La proprieta' e' di lettura/scrittura quando il Recordset e' chiuso e di sola lettura quando e' aperto.

PageCount

Utilizzare questa proprieta' per determinare il numero di "pagine" di dati contenute nel Recordset.

Le pagine sono gruppi di record le cui dimensioni sono pari all'impostazione di PageSize. Anche se l'ultima pagina e' incompleta, poiche' e' disponibile un numero minore di record rispetto al valore di PageSize, verra' contata come pagina supplementare nel valore di PageCount.

Se il Recordset non supporta questa proprieta', verra' restituito -1 a indicare che non e' possibile determinarne il valore.

Per ulteriori informazioni sulla funzionalita' delle pagine, vedere anche PageSize e AbsolutePage.

PageSize

Indica il numero di record che costituiscono una "pagina" del Recordset.

Il valore predefinito e' 10.

Osservazioni
Utilizzare questa proprieta' per determinare il numero di record che costituiscono una pagina logica di dati. L'impostazione delle dimensioni di una pagina consente di utilizzare AbsolutePage per spostarsi sul primo record di una pagina specifica. Si tratta di una funzione utile in ambienti basati su server Web, quando si desidera consentire all'utente di scorrere i dati visualizzando ogni volta solo un numero limitato di record.

Questa proprieta' può essere impostata in qualsiasi momento e il valore ottenuto verra' utilizzato per calcolare la posizione del primo record di una pagina specifica.

RecordCount

Indica il numero corrente di record contenuti nel Recordset.

Osservazioni
La proprieta' restituira' -1 se il driver non e' in grado di determinare il numero di record. Se la viene letta in un Recordset chiuso, verra' restituito un errore.

Se il Recordset supporta il posizionamento approssimativo o i segnalibri, vale a dire Supports(adApproxPosition) o Supports(adBookmark), RecordCount restituira' il numero esatto di record presenti indipendentemente dal fatto che il RecordSet sia stato completamente compilato oppure no.

In caso contrario e' possibile che il driver tenti il recupero ed il conteggio di tutti i record in modo da restituire un valore preciso.

Sort

Permette di specificare uno o piu' nomi di campo in base ai quali viene effettuato l'ordinamento del Recordset, nonche' il tipo di ordinamento, crescente o decrescente.

Il valore deve essere una stringa di nomi di campo separati da virgole, se il nome del campo e' preceduto dalla parola chiave ASCENDING verra' usato un ordinamento crescente, se viene usata la parola chiave DESCENDING verra' usato l'ordinamento decrescente.

I dati non vengono riordinati fisicamente, ma l'accesso viene eseguito in base alla sequenza di ordinamento.

Se CursorLocation e' impostata su adUseClient e non e' ancora disponibile alcun indice, per ciascun campo specificato verra' creato un indice temporaneo.

Impostando questa proprieta' su una stringa vuota verra' ripristinato l'ordinamento originale delle righe e verranno eliminati gli indici temporanei, mentre gli indici esistenti non verranno cancellati.

Source

Indica l'origine dei dati del Recordset, cioe' una istruzione SQL, il nome di una tabella, un oggetto Command o il nome di una Stored Procedure.

Osservazioni
Questa proprieta' viene utilizzata per specificare una fonte dati per il Recordset utilizzando un'oggetto Command oppure un'istruzione SQL o una stored procedure o un nome di tabella. La proprieta' e' di lettura/scrittura se il Recordset e' chiuso e di sola lettura quando il Recordset e' aperto.

Se la Source viene impostata su un oggetto Command, la proprieta' ActiveConnection del Recordset ereditera' il valore della stessa proprieta' dell'oggetto Command specificato. La lettura della proprieta' tuttavia non restituira' un oggetto Command bensi' la proprieta' CommandText dell'oggetto Command.

Se Source e' un'istruzione SQL, una stored procedure o un nome di tabella, sara' possibile ottimizzare le prestazioni richiamando l'argomento opz appropriato tramite Open.

State

Indica lo stato corrente del Recordset che esegue un metodo asincrono ovvero se e' in fase di connessione, di esecuzione o se sta eseguendo un'operazione di fetch.

Il valore restituito puo' essere una o una combinazione delle seguenti costanti:

  • adStateClosed
    Predefinita. L'oggetto e' chiuso.
  • adStateOpen
    L'oggetto e' aperto.
  • adStateConnecting
    L'oggetto Recordset e' in fase di connessione.
  • adStateExecuting
    L'oggetto Recordset sta eseguendo un comando.
  • adStateFetching
    E' in corso un'operazione di fetch per le righe dell'oggetto Recordset.

Osservazioni
Questa proprieta' può essere utilizzata per determinare lo stato corrente di un determinato oggetto in qualsiasi momento. Si tratta di una proprieta' di sola lettura.

Status

Indica lo stato del record corrente in relazione agli aggiornamenti in modalita' batch o ad altre operazioni di gruppo.

Restituisce la somma di uno o piu' dei seguenti valori:

  • adRecOK
    L'aggiornamento del record e' riuscito.
  • adRecNew
    Il record e' nuovo.
  • adRecModified
    Il record e' stato modificato.
  • adRecDeleted
    Il record e' stato eliminato.
  • adRecUnmodified
    Il record non e' stato modificato.
  • adRecInvalid
    Il record non e' stato salvato perche' il segnalibro non e' valido.
  • adRecMultipleChanges
    Il salvataggio del record non e' stato eseguito poiche' avrebbe riguardato piu' record.
  • adRecPendingChanges
    Il record non e' stato salvato poiche' si riferisce a un inserimento in sospeso.
  • adRecCanceled
    Il record non e' stato salvato poiche' l'operazione e' stata annullata.
  • adRecCantRelease
    Il nuovo record non e' stato salvato a causa del blocco dei record esistenti.
  • adRecConcurrencyViolation
    Il record non e' stato salvato poiche' era attiva la concorrenza ottimistica.
  • adRecIntegrityViolation
    Il record non e' stato salvato a causa della violazione dei vincoli di integrita' da parte dell'utente.
  • adRecMaxChangesExceeded
    Il record non e' stato salvato a causa di un numero eccessivo di modifiche in sospeso.
  • adRecObjectOpen
    Il record non e' stato salvato a causa di un conflitto con un oggetto di memorizzazione aperto.
  • adRecOutOfMemory
    Il record non e' stato salvato poiche' la memoria necessaria non e' sufficiente.
  • adRecPermissionDenied
    Il record non e' stato salvato poiche' l'utente non dispone delle autorizzazioni sufficienti.
  • adRecSchemaViolation
    Il record non e' stato salvato poiche' viola la struttura del database di origine.
  • adRecDBDeleted
    Il record e' gia' stato eliminato dalla fonte dati.

Osservazioni
Questa proprieta' viene utilizzata per visualizzare le modifiche in sospeso per i record modificati durante l'aggiornamento in modalita' batch.
E' possibile utilizzarla anche per visualizzare lo stato dei record che presentano problemi durante l'esecuzione di operazioni di gruppo come ad esempio quando vengono richiamati i metodi Resync, UpdateBatch o CancelBatch oppure quando la proprieta' Filter viene impostata su una matrice di segnalibri.

Questa proprieta' consente di stabilire la causa dell'errore di un determinato record e correggerlo di conseguenza.


I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

1 messaggio this document does not accept new posts
PaoloPaolo Di Paolo - postato il 23/11/2008 17:10
Grazie. Chiaro e dettagliato.

Precedente Successivo


Davide Bianchi, lavora come Unix/Linux System Administrator presso una societa' di "sicurezza informatica" (aka: $networkgestapo) di Haarlem. Contatti: mail: davide AT onlyforfun.net , Jabber: davideyeahsure AT gmail.com,

Volete contribuire? Leggete come!.
 
 

Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gort