Funzioni di libreria: funzioni DAO

Le funzioni di questa categoria comprendono dei wrapper per accedere agli oggetti DAO (Data Access Object) esposti da MFC; sono riservate alla versione Windows™ di Proteus. Ricordiamo che la variabile pubblica predefinita OS è uguale a 2 se l'interprete è Proteus Windows™; inoltre, è predefinita la direttiva WINDOWS (è possibile condizionare l'esecuzione di codice dentro !ifdef WINDOWS..!endif).

Molte delle funzioni presentate richiedono il passaggio di parametri costanti, il cui valore è associato ad un nome mnemonico all'interno del file includibile daodefs.prt, che andrebbe incluso qualora si utilizzi una qualsiasi delle funzioni descritte più sotto. Tale file rende disponibili anche alcune macro (es. DAORSEOF), che possono essere proficuamente utilizzate per rendere più comprensibile il codice.
 
L'insieme delle chiamate è logicamente suddiviso nei seguenti gruppi:

Gestione workspace

DAOBEGINTRANS(uDataBase)

inizia una transazione sul database corrispondente al handle specificato; deve essere necessariamente aperto almeno un database. Se viene chiuso il database o il recordset senza che sia stata eseguita DAOCOMMITTRANS, tutte le modifiche sono perse. Ritorna 0 se è stato possibile individuare il workspace, -1 altrimenti o in caso di errore.

DAOCOMMITTRANS(uDataBase)

termina la transazione; tutte le modifiche sono trascritte. Ritorna 0 se è stato possibile individuare il workspace, -1 altrimenti o in caso di errore.

DAOROLLBACK(uDataBase)

invalida la transazione; tutte le modifiche sono perse. Ritorna 0 se è stato possibile individuare il workspace, -1 altrimenti o in caso di errore.

Gestione database

DAODBNEW()

crea un oggetto CDaoDatabase e restituisce il suo handle (o -1 in caso di errore)

DAODBFREE(uDataBase)

distrugge l'oggetto CDaoDatabase corrispondente al handle specificato; uDataBase non è più referenziabile. Ritorna -1 (handle errato) o 0 (handle liberato correttamente o già liberato)

DAODBATTRIB(uDataBase, nAttribute[, exp])

restituisce il valore dell'attributo specificato, o lo imposta (se indicato). Solo gli attributi che contengono il termine "Set" possono essere impostati, gli altri sono di sola lettura. Ritorna -1 in caso di errore.

I seguenti valori sono ammessi per nAttribute (vedi il file includibile daodefs.prt):

Valore Significato
DAOATTCANTRANSACT non-zero se supporta le transazioni
DAOATTCANUPDATE non-zero se l'oggetto è aggiornabile (non read-only)
DAOATTGETCONNECT ritorna la stringa di connessione utilizzata per connettere l'oggetto al database
DAOATTGETNAME ritorna il nome del database in uso
DAOATTGETSETQUERYTIMEOUT ritorna o imposta il numero di secondi dopo i quali le operazioni sul database andranno in timeout. Influenza tutte le successive operazioni di apertura, aggiunta, modifica e altre operazioni su sorgenti ODBC (solo) come chiamate a DAODBEXECUTE
DAOATTGETRECORDSAFFECTED ritorna il numero di record influenzati dall'ultima operazione di aggiornamento o dall'ultima chiamata a DAODBEXECUTE
DAOATTGETVERSION ritorna la versione del database engine associata con il database
DAOATTISOPEN non-zero se l'oggetto è connesso al database

DAODBCLOSE(uDataBase)

chiude la connessione al database; ritorna -1 se uDataBase è invalido, 0 altrimenti. Controllare gli errori DAO (DAOERRCOUNT, ecc.) per sapere se l'operazione è andata a buon fine.

DAODBCREATE(uDataBase, cPathName, cLocale, nOptions)

crea il database cPathName (tipo MDB), con le impostazioni specificate attraverso cLocale ed nOptions. Il default per cLocale è DAOCLangGeneral, per nOptions è 0. Ritorna 0 se ok, -1 in caso di errore.

I valori possibili per cLocale (ordine di collating da utilizzare per la creazione del database, vedi il file includibile daodefs.prt) sono:

I valori possibili per nOptions sono (sommare le diverse costanti necessarie):

Valore Significato
DAOCVersion10 crea con Jet 1.0 
DAOCEncrypt salva il database cifrato su disco
DAOCDecrypt salva il database non cifrato su disco
DAOCVersion11 crea con Jet 1.1
DAOCVersion20 crea con Jet 2.0
DAOCVersion30 crea con Jet 3.0

DAODBCREATEREL(uDataBase, cName, cTable, cExtTable, nAttribute, cField, cExtField)

crea una relazione nel database specificato; ritorna 0 se ok, -1 in caso di errore.

Parametri:

Valore Significato
cName nome della relazione
cTable tabella primaria nella relazione
cExtTable tabella esterna nella relazione
nAttribute attributi della relazione
cField nome del campo della tabella primaria nella relazione
cExtField nome del campo della tabella esterna nella relazione

Valori per nAttribute (sommare le diverse costanti necessarie, vedi il file includibile daodefs.prt):

Valore Significato
DAOCRelationUnique relazione 1 a 1
DAOCRelationDontEnforce no integrità referenziale
DAOCRelationInherited la relazione esiste in un database non  concorrente che contiene le due tabelle  allegate
DAOCRelationUpdateCascade gli aggiornamenti saranno propagati
DAOCRelationDeleteCascade le cancellazioni saranno propagate

DAODBDELQUERYDEF(uDataBase, cName)

elimina la querydef cName dall'insieme delle queries. Ritorna 0 se ok, -1 in caso di errore.

DAODBDELREL(uDataBase, cName)

elimina la relazione cName dall'insieme delle relazioni. Ritorna 0 se ok, -1 in caso di errore.

DAODBDELTABLE(uDataBase, cName)

elimina la tabella cName dall'insieme delle tabelle. Ritorna 0 se ok, -1 in caso di errore.

DAODBEXECUTE(uDataBase, cSqlStatement, nOptions)

esegue scSqlStatement (comando SQL) con le optioni nOptions specificate; ritorna 0 se ok, -1 in caso di errore.

Valori per nOptions (sommare le varie costanti richieste, vedi il file includibile daodefs.prt):

Valore Significato
DAOCDenyWrite nega la possibilità di scrivere ad altri  utenti
DAOCInconsistent ammette aggiornamenti inconsistenti (default)
DAOCConsistent forza aggiornamenti consistenti
DAOCSQLPassThrough lo statement è passato verbatim al data  source ODBC per l'elaborazione
DAOCFailOnError elimina tutti gli aggiornamenti in  caso di errore
DAOCSeeChanges genera un errore se un altro utente sta  cambiando i dati in editing
DAOCDenyRead nega la possibilità di leggere ad  altri utenti
DAOCReadOnly sola lettura
DAOCAppendOnly sola aggiunta in coda
DAOCForwardOnly apre in modalità di solo scorrimento  in avanti
DAOCRunAsync esegue in modo asincrono
DAOCExecDirect esegue direttamente

DAODBGETQUERYCOUNT(uDataBase)

ritorna il numero di query definito per il database, -1 in caso di errore.

DAODBGETQUERYINFO(uDataBase, cnIndex)

ritorna un vettore contenente le informazioni sulla query numero cnIndex (se cnIndex è una stringa, viene utilizzata come nome della query di cui si  desiderano ottenere le proprietà), -1 se non esiste.
I valori ammessi per l'indice numerico vanno da 1 a DAODBGETQUERYCOUNT(uDataBase).
Il vettore dovrà essere liberato con VECFREE, dopo aver utilizzato le informazioni  ivi contenute.
Il contenuto del vettore è (vedi il file includibile daodefs.prt):

Costante Valore Descrizione
DAOQI_NAME 1 nome della query
DAOQI_TYPE 2 tipo; uno dei seguenti valori:
  • DAOCQSelect: la query è di selezione
  • DAOCQAction: la query muove o cambia dati, ma  non ritorna record
  • DAOCQCrosstab: la query ritorna dati in formato  tipo spreadsheet
  • DAOCQDelete: la query cancella un insieme di  righe specificate
  • DAOCQUpdate: la query cambia un insieme di record
  • DAOCQAppend: la query aggiunge nuovi record alla  fine della tabella o della query
  • DAOCQMakeTable: la query crea una nuova tabella  da un recordset
  • DAOCQDDL: la query influenza la struttura delle  tabelle o delle loro parti
  • DAOCQSQLPassThrough: lo statement è passato direttamente all'engine, senza elaborazione intermedia.
  • DAOCQSetOperation: la query crea un recordset tipo snapshot  con i dati dei record specificati in due  o più tabelle con ogni record duplicato  rimosso. Per includere i duplicati,  aggiungere la keyword ALL nello statement SQL.
  • DAOCQSPTBulk: utilizzato con DAOCQSQLPassThrough per  specificare una query che non ritorna  record
DAOQI_CDATE 3 Data di creazione
DAOQI_CTIME 4 Ora di creazione
DAOQI_UDATE 5 Data di ultimo aggiornamento
DAOQI_UTIME 6 Ora di ultimo aggiornamento
DAOQI_UPDATE 7 Aggiornabile (1 o 0); indica se la query può essere cambiata
DAOQI_RECORDSET 8 Ritorna records (1 o 0); solo per query SQL-pass through
DAOQI_SQL 9 Stringa SQL; statement eseguito dalla query
DAOQI_SOURCE 10 Informazioni sulla sorgente utilizzata in una query pass-through
DAOQI_TIMEOUT 11 Numero di secondi attesi dal database engine prima di un errore di timeout

DAODBGETRELCOUNT(uDataBase)

ritorna il numero di relazioni nel database, -1 in caso di errore.

DAODBGETRELINFO(uDataBase, cnIndex)

ritorna un vettore contenente le informazioni sulla relazione numero cnIndex (se cnIndex è una stringa, viene utilizzata come nome della relazione di cui si desiderano ottenere le proprietà), -1 se non esiste. 
I valori ammessi per l'indice numerico vanno da 1 a DAODBGETRELCOUNT(uDataBase).
Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni ivi contenute, e dopo aver liberato il vettore del quinto elemento; ad esempio:

VH = DAODBGETRELINFO(DAOH, 1)
; Utilizza il vettore VH..
[..]
; Libera i vettori
VECFREE(VECGET(VH, 5))
VECFREE(VH)

Il contenuto del vettore è (vedi il file includibile daodefs.prt):

Costante Valore Descrizione
DAORI_NAME 1 nome della relazione
DAORI_TABLE 2 nome della tabella primaria nella relazione
DAORI_EXTTABLE 3 nome della tabella esterna nella relazione
DAORI_TYPE 4 contiene informazioni sul tipo di relazione, che può essere una delle seguenti:
  • DAOCRelationUnique: relazione 1 a 1
  • DAOCRelationDontEnforce: no integrità referenziale
  • DAOCRelationInherited: la relazione esiste in un database non  concorrente che contiene le due tabelle  allegate
  • DAOCRelationUpdateCascade: gli aggiornamenti saranno propagati
  • DAOCRelationDeleteCascade: le cancellazioni saranno propagate
  • DAOCRelationLeft: la relazione è un join sinistro. Un join  sinistro esterno include tutti i record della prima delle due tabelle (parte  sinistra), anche se non ci sono valori corrispondenti nella seconda tabella (parte destra)
  • DAOCRelationRight: la relazione è un join destro. Un join  destro esterno include tutti i record della seconda delle due tabelle (parte  destra), anche se non ci sono valori corrispondenti nella prima tabella  (parte sinistra)
DAORI_FIELDS 5 vettore di coppie di campi; ogni elemento del vettore è costituito da  "campo>campo_esterno"; è necessario liberare questo vettore con VECFREE prima di liberare il vettore che lo contiene.

DAODBGETTABCOUNT(uDataBase)

ritorna il numero di tabelle nel database, -1 in caso di errore.

DAODBGETTABINFO(uDataBase, cnIndex)

ritorna un vettore contenente le informazioni sulla tabella numero cnIndex (se cnIndex è una stringa, viene utilizzata come nome della tabella di cui si desiderano ottenere le proprietà), -1 se non esiste o se l'handle specificato è errato.
I valori ammessi per l'indice numerico vanno da 1 a DAODBGETTABCOUNT(uDataBase).
Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni ivi contenute.
Il contenuto del vettore è (vedi il file includibile daodefs.prt):

Costante Valore Descrizione
DAOTI_NAME 1 nome della tabella
DAOTI_UPDATE 2 aggiornabile (1 o 0)
DAOTI_ATTRIB 3 attributi, combinazione dei seguenti valori:
  • DAOCAttachExclusive: per tabelle che usano Jet, indica che è  una tabella collegata aperta per uso  esclusivo
  • DAOCAttachSavePWD: per tabelle che usano Jet, indica che lo  User ID e la password per la tabella  collegata sono salvate con le informazioni  di connessione
  • DAOCSystemObject: indica che la tabella è di sistema  (sola lettura)
  • DAOCHiddenObject: indica che la tabella è nascosta (per  uso temporaneo, sola lettura)
  • DAOCAttachedTable: indica che la tabella è collegata da un  database non-ODBC, come Paradox
  • DAOCAttachedODBC: indica che la tabella è collegata da un  database ODBC, come MS SQL Server
DAOTI_CDATE 4 data di creazione
DAOTI_CTIME 5 ora di creazione
DAOTI_UDATE 6 data di ultimo aggiornamento
DAOTI_UTIME 7 ora di ultimo aggiornamento
DAOTI_LINK 8 nome della tabella collegata, se esiste
DAOTI_SOURCE 9 sorgente di un database aperto
DAOTI_VALIDATE 10 regola di validazione, utilizzata quando si modificano i dati nella tabella;  solo per Jet
DAOTI_INVALID 11 messaggio visualizzato se la regola di validazione non è soddisfatta
DAOTI_RECNUMBER 12 numero di record acceduti nella tabella

DAODBOPEN(uDataBase, cPathName, nExclusive, nReadOnly, cConnString)

stabilisce una connessione ad un database. Ritorna 0 se ok, -1 in caso di errore.

Parametro Descrizione
cPathName nome del database, completo di percorso; se vuoto e cConnString è "ODBC;" viene mostrata una finestra di dialogo per selezionare un database. Possono essere utilizzati anche percorsi UNC, come "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB.MDB" (il raddoppio del backslash serve in quanto "\" è il carattere di escape)
nExclusive 0 se il database viene aperto per accesso condiviso, non-zero per accesso esclusivo
nReadOnly 0 se il database viene aperto in lettura/scrittura, non-zero per sola lettura
cConnString se si apre un file MDB, specificare il percorso in cPathName e lasciare vuota questa stringa (oppure indicare la password con ";PWD=password"); se si apre un file ODBC, lasciare vuota la stringa cPathName e specificare il DSN in cConnString

Gestione dei recordset

DAORSNEW(uDataBase)

crea un oggetto CDaoRecordset a partire dall'handle del database uDataBase. Ritorna l'handle del nuovo recordset, -1 in caso di errore.

DAORSFREE(zHandle)

distrugge l'oggetto CDaoRecordset; zHandle non è più referenziabile. Ritorna 0 se ok, -1 in caso di errore.

DAORSATTRIB(zHandle, cAttribute[, exp])

restituisce il valore dell'attributo specificato; solo gli attributi indicati con "*" richiedono la specifica del parametro exp. Ritorna -1 in caso di errore.

Valori per cAttribute (vedi il file includibile daodefs.prt):

Parametro Descrizione
DAORSATTCANAPPEND ritorna non-zero se possono essere aggiunti record
DAORSATTCANBOOKMARK ritorna non-zero se il recordset supporta i bookmark
DAORSATTCANRESTART ritorna non-zero se può essere ripetuta la query
DAORSATTCANSCROLL ritorna non-zero se è possibile muoversi tra i record
DAORSATTCANTRANSACT ritorna non-zero se il data source supporta le transazioni
DAORSATTCANUPDATE ritorna non-zero se il recordset può essere aggiornato
DAORSATTGETDATECREATED ritorna la data di creazione della tabella base del recordset 
DAORSATTGETTIMECREATED ritorna l'ora di creazione della tabella base del recordset  [nota di implementazione: in MFC è accorpata con la funzione precedente]
DAORSATTGETDATELASTUPDATED ritorna la data di ultima modifica della tabella base del recordset
DAORSATTGETTIMELASTUPDATED ritorna l'ora di ultima modifica della tabella base del recordset  [nota di implementazione: in MFC è accorpata con la funzione precedente]
DAORSATTGETNAME ritorna il nome del recordset
DAORSATTGETSQL ritorna la stringa SQL utilizzata per estrarre il recordset
DAORSATTGETVALIDATIONRULE ritorna la stringa di validazione per i dati introdotti nel record
DAORSATTGETVALIDATIONTEXT ritorna il testo visualizzato quando la validazione fallisce
DAORSATTGETEDITMODE ritorna lo stato dell'editing per il record corrente
DAORSATTGETCURRENTINDEX ritorna il nome dell'indice selezionato in un recordset di tipo tabella
DAORSATTGETRECORDCOUNT ritorna il numero di record acceduti in un oggetto recordset
DAORSATTISBOF ritorna non-zero se il recordset è stato posizionato prima del primo record; non c'è record corrente
DAORSATTISDELETED ritorna non-zero se il recordset è posizionato su un record cancellato
DAORSATTISEOF ritorna non-zero se il recordset è stato posizionato oltre l'ultimo record; non c'è record corrente
DAORSATTISOPEN ritorna non-zero se è stato aperto il recordset
DAORSATTGETTYPE ritorna il tipo di recordset: tabella, dynaset, snapshot
DAORSATTGETLASTMODBMARK ritorna un bookmark handle al record aggiunto o modificato più recentemente; il bookmark deve essere poi liberato con DAORSFREEBMARK
DAORSATTSETCURRENTINDEX* imposta l'indice da utilizzare in un recordset di tipo tabella
DAORSATTGETPARAMVALUE* ritorna il valore del parametro specificato (se numerico, considera la  posizione; se stringa, considera il nome)
DAORSATTSETPARAMVALUENULL* imposta il valore corrente per il parametro specificato a Null (nessun valore)

DAORSPARCOUNT(zHandle)

ritorna il numero di parametri nella query per la costruzione del recordset, -1 in caso di errore.

DAORSPARSET(zHandle, cnParameter, exp[, nType])

imposta a exp il valore del parametro specificato (cnParameter può essere un numero, e in questo caso viene considerato come indice, oppure una stringa, e in questo caso si considera il nome del parametro). I valori ammessi per cnParameter (se numerico) vanno da 1 a DAORSPARCOUNT(zHandle). Ritorna -1 in caso di errore, 0 altrimenti.
Il parametro nType (opzionale) specifica che tipo deve essere assunto per l'interpretazione di exp; se non specificato, automaticamente interpreta come intero lungo, stringa o valore in virgola mobile, in base all'ultimo assegnamento alla variabile. I possibili valori sono (vedi il file includibile daodefs.prt):

Costante Descrizione
DAOCBoolean interpreta il valore intero long come True (= 0) o False
DAOCByte interpreta il valore intero long come byte (se l'ultima impostazione era una stringa, utilizza il primo carattere della stringa)
DAOCInteger interpreta il valore intero long come integer
DAOCLong interpreta il valore intero long come long
DAOCCurrency interpreta il valore numerico come intero o float, a seconda del contenuto
DAOCSingle interpreta il valore virgola mobile come float
DAOCDouble interpreta il valore virgola mobile come double
DAOCDate interpreta la stringa come data
DAOCDateTime interpreta la stringa come data e ora (separati da uno spazio)
DAOCTime interpreta la stringa come ora
DAOCText interpreta la stringa come testo
DAOCMemo interpreta la stringa come testo
DAOCLongBinary interpreta la stringa come testo
DAOCNull ignora il valore specificato e assegna NULL

DAORSOPEN(zHandle, nOpenType, cSqlStatement, nOptions)

associa al recordset un insieme di record, determinati attraverso l'espressione SQL cSqlStatement, con il modo di apertura e le opzioni specificate. Ritorna 0 se tutto ok, -1 in caso di errore.

I possibili valori dei parametri sono riassunti nella seguente tabella (vedi il file includibile daodefs.prt):

Parametro Descrizione
nOpenType può assumere uno dei seguenti valori:
  • DAOCOpenTable: tipo tabella con scrolling bidirezionale
  • DAOCOpenDynaset: tipo dynaset con scrolling bidirezionale. Questo è il default
  • DAOCOpenSnapshot: tipo snapshot con scrolling bidirezionale
  • DAOCOpenForwardOnly: tipo scorrimento in avanti (non supportato)
  • DAOCOpenDynamic: tipo dinamico
cSqlStatement è una espressione stringa che può contenere:
  • il nome di una o più tabelle/query, separate da virgole;
  • una espressione SELECT di SQL (con clausole WHERE o ORDER BY se necessarie);
  • una query pass-through.
nOptions

può essere una o più delle seguenti (sommare i diversi valori, se necessari; il default è 0):

  • DAOCAppendOnly: è possibile solo aggiungere nuovi record (solo per dynaset)
  • DAOCForwardOnly: il recordset è uno snapshot con solo scrolling in avanti
  • DAOCSeeChanges: genera un'eccezione se un altro utente sta cambiando i dati in modifica
  • DAOCDenyWrite: gli altri utenti non possono modificare o aggiungere record
  • DAOCDenyRead: gli altri utenti non posso visualizzare record (solo per tipo tabella)
  • DAOCReadOnly: è possibile solo visualizzare i record; gli altri utenti possono modificarli
  • DAOCInconsistent: sono permessi aggiornamenti inconsistenti (solo per dynaset)
  • DAOCConsistent: sono permessi solo aggiornamenti consistenti (solo per dynaset)

DAORSOPENTD(zHandle, nOpenType, tHandle, nOptions)

associa al recordset un insieme di record, determinati attraverso l'handle di tabella tHandle, con il modo di apertura e le opzioni specificate. Ritorna 0 se tutto ok, -1 in caso di errore. I possibili valori dei parametri sono riassunti nella seguente tabella (vedi il file includibile daodefs.prt):

Parametro Descrizione
nOpenType può assumere uno dei seguenti valori:
  • DAOCOpenTable: tipo tabella con scrolling bidirezionale
  • DAOCOpenDynaset: tipo dynaset con scrolling bidirezionale. Questo è il default
  • DAOCOpenSnapshot: tipo snapshot con scrolling bidirezionale
  • DAOCOpenForwardOnly: tipo scorrimento in avanti (non supportato)
  • DAOCOpenDynamic: tipo dinamico
tHandle handle di TableDef
nOptions

può essere una o più delle seguenti (sommare i diversi valori, se necessari; il default è 0):

  • DAOCAppendOnly: è possibile solo aggiungere nuovi record (solo per dynaset)
  • DAOCForwardOnly: il recordset è uno snapshot con solo scrolling in avanti
  • DAOCSeeChanges: genera un'eccezione se un altro utente sta cambiando i dati in modifica
  • DAOCDenyWrite: gli altri utenti non possono modificare o aggiungere record
  • DAOCDenyRead: gli altri utenti non posso visualizzare record (solo per tipo tabella)
  • DAOCReadOnly: è possibile solo visualizzare i record; gli altri utenti possono modificarli
  • DAOCInconsistent: sono permessi aggiornamenti inconsistenti (solo per dynaset)
  • DAOCConsistent: sono permessi solo aggiornamenti consistenti (solo per dynaset)

DAORSOPENQD(zHandle, nOpenType, qHandle, nOptions)

associa al recordset un insieme di record, determinati attraverso l'esecuzione della query qHandle, con il modo di apertura e le opzioni specificate. Ritorna 0 se tutto ok, -1 in caso di errore. I possibili valori dei parametri sono riassunti nella seguente tabella (vedi il file includibile daodefs.prt):

Parametro Descrizione
nOpenType può assumere uno dei seguenti valori:
  • DAOCOpenTable: tipo tabella con scrolling bidirezionale
  • DAOCOpenDynaset: tipo dynaset con scrolling bidirezionale. Questo è il default
  • DAOCOpenSnapshot: tipo snapshot con scrolling bidirezionale
  • DAOCOpenForwardOnly: tipo scorrimento in avanti (non supportato)
  • DAOCOpenDynamic: tipo dinamico
qHandle handle di QueryDef
nOptions

può essere una o più delle seguenti (sommare i diversi valori, se necessari; il default è 0):

  • DAOCAppendOnly: è possibile solo aggiungere nuovi record (solo per dynaset)
  • DAOCForwardOnly: il recordset è uno snapshot con solo scrolling in avanti
  • DAOCSeeChanges: genera un'eccezione se un altro utente sta cambiando i dati in modifica
  • DAOCDenyWrite: gli altri utenti non possono modificare o aggiungere record
  • DAOCDenyRead: gli altri utenti non posso visualizzare record (solo per tipo tabella)
  • DAOCReadOnly: è possibile solo visualizzare i record; gli altri utenti possono modificarli
  • DAOCInconsistent: sono permessi aggiornamenti inconsistenti (solo per dynaset)
  • DAOCConsistent: sono permessi solo aggiornamenti consistenti (solo per dynaset)

DAORSCLOSE(zHandle)

chiude il recordset precedentemente aperto; utilizzare DAORSFREE per distruggere l'oggetto CDaoRecordset. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSADDNEW(zHandle)

prepara per l'aggiunta di un nuovo record; utilizzare DAORSUPDATE per completare la scrittura del record, dopo aver impostato i valori dei vari campi. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSEDIT(zHandle)

prepara per la modifica del record corrente; utilizzare DAORSUPDATE per completare la scrittura del record, dopo aver impostato i valori dei vari campi. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSUPDATE(zHandle)

scrive il record aggiunto o modificato. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSCANCELUPD(zHandle)

annulla la richiesta di modifica (DAORSEDIT) oppure di aggiunta (DAORSADDNEW) di un nuovo record. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSDELETE(zHandle)

cancella il record corrente; è necessario spostarsi esplicitamente sul record successivo. Ritorna 0 se tutto ok, -1 in caso di errore.

DAORSFINDFIRST(zHandle, cCondition)

trova il primo record che soddisfa la condizione specificata; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Utilizzare DAORSSEEK in recordset di tipo tabella, in quanto questa funzione è più lenta, effettuando una scansione sequenziale. Non è possibile effettuare una ricerca su recordset di tipo snapshot forward-only. Nella ricerca di date, specificare sempre il valore nel formato americano: mese-giorno-anno e racchiudere la stringa della data tra caratteri "#".

DAORSFINDNEXT(zHandle, cCondition)

trova il successivo record che soddisfa la condizione specificata; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSFINDFIRST.

DAORSFINDPREV(zHandle, cCondition)

trova il precedente record che soddisfa la condizione specificata; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSFINDFIRST.

DAORSFINDLAST(zHandle, cCondition)

trova l'ultimo record che soddisfa la condizione specificata; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSFINDFIRST. L'esecuzione di questa funzione può richiedere molto tempo, in quanto viene preventivamente popolato completamente il recordset.

DAORSGETPERCPOS(zHandle)

ritorna la posizione corrente nel database, espressa in percentuale con un numero compreso tra 0 e 100. In recordset dynaset o snapshot, la percentuale è calcolata sul numero di record acceduti fino a quel momento. Non è possibile invocare questa funzione su snapshot di tipo forward-only o su query pass-through su database esterni. Ritorna -1 in caso di errore.

DAORSSETPERCPOS(zHandle, fPercentage)

si sposta al record approssimativamente corrispondente alla posizione specificata in percentuale (0-100). Utilizzare DAORSGETPERCPOS per conoscere la posizione percentuale di un record. Si tenga presente che questa funzione fa sempre riferimento al numero di record acceduti fino a quel momento, non a tutto il recordset. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSGETABSPOS(zHandle)

restituisce la posizione assoluta del record corrente. Ritorna -1 se non c'è alcun record corrente, altrimenti un valore compreso tra 0 e n-1, se n è il numero totale di record nel recordset. Questa funzione può essere utilizzata solo su recordset di tipo dynaset o snapshot.

DAORSSETABSPOS(zHandle, nPosition)

sposta il record corrente al record nPosition (compresa tra 1 ed n, se n è il numero di record acceduti finora). Solo per dynaset e snapshot. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSGETBMARK(zHandle)

ritorna un bookmark handle per il record corrente, oppure -1 se non c'è alcun record corrente. Utilizzare DAORSSETBMARK per tornare successivamente allo stesso record. 
Utilizzare DAORSFREEBMARK per eliminare il bookmark.

DAORSSETBMARK(zHandle, gHandle)

riposiziona il recordset sul bookmark corrispondente a gHandle. Utilizzare DAORSFREEBMARK per eliminare il bookmark. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSFREEBMARK(zHandle, gHandle)

elimina dal recordset il bookmark corrispondente a gHandle. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSMOVE(zHandle, nOffset)

si sposta avanti o indietro di nOffset record; ritorna 1 se la funzione ha successo, 0 altrimenti. Ritorna -1 in caso di errore. Vedi anche DAORSMOVEFIRST.

DAORSMOVEFIRST(zHandle)

si sposta al primo record nel recordset; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Non è possibile effettuare spostamenti su recordset di tipo snapshot forward-only. Si verifica un errore se il recordset è vuoto; testare che non valgano contemporaneamente le condizioni DAORSBOF e DAORSEOF prima di eseguire la funzione. Viene perso il valore dell'eventuale record in modifica.

DAORSMOVENEXT(zHandle)

si sposta al successivo record; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSMOVEFIRST.

DAORSMOVEPREV(zHandle)

si sposta al precedente record; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSMOVEFIRST.

DAORSMOVELAST(zHandle)

si sposta all'ultimo record; ritorna 1 se trovato, 0 altrimenti (in questo caso, non c'è nessun record corrente). Ritorna -1 in caso di errore. Vedi anche DAORSMOVEFIRST. L'esecuzione di questa funzione può richiedere molto tempo, in quanto viene preventivamente popolato completamente il recordset.

DAORSSEEK(zHandle, cOperator, exp1[, exp2..])

cerca nel recordset attraverso l'indice corrente. L'indice corrente si imposta attraverso DAORSATTRIB(zHandle, DAORSATTSETCURRENTINDEX, cnIndex). Solo per recordset di tipo tabella. Ritorna 1 se trova un record, altrimenti 0 (in questo caso il record corrente diventa indefinito). Ritorna -1 in caso di errore.

Parametri:

DAORSFILLCACHE(zHandle, nSize[, gHandle])

riempie la cache con nSize record, a partire dal bookmark gHandle eventualmente specificato. Il riempimento della cache velocizza le operazioni su recordset che si trovano su sorgenti dati ODBC. I record eventualmente modificati in modo concorrente da altri utenti non sono aggiornati nella cache. La dimensione della cache è determinata attraverso DAORSSETCACHESIZE. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSGETCACHESIZE(zHandle)

restituisce il numero di record previsti nella cache, -1 in caso di errore.

DAORSSETCACHESIZE(zHandle, nSize)

imposta la dimensione della cache per il recordset. Utile solo per recordset basati su sorgenti dati ODBC. Specificare nSize = 0 per non utilizzare la cache. Per aggiornare il contenuto completo della cache, utilizzare prima nSize = 0 e poi ripetere la chiamata con la dimensione richiesta per la cache. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSGETCACHESTART(zHandle)

ritorna il bookmark handle del record a partire dal quale viene popolata la cache, -1 in caso di errore. Solo per dynaset. Utilizzare DAORSFREEBMARK per eliminare il bookmark.

DAORSSETCACHESTART(zHandle, gHandle)

imposta il bookmark del record a partire dal quale viene popolata la cache. Solo per dynaset. Permette di omettere il terzo parametro della chiamata a DAORSFILLCACHE. Ritorna 0 se la funzione ha successo, -1 in caso di errore.

DAORSGETFIELDCOUNT(zHandle)

ritorna il numero di campi nel recordset, -1 in caso di errore.

DAORSGETFIELDINFO(zHandle, cnIndex)

ritorna un vettore contenente le informazioni sul campo cnIndex, -1 se non esiste o se l'handle specificato è errato. Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni ivi contenute. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAORSGETFIELDCOUNT(zHandle); cnIndex può essere un valore numerico oppure una stringa che specifica il nome del campo.

Il contenuto del vettore è (vedi il file includibile daodefs.prt):

Costante Valore Descrizione
DAOFI_NAME 1 nome del campo
DAOFI_TYPE 2 tipo del campo; può essere uno dei seguenti:
DAOCBoolean
DAOCByte
DAOCInteger
DAOCLong
DAOCCurrency
DAOCSingle
DAOCDouble
DAOCDate
DAOCText
DAOCLongBinary
DAOCMemo
DAOCGUID
DAOCBinary
DAOCBigInt
DAOCVarBinary
DAOCChar
DAOCNumeric
DAOCDecimal
DAOCFloat
DAOCTime
DAOCTimeStamp
DAOFI_SIZE 3 massima dimensione, in bytes, del campo DAO originale; Proteus converte tutti i valori in stringa oppure numero intero/float, per cui questo dato non è indicativo. Il campo data/ora è convertito in data+ora, separate da uno spazio
DAOFI_ATTRIB 4 attributi; somma dei campi seguenti:
  • DAOCFixedField: il campo è a lunghezza fissa (default per  i campi di tipo numerico)
  • DAOCVariableField: il campo è a lunghezza variabile (solo campi testo)
  • DAOCAutoIncrField: il valore del campo per i nuovi record è  automaticamente incrementato ad un nuovo valore long che non può essere modificato; supportato  solo nella tabelle di database Microsoft® Jet
  • DAOCUpdatableField: il valore del campo può essere modificato
  • DAOCDescending: il campo è ordinato in modo decrescente (Z-A o  100-0); si applica solo ai campi indice
DAOFI_POSITION 5 posizione ordinale; è un valore che specifica l'ordine numerico nel quale si vuole che il campo sia rappresentato rispetto agli altri
DAOFI_REQUIRED 6 richiesto (1/0); indica se il campo può assumere il valore Null (0) oppure no (1)
DAOFI_ALLOWZL 7 ammetti lunghezza zero (1/0); indica se una stringa vuota è ammessa (1) oppure no (0)
DAOFI_COLLATE 8 ordine di collating; vedi DAODBCREATE
DAOFI_EXTNAME 9 nome esterno; nome del campo nella tabella esterna che corrisponde al campo
DAOFI_EXTFIELD 10 campo sorgente; nome originale del campo nella sorgente dati
DAOFI_EXTTABLE 11 tabella sorgente; nome originale della tabella nella sorgente dati
DAOFI_VALIDATE 12 regola di validazione; indica la condizione per l'accettazione di un valore modificato o aggiunto
DAOFI_INVALID 13 testo di validazione; testo mostrato quando la validazione fallisce
DAOFI_DEFAULT 14 valore di default; valore assunto dal campo nei nuovi record aggiunti, se non specificato dall'utente

DAORSGETINDEXCOUNT(zHandle)

ritorna il numero di indici disponibili in un recordset di tipo tabella, -1 in caso di errore.

DAORSGETINDEXINFO(zHandle, cnIndex)

ritorna un vettore contenente le informazioni sull'indice cnIndex,  -1 se non esiste; cnIndex può essere un valore numerico oppure una stringa che specifica il nome dell'indice. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAORSGETINDEXCOUNT(zHandle). Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni  ivi contenute, e dopo aver liberato il vettore del secondo elemento, ad esempio:

VH = DAORSGETINDEXINFO(RSH, 1)
; Utilizza il vettore VH..
[..]
; Libera i vettori
VECFREE(VECGET(RSH, 2))
VECFREE(RSH)
Il contenuto del vettore è (vedi il file includibile daodefs.prt):
 
Costante Valore Descrizione
DAOII_NAME 1 nome dell'indice
DAOII_FIELDS 2 vettore dei campi; ogni elemento è costituito dalla cifra 0 (ascendente) o 1 (discendente) seguita dal nome del campo
DAOII_PRIMARY 3 primario (1 o 0); un indice primario contiene campi che, singolarmente o almeno  nel loro insieme, costituiscono una chiave primaria. Ci può essere al massimo un indice primario in una tabella
DAOII_UNIQUE 4 unico (1 o 0); indica se l'indice rappresenta un indice unico per la tabella; un indice unico contiene campi che, singolarmente o almeno nel loro insieme, sono unici nella tabella per ciascun record
DAOII_CLUSTERED 5 clustered (1 o 0); con un indice clustered i dati nella tabella sono memorizzati letteralmente nell'ordine specificato dall'indice. Un indice clustered rappresenta un modo efficiente per accedere ai dati nell'ordine richiesto (non supportato dai database Microsoft® Jet)
DAOII_NULLIGNORE 6 ignora Null (1 o 0); se vero (1) i record che hanno Null come chiave secondo l'indice non sono presenti nell'indice; questo riduce lo spazio necessario a memorizzare l'indice
DAOII_REQUIRED 7 richiesto (1 o 0); se vero (1) non sono ammessi record che hanno chiave Null
DAOII_EXTERN 8 esterno (1 o 0); se vero (1), l'indice è una chiave esterna in una tabella; utilizzato per l'integrità referenziale
DAOII_KEYS 9 numero di chiavi distinte nell'indice per la tabella associata

DAORSGETLOCKMODE(zHandle)

ritorna la modalità di blocco in aggiornamento: ottimistica (0) oppure pessimistica (1). Ritorna -1 in caso di errore. In modalità pessimistica, la pagina che contiene il record viene bloccata per tutto il tempo dell'aggiornamento (da DAORSEDIT a DAORSUPDATE); in modalità ottimistica, solo durante la fase di aggiornamento.

DAORSSETLOCKMODE(zHandle, nPessimistic)

imposta la modalità di blocco in aggiornamento in base al parametro nPessimistic: ottimistica (0) oppure pessimistica (1). Ritorna -1 in caso di errore. In modalità pessimistica, la pagina che contiene il record viene bloccata per tutto il tempo dell'aggiornamento (da Edit ad Update); in modalità ottimistica, solo durante l'Update.

DAORSREQUERY(zHandle)

riesegue la query sottostante il recordset, per aggiornare il contenuto con le modifiche che nel frattempo fossero avvenute. Ritorna 0 se ok, -1 in caso di errore.

DAORSGETFIELDVAL(zHandle, cnIndex)

ritorna il valore del campo numero cnIndex (se cnIndex è una stringa, viene utilizzata come nome del campo di cui si desidera ottenere il valore); se il campo non viene trovato, ritorna una stringa vuota. Proteus converte qualunque tipo di campo in stringa oppure numero intero/floating point. I valori ammessi per indice (se numerico) vanno da 1 a DAORSGETFIELDCOUNT(zHandle).

DAORSSETFIELDVAL(zHandle, cnIndex, exp)

imposta il valore del campo cnIndex; cnIndex può essere un valore numerico oppure una stringa che specifica il nome del campo. Ritorna 0 se ok, -1 in caso di errore. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAORSGETFIELDCOUNT(zHandle).

DAORSSETFIELDNULL(zHandle, cnIndex)

imposta a Null il valore del campo cnIndex; cnIndex può essere un valore numerico oppure una stringa che specifica il nome del campo. Ritorna 0 se ok, -1 in caso di errore. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAORSGETFIELDCOUNT(zHandle).

Gestione TableDef

DAOTDCREATE(uDatabase, cName, nAttributes, cSourceTable, cConnect)

crea una TableDef, restituendone lo handle; ritorna -1 in caso di errore; il significato dei parametri è il seguente:

Parametro Descrizione
uDatabase handle del database nel quale creare la tabledef
cName nome della tabella da creare
nAttributes NOR dei seguenti valori (vedi il file includibile daodefs.prt):
  • DAOCAttachExclusive: per database che utilizzano il database engine Microsoft® Jet, indica che la tabella è aperta per uso esclusivo
  • DAOCAttachSavePWD: per database che utilizzano il database engine Microsoft® Jet, indica che lo user ID e la password sono salvate con le informazioni di connessione
  • DAOCSystemObject: indica che la tabella è una tabella di sistema fornita dal database engine Microsoft® Jet
  • DAOCHiddenObject: indica che la tabella è una tabella nascosta fornita dal database engine Microsoft® Jet
cSourceTable nome di una tabella da copiare (ignorato se vuoto)
cConnect stringa di connessione di default (ignorata se vuota)

DAOTDAPPEND(tHandle)

salva la TableDef nel database. Ritorna 0 se ok, -1 in caso di errore. 

DAOTDOPEN(uDatabase, cTableName)

apre la TableDef corrispondente a cTableName nel database uDatabase. Ritorna lo handle della TableDef aperta, -1 in caso di errore.

DAOTDCLOSE(tHandle)

chiude la TableDef. Ritorna 0 se ok, -1 in caso di errore. 

DAOTDATTRIB(tHandle, nAttribute[, exp])

restituisce il valore dell'attributo specificato o lo imposta (se la costante prevede la dicitura SET); i possibili valori sono riassunti in tabella (vedi il file includibile daodefs.prt per i valori delle costanti):

nAttribute Descrizione
DAOTDCANUPDATE ritorna non zero se la tabella può essere aggiornata (è possibile modificare la definizione dei campi o le proprietà della tabella)
DAOTDATTRIBUTES ritorna gli attributi della tabella
DAOTDCONNECT ritorna un valore che fornisce informazioni sulla sorgente di una tabella
DAOTDCREATDATE ritorna la data di creazione della tabella
DAOTDCREATTIME ritorna l'ora di creazione della tabella 
DAOTDLASTUPDATE ritorna la data di ultimo aggiornamento
DAOTDLASTUPDTIME ritorna l'ora di ultimo aggiornamento
DAOTDNUMFIELDS ritorna il numero di campi nella tabella
DAOTDFIELDINFO ritorna informazioni sul campo exp (se numerico, considera la posizione; se stringa, considera il nome); ritorna un vettore di 14 elementi, vedi DAORSGETFIELDINFO
DAOTDINDEXCOUNT ritorna il numero di indici
DAOTDINDEXINFO ritorna informazioni sull'indice exp (se numerico, considera la posizione; se stringa, considera il nome); ritorna un vettore di 9 elementi, vedi DAORSGETINDEXINFO
DAOTDNAME ritorna il nome della tabella
DAOTDRECCOUNT ritorna il numero di record acceduti finora nella tabella
DAOTDSOURCE ritorna il nome della tabella sorgente
DAOTDVALRULE ritorna la regola di validazione
DAOTDVALTEXT ritorna il testo mostrato in caso di errore di validazione
DAOTDISOPEN ritorna non zero se la tabella è aperta
DAOTDSETATTR imposta ad exp il valore degli attributi della tabella
DAOTDSETCONN imposta ad exp il valore della stringa di connessione
DAOTDSETNAME imposta ad exp il nome della tabella
DAOTDSETSOURCE imposta ad exp il nome della tabella sorgente
DAOTDSETVALRULE imposta ad exp la regola di validazione
DAOTDSETVALTEXT imposta ad exp il testo mostrato in caso di errore di validazione

Ritorna 0 se ok, -1 in caso di errore (in SET); ritorna una stringa vuota in caso di errore.

DAOTDCREATFIELD(tHandle, cName, nType, nSize, nAttributes)

crea un campo nella tabella, con nome, tipo, dimensioni ed attributi specificati. Ritorna 0 se ok, -1 in caso di errore. I possibili valori dei parametri sono:

Parametro Descrizione
nType vedi DAOFI_TYPE in DAORSGETFIELDINFO
nSize dimensione in bytes
nAttributes NOR dei seguenti valori:
  • DAOCFixedField: il campo è a lunghezza fissa (default per i campi di tipo numerico)
  • DAOCVariableField: il campo è a lunghezza variabile (solo campi testo)
  • DAOCAutoIncrField: il valore del campo per i nuovi record è automaticamente incrementato ad un nuovo valore long che non può essere modificato; supportato solo 
    nelle tabelle di database Microsoft® Jet
  • DAOCUpdatableField: il valore del campo può essere modificato
  • DAOCDescending: il campo è ordinato in modo decrescente (Z-A o 100-0); si applica solo 
    ai campi indice

DAOTDEXTCREATFIELD(tHandle, nFieldVec)

crea un campo, basandosi sul vettore di 14 elementi di handle nFieldVec (vedi DAORSGETFIELDINFO). Ritorna 0 se ok, -1 in caso di errore.

DAOTDCREATEINDEX(tHandle, nIndexVec)

crea un indice, basandosi sul vettore di 9 elementi di handle nIndexVec (vedi DAORSGETINDEXINFO). Ritorna 0 se ok, -1 in caso di errore.

DAOTDDELFIELD(tHandle, cnField)

elimina il campo cnField (se numerico, considera la posizione; se stringa, considera  il nome). Ritorna 0 se ok, -1 in caso di errore.

DAOTDDELINDEX(tHandle, cnIndex)

elimina l'indice cnIndex (se numerico, considera la posizione; se stringa, considera il nome). Ritorna 0 se ok, -1 in caso di errore. 

DAOTDREFRESHLINK(tHandle)

aggiorna le informazioni di connessione per la tabella collegata. Ritorna 0 se ok, -1 in caso di errore. 

Gestione QueryDef

DAOQDCREATE(uDatabase, cQueryName, cSQL)

crea una QueryDef, restituendone lo handle; ritorna -1 in caso di errore; il significato dei parametri è il seguente:

Parametro Descrizione
cQueryName nome della querydef da creare (se vuota, è temporanea)
cSQL stringa SQL che definisce la query (se vuota, deve essere successivamente impostata con DAOQDSETSQL in DAOQDATTRIB).

DAOQDAPPEND(qHandle)

salva la QueryDef nel database. Ritorna 0 se ok, -1 in caso di errore. 

DAOQDOPEN(uDatabase, cQueryName)

apre la QueryDef corrispondente a cQueryName nel database uDatabase. Ritorna l'handle della QueryDef aperta, -1 in caso di errore.

DAOQDCLOSE(qHandle)

chiude la QueryDef. Ritorna 0 se ok, -1 in caso di errore. 

DAOQDATTRIB(qHandle, nAttribute[, exp])

restituisce il valore dell'attributo specificato o lo imposta (se la costante prevede la dicitura SET); i valori ammessi sono i seguenti (vedi il file includibile daodefs.prt per i valori delle costanti):

nAttribute Descrizione
DAOQDCANUPDATE ritorna non zero se la query può aggiornare il database
DAOQDCONNECT ritorna la stringa di connessione associata alla QueryDef
DAOQDCREATDATE ritorna la data di creazione della QueryDef
DAOQDCREATTIME ritorna l'ora di creazione della QueryDef 
DAOQDLASTUPDATE ritorna la data di ultimo aggiornamento
DAOQDLASTUPDTIME ritorna l'ora di ultimo aggiornamento 
DAOQDNAME ritorna il nome della QueryDef
DAOQDODBCTOUT ritorna il timeout utilizzato da ODBC quando la query è eseguita
DAOQDRECAFFECT ritorna il numero di record influenzati dalla query
DAOQDRETURNREC ritorna nonzero se la query ritorna record
DAOQDSQL ritorna la stringa SQL che specifica la query definita
DAOQDTYPE ritorna il tipo della query: di cancellazione, di aggiornamento, di aggiunta, di creazione tabella, ecc.
DAOQDISOPEN ritorna non-zero se la query è aperta
DAOQDSETCONN imposta la stringa di connessione per una query SQL pass-through su una sorgente ODBC aperta
DAOQDSETNAME imposta il nome della query salvata, sostituendo il nome assegnato alla creazione
DAOQDSETODBCTO imposta il valore di timeout usato da ODBC quando la query sarà eseguita
DAOQDSETRETREC specifica se la query ritorna record; è valido solo per query SQL pass-through
DAOQDSETSQL imposta la stringa SQL che specifica la query definita

Ritorna 0 se ok, -1 in caso di errore (in SET); ritorna una stringa vuota in caso di errore.

DAOQDEXECUTE(qHandle, nOptions)

esegue la query qHandle, in base a nOptions; non funziona con query che ritornano record. I possibili valori di nOptions,  combinabili con NOR, sono (vedi il file includibile daodefs.prt per i valori delle costanti):

Costante Descrizione
DAOCDenyWrite nega la possibilità di scrivere ad altri utenti
DAOCInconsistent ammette aggiornamenti inconsistenti
DAOCConsistent forza aggiornamenti consistenti
DAOCSQLPassThrough lo statement è passato verbatim al data source ODBC per l'elaborazione
DAOCFailOnError elimina tutti gli aggiornamenti in caso di errore (default)
DAOCSeeChanges genera un errore se un altro utente sta cambiando i dati in editing

Ritorna 0 se ok, -1 in caso di errore.

DAOQDFIELDCOUNT(qHandle)

ritorna il numero di campi definiti nella query, -1 in caso di errore.

DAOQDGETFIELDINFO(qHandle, cnIndex)

ritorna un vettore contenente le informazioni sul campo cnIndex, -1 se non esiste o se l'handle specificato è errato. Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni ivi contenute. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAOQDFIELDCOUNT(qHandle); cnIndex può essere un valore numerico oppure una stringa che specifica il nome del campo. Si veda DAORSGETFIELDINFO per informazioni sul contenuto del vettore.

DAOQDPARAMCOUNT(qHandle)

ritorna il numero di parametri definiti nella query, -1 in caso di errore.

DAOQDPARAMINFO(qHandle, cnIndex)

ritorna un vettore di tre elementi contenente le informazioni sul parametro cnIndex, -1 se non esiste o se l'handle specificato è errato. Il vettore dovrà essere liberato con VECFREE dopo aver utilizzato le informazioni ivi contenute. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAOQDPARAMCOUNT(qHandle); cnIndex può essere un valore numerico oppure una stringa che specifica il nome del parametro. Gli elementi del vettore ritornato sono (vedi il file includibile daodefs.prt per i valori delle costanti):

Costante Descrizione
DAOQDPNAME nome del parametro
DAOQDPTYPE tipo del parametro
DAOQDPVALUE valore del parametro

DAOQDGETPARVALUE(qHandle, cnIndex)

ritorna il valore del parametro cnIndex della query qHandle. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAOQDPARAMCOUNT(qHandle); cnIndex può essere un valore numerico oppure una stringa che specifica il nome del parametro. Ritorna una stringa vuota in caso di errore.

DAOQDSETPARVALUE(qHandle, cnIndex, exp)

imposta il valore del parametro cnIndex della query qHandle. I valori ammessi per cnIndex (se numerico) vanno da 1 a DAOQDPARAMCOUNT(qHandle); cnIndex può essere un valore numerico oppure una stringa che specifica il nome del parametro. Ritorna 0 se ok, -1 in caso di errore.

Gestione degli errori

DAOERRCOUNT(uDataBase)

restituisce il numero di errori nella collezione Errors dell'engine del database (corrisponde a CDaoException.GetErrorcount), -1 in caso di errore.
Dopo ciascuna operazione DAO, è opportuno verificare che il numero di errori restituito da DAOERRCOUNT sia zero; in caso contrario, è possibile utilizzare le funzioni successive per conoscere cosa ha prodotto l'errore. In ogni caso, il numero di errori è azzerato prima di ciascuna operazione DAO.

DAOGETERRORNUM(uDataBase, nIndex)

restituisce il numero dell'errore in posizione nIndex, -1 in caso di errore. I valori ammessi per l'indice vanno da 1 a DAOERRCOUNT(uDataBase).

DAOGETERRORDESC(uDataBase, nIndex)

restituisce una stringa contenente la descrizione dell'errore in posizione nIndex, oppure una stringa vuota in caso di errore. I valori ammessi per l'indice vanno da 1 a DAOERRCOUNT(uDataBase).

DAOGETERRORSRC(uDataBase, nIndex)

restituisce una stringa contenente la sorgente dell'errore in posizione nIndex, oppure una stringa vuota in caso di errore. I valori ammessi per l'indice vanno da 1 a DAOERRCOUNT(uDataBase). 

Inizio pagina Prossimo argomento Argomento precedente Indice per argomenti Indice analitico
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell