Il Recordset
Proprieta':
AbsolutePage,
AbsolutePosition,
ActiveConnection,
BOF ed EOF,
Bookmark,
CacheSize,
CursorLocation,
CursorType,
EditMode,
Filter,
LockType,
MarshalOptions,
MaxRecords,
PageCount,
PageSize,
RecordCount,
Sort,
Source,
State,
Status
Metodi:
Open,
MoveFirst, MoveLast, MoveNext e MovePrevious ,
Move,
Resync,
Requery,
Save,
Delete,
UpdateBatch,
CancelBatch,
CancelUpdate,
Update,
AddNew,
Supports,
Clone,
GetRows.
|
|
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
|
Proprieta'
|
|
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.
|
|
Metodi
|
|
Open |
Apre un recordset.
Sintassi
recordset.Open src, conn, tipo, lock, opz
Osservazioni
Utilizzando il metodo Open su un Recordset, si apre un cursore
che rappresenta record di una tabella di base, i risultati di
una query o un recordset salvato in precedenza.
Utilizzare l'argomento src opzionale per specificare una
fonte dati con un oggetto
Command, un'istruzione SQL, una stored
procedure, un nome di tabella o il percorso completo di un file.
L'argomento
conn
corrisponde alla proprieta'
ActiveConnection e specifica durante quale
connessione aprire il Recordset. Se si passa una definizione
di connessione per questo argomento, verra' aperta una nuova
connessione utilizzando i parametri specificati. E' possibile
modificare il valore di questa proprieta' dopo avere aperto il
recordset per inviare aggiornamenti a un altro provider.
In Microsoft Visual Basic e' anche possibile impostare questa
proprieta' su Nothing per
disconnettere il recordset da qualsiasi provider.
Per gli altri argomenti che corrispondono direttamente alle
proprieta' del Recordset, ovvero src, tipo e
lock, la relazione tra gli argomenti e le proprieta'
e' la seguente:
- La proprieta' e' di lettura/scrittura prima che il
Recordset venga aperto.
- Le impostazioni delle proprieta' vengono utilizzate a meno
che non si passino gli argomenti corrispondenti durante
l'esecuzione di Open. Se si passa un argomento, questo avra'
la priorita' sull'impostazione della proprieta' corrispondente
e l'impostazione verra' aggiornata con il valore
dell'argomento.
- Dopo l'apertura del Recordset queste proprieta' diventano di
sola lettura.
Nota Nel caso di Recordset di cui
Source e' impostata su un oggetto
Command
valido la proprieta'
ActiveConnection
e' di sola lettura anche se il Recordset non e' stato aperto.
Se si passa un oggetto
Command nell'argomento src insieme
a un argomento conn, si verifichera' un errore.
La proprieta'
ActiveConnection dell'oggetto
Command deve essere gia' impostata su una
Connection o su una stringa di
connessione.
Se non si passa un oggetto
Command nell'argomento src, sara'
possibile utilizzare l'argomento opz per ottimizzare la
valutazione dell'argomento src. Se l'argomento opz
non e' definito, le prestazioni potranno risultare ridotte dal
momento che e' necessario effettuare chiamate al provider per
determinare se l'argomento e' un'istruzione SQL, una stored
procedure o un nome di tabella. Se si conosce il tipo di
src in uso, impostando l'argomento opz si indichera'
ad ADO di andare direttamente al codice che interessa.
Se l'argomento opz non corrisponde al tipo src, si
verifichera' un errore.
Il valore predefinito per l'argomento opz sara'
adCommandFile
se non vi e' alcuna connessione associata al recordset. Questo e'
il caso tipico per i Recordset salvati.
Se la fonte dati non restituisce alcun record, il provider
impostera' le proprieta'
BOF e EOF
su True e la posizione del record corrente non verra' definita.
E' ancora possibile aggiungere nuovi dati a questo oggetto
Recordset vuoto se il tipo di cursore lo consente.
Una volta concluse le operazioni su un oggetto Recordset aperto,
utilizzare il metodo Close per rendere disponibili le risorse
di sistema associate. Se si chiude un oggetto, questo
non verra' rimosso dalla memoria. Sara' infatti possibile
modificarne le impostazioni delle proprieta' e utilizzare il
metodo Open per riaprirlo in un secondo momento. Per eliminare
completamente un oggetto dalla memoria impostare la variabile
oggetto su
Nothing.
|
MoveFirst, MoveLast, MoveNext e MovePrevious
|
Spostano la posizione del record corrente rispettivamente sul primo,
sull'ultimo, sul successivo o sul precedente record.
Sintassi
recordset.MoveFirst
recordset.MoveLast
recordset.MoveNext
recordset.MovePrevious
Osservazioni
Un Recordset ha un record definito come "corrente", questo
record e' quello a cui e' possibile accedere tramite la collection
Fields, e che e' possibile manipolare con
i metodi
Edit e
Delete, i metodi MoveX, consentono di
spostarsi all'interno del Recordset, rendendo un altro record
come "corrente".
MoveFirst imposta il primo record come corrente, MoveLast
imposta l'ultimo, questi sono spostamenti di tipo "assoluto",
MoveNext e MovePrevious si basano invece sul
record corrente per impostare il successivo o il precedente.
Se l'ultimo record e' il record corrente e si chiama il metodo
MoveNext, il record corrente verra' impostato sulla posizione
successiva all'ultimo record del recordset, ed
EOF
sara' impostata a True. Se si tenta di spostare in avanti la
posizione del record quando EOF e' True, si generera' un
errore.
Allo stesso modo, se il primo record e' il record corrente e
si chiama MovePrevious, il record corrente verra' impostato sulla
posizione precedente al primo record e
BOF
verra' impostata a True. Cercare di spostare all'indietro il
Recordset quando
|
|
Comments are added when and more important if I have the time to review them and
after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment
doesn't appear, is probably becuase it wasn't worth it.
1 message

Paolo By Paolo posted 23/11/2008 17:10
Grazie. Chiaro e dettagliato.
Previous Next
|
Davide Bianchi, works as Unix/Linux administrator for an hosting provider in The Netherlands.
This site is made by me with blood, sweat and gunpowder, if you want to
republish or redistribute any part of it, please drop me (or the
author of the article if is not me) a mail.
This site was composed with VIM, now is composed with VIM and the
(in)famous CMS FdT.
This site isn't optimized for vision with any specific browser, nor
it requires special fonts or resolution.
You're free to see it as you wish.