Un cursore richiede l'uso delle risorse del PC: memoria, hard-disk, processore. Se il cursore sta sul server è necessario allocare tali risorse per ogni utente che utilizza il database e questo potrebbe essere dispendioso per il server. Si può allora decidere di allocarlo sul client. In altre parole mentre nel primo caso il recordset e il software che lo gestisce risiedono sul server per tutto il tempo di utilizzazione, nel secondo caso il server trasferisce il recordset sul computer del client e delega al software del provider dati locale la gestione del tutto. L'unico svantaggio del cursore sul client è che le modifiche da parte di altri utenti non vengono visualizzate in tempo reale.
Vedremo ora i tipi di cursore e le loro performances.
Un cursore si specifica impostando la proprietà cursortype dell'oggetto recordset.
I valori possibili sono:
Costante simbolica | Costante numerica | Descrizione |
adOpenForwardOnly | 0 | E' possibile soltanto il movimento in avanti. Le modifiche dall'esterno sono visibili, ma a partire dalla riga correntemente processata dal cursore. |
adOpenStatic | 3 | Permette lo scrolling avanti/indietro ma non riporta i cambiamenti effettuati dall'esterno. Consente la modifica e l'aggiunta di records. |
adOpenKeyset | 1 | Permette lo scrolling avanti/indietro, la modifica e l'inserzione. I cambiamenti fatti dall'interno o dall'esterno sono visibili facendo scrolling ma le inserzioni dall'esterno sono visibili solo riaprendo il recordset. Le inserzioni fatte dall'interno invece sono visibili alla fine del recordset. |
adOpenDynamic | 2 | Come il precedente ma stavolta tutte le modifiche, inserzioni o cancellazioni sono visibile, sia esterne che interne |
La locazione del cursore si specifica con la proprietà cursorlocation dell'oggetto recordset . I valori sono:
Costante simbolica | Costante numerica | Descrizione |
adUseServer | 2 | Il cursore è sul server |
adUseClient | 3 | Il cursore è sul client |
E' possibile impostare le proprietà descritte o assegnando il numero corrispondente, per es. recS.cursortype=3 oppure assegnando corrispondente la costante simbolica. In questo caso si deve includere il file adojavas.inc