Classe CDaoQueryDef
Rappresenta una definizione della query, o "querydef, in genere salvata in un database.
Nota
L'oggetto DAO (Data Access Object) è supportato tramite Office 2013. DAO 3.6 è la versione finale ed è obsoleta.
Sintassi
class CDaoQueryDef : public CObject
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CDaoQueryDef::CDaoQueryDef | Costruisce un oggetto CDaoQueryDef . Successiva chiamata Open o Create , a seconda delle esigenze. |
Metodi pubblici
Nome | Descrizione |
---|---|
CDaoQueryDef::Append | Aggiunge l'oggetto querydef all'insieme QueryDefs del database come query salvata. |
CDaoQueryDef::CanUpdate | Restituisce un valore diverso da zero se la query può aggiornare il database. |
CDaoQueryDef::Close | Chiude l'oggetto querydef. Eliminare definitivamente l'oggetto C++ al termine dell'operazione. |
CDaoQueryDef::Create | Crea l'oggetto querydef DAO sottostante. Usare querydef come query temporanea oppure chiamare Append per salvarlo nel database. |
CDaoQueryDef::Execute | Esegue la query definita dall'oggetto querydef. |
CDaoQueryDef::GetConnect | Restituisce il stringa di connessione associato all'oggetto querydef. Il stringa di connessione identifica l'origine dati. Per le query pass-through SQL solo; in caso contrario, una stringa vuota. |
CDaoQueryDef::GetDateCreated | Restituisce la data di creazione della query salvata. |
CDaoQueryDef::GetDateLastUpdated | Restituisce la data dell'ultimo aggiornamento della query salvata. |
CDaoQueryDef::GetFieldCount | Restituisce il numero di campi definiti dall'oggetto querydef. |
CDaoQueryDef::GetFieldInfo | Restituisce informazioni su un campo specificato definito nella query. |
CDaoQueryDef::GetName | Restituisce il nome dell'oggetto querydef. |
CDaoQueryDef::GetODBCTimeout | Restituisce il valore di timeout utilizzato da ODBC (per una query ODBC) quando viene eseguito querydef che determina per quanto tempo consentire il completamento dell'azione della query. |
CDaoQueryDef::GetParameterCount | Restituisce il numero di parametri definiti per la query. |
CDaoQueryDef::GetParameterInfo | Restituisce informazioni su un parametro specificato per la query. |
CDaoQueryDef::GetParamValue | Restituisce il valore di un parametro specificato alla query. |
CDaoQueryDef::GetRecordsAffected | Restituisce il numero di record interessati da una query di azione. |
CDaoQueryDef::GetReturnsRecords | Restituisce un valore diverso da zero se la query definita dall'oggetto querydef restituisce record. |
CDaoQueryDef::GetSQL | Restituisce la stringa SQL che specifica la query definita dall'oggetto querydef. |
CDaoQueryDef::GetType | Restituisce il tipo di query: delete, update, append, make-table e così via. |
CDaoQueryDef::IsOpen | Restituisce un valore diverso da zero se querydef è aperto e può essere eseguito. |
CDaoQueryDef::Open | Apre un querydef esistente archiviato nell'insieme QueryDefs del database. |
CDaoQueryDef::SetConnect | Imposta il stringa di connessione per una query pass-through SQL in un'origine dati ODBC. |
CDaoQueryDef::SetName | Imposta il nome della query salvata, sostituendo il nome in uso quando è stato creato il querydef. |
CDaoQueryDef::SetODBCTimeout | Imposta il valore di timeout utilizzato da ODBC (per una query ODBC) quando viene eseguito querydef. |
CDaoQueryDef::SetParamValue | Imposta il valore di un parametro specificato sulla query. |
CDaoQueryDef::SetReturnsRecords | Specifica se querydef restituisce record. L'impostazione di questo attributo su TRUE è valida solo per le query pass-through SQL. |
CDaoQueryDef::SetSQL | Imposta la stringa SQL che specifica la query definita dall'oggetto querydef. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CDaoQueryDef::m_pDAOQueryDef | Puntatore all'interfaccia OLE per l'oggetto querydef DAO sottostante. |
CDaoQueryDef::m_pDatabase | Puntatore all'oggetto CDaoDatabase a cui è associato il querydef. L'oggetto querydef potrebbe essere salvato nel database o meno. |
Osservazioni:
Querydef è un oggetto di accesso ai dati che contiene l'istruzione SQL che descrive una query e le relative proprietà, ad esempio "Data creazione" e "Timeout ODBC". È anche possibile creare oggetti querydef temporanei senza salvarli, ma è utile, e molto più efficiente, salvare query comunemente riutilizzate in un database. Un oggetto CDaoDatabase gestisce una raccolta, denominata insieme QueryDefs, che contiene i relativi querydef salvati.
Nota
Le classi di database DAO sono distinte dalle classi di database MFC (Microsoft Foundation Class) basate su ODBC (Open Database Connectivity). Tutti i nomi delle classi di database DAO hanno il prefisso "CDao". È comunque possibile accedere alle origini dati ODBC con le classi DAO. In generale, le classi MFC basate su DAO sono più capaci delle classi MFC basate su ODBC; Le classi basate su DAO possono accedere ai dati, inclusi i driver ODBC, tramite il proprio motore di database. Le classi basate su DAO supportano anche operazioni DDL (Data Definition Language), ad esempio l'aggiunta di tabelle tramite le classi, senza dover chiamare direttamente DAO.
Utilizzo
Usare oggetti querydef per lavorare con una query salvata esistente o per creare una nuova query salvata o una query temporanea:
In tutti i casi, creare innanzitutto un
CDaoQueryDef
oggetto , fornendo un puntatore all'oggetto CDaoDatabase a cui appartiene la query.Eseguire quindi le operazioni seguenti, a seconda di ciò che si vuole:
Per usare una query salvata esistente, chiamare la funzione membro Open dell'oggetto querydef, specificando il nome della query salvata.
Per creare una nuova query salvata, chiamare la funzione create member dell'oggetto querydef, specificando il nome della query. Chiamare quindi Append per salvare la query aggiungendola all'insieme QueryDefs del database.
Create
inserisce querydef in uno stato aperto, quindi dopo aver chiamato non si chiamaCreate
Open
.Per creare un querydef temporaneo, chiamare
Create
. Passare una stringa vuota per il nome della query. Non chiamareAppend
.
Al termine dell'uso di un oggetto querydef, chiamare la relativa funzione membro Close , quindi eliminare definitivamente l'oggetto querydef.
Suggerimento
Il modo più semplice per creare query salvate consiste nel crearli e archiviarli nel database usando Microsoft Access. È quindi possibile aprirli e usarli nel codice MFC.
Scopi
È possibile usare un oggetto querydef per uno degli scopi seguenti:
Per creare un
CDaoRecordset
oggettoPer chiamare la funzione membro dell'oggetto
Execute
per eseguire direttamente una query di azione o una query pass-through SQL
È possibile usare un oggetto querydef per qualsiasi tipo di query, tra cui select, action, crosstab, delete, update, make-table, data definition, SQL pass-through, union e bulk query. Il contenuto dell'istruzione SQL specificata determina il tipo della query. Per informazioni sui tipi di query, vedere le Execute
funzioni membro e GetType
. I recordset vengono comunemente usati per le query che restituiscono righe, in genere query che usano l'istruzione SELECT ... Parole chiave FROM . Execute
viene usato più comunemente per le operazioni bulk. Per altre informazioni, vedere Execute
e CDaoRecordset
.
Querydefs e recordset
Per usare un oggetto querydef per creare un CDaoRecordset
oggetto, in genere si crea o si apre un oggetto querydef come descritto in precedenza. Creare quindi un oggetto recordset, passando un puntatore all'oggetto querydef quando si chiama CDaoRecordset::Open
. L'oggetto querydef passato deve trovarsi in uno stato aperto. Per ulteriori informazioni, vedere la classe CDaoRecordset
.
Non è possibile usare un querydef per creare un recordset (l'uso più comune per una querydef) a meno che non si trovi in uno stato aperto. Inserire querydef in uno stato aperto chiamando Open
o Create
.
Database esterni
Gli oggetti Querydef rappresentano il modo migliore per usare il dialetto SQL nativo di un motore di database esterno. Ad esempio, è possibile creare una query Transact SQL (usata in Microsoft SQL Server) e archiviarla in un oggetto querydef. Quando è necessario usare una query SQL non basata sul motore di database Microsoft Jet, è necessario fornire un stringa di connessione che punta all'origine dati esterna. Le query con stringa di connessione valide ignorano il motore di database e passano la query direttamente al server di database esterno per l'elaborazione.
Suggerimento
Il modo migliore per lavorare con le tabelle ODBC consiste nel collegarli a un Microsoft Jet (. Database MDB).
Per informazioni correlate, vedere gli argomenti "QueryDef Object", "QueryDefs Collection" e "CdbDatabase Object" in DAO SDK.
Gerarchia di ereditarietà
CDaoQueryDef
Requisiti
Intestazione: afxdao.h
CDaoQueryDef::Append
Chiamare questa funzione membro dopo aver chiamato Create per creare un nuovo oggetto querydef.
virtual void Append();
Osservazioni:
Append
salva l'oggetto querydef nel database aggiungendo l'oggetto all'insieme QueryDefs del database. È possibile usare querydef come oggetto temporaneo senza accodarlo, ma se si vuole renderlo persistente, è necessario chiamare Append
.
Se si tenta di accodare un oggetto querydef temporaneo, MFC genera un'eccezione di tipo CDaoException.
CDaoQueryDef::CanUpdate
Chiamare questa funzione membro per determinare se è possibile modificare querydef, ad esempio modificandone il nome o la stringa SQL.
BOOL CanUpdate();
Valore restituito
Diverso da zero se è possibile modificare querydef; in caso contrario, 0.
Osservazioni:
È possibile modificare querydef se:
Non si basa su un database aperto di sola lettura.
Si dispone delle autorizzazioni di aggiornamento per il database.
Questo dipende dal fatto che siano state implementate funzionalità di sicurezza. MFC non fornisce supporto per la sicurezza; è necessario implementarlo manualmente chiamando DAO direttamente o tramite Microsoft Access. Vedere l'argomento "Proprietà autorizzazioni" nella Guida di DAO.
CDaoQueryDef::CDaoQueryDef
Costruisce un oggetto CDaoQueryDef
.
CDaoQueryDef(CDaoDatabase* pDatabase);
Parametri
pDatabase
Puntatore a un oggetto CDaoDatabase aperto.
Osservazioni:
L'oggetto può rappresentare un querydef esistente archiviato nell'insieme QueryDefs del database, una nuova query da archiviare nella raccolta o una query temporanea, non da archiviare. Il passaggio successivo dipende dal tipo di querydef:
Se l'oggetto rappresenta un querydef esistente, chiamare la funzione membro Open dell'oggetto per inizializzarla.
Se l'oggetto rappresenta un nuovo querydef da salvare, chiamare la funzione membro Create dell'oggetto. In questo modo l'oggetto viene aggiunto all'insieme QueryDefs del database. Chiamare
CDaoQueryDef
quindi le funzioni membro per impostare gli attributi dell'oggetto. Infine, chiamare Append.Se l'oggetto rappresenta un querydef temporaneo (non da salvare nel database), chiamare
Create
, passando una stringa vuota per il nome della query. Dopo aver chiamatoCreate
, inizializzare querydef impostandone direttamente gli attributi. Non chiamareAppend
.
Per impostare gli attributi della querydef, è possibile usare le funzioni membro SetName, SetSQL, SetConnect, SetODBCTimeout e SetReturnsRecords .
Al termine dell'oggetto querydef, chiamare la relativa funzione membro Close . Se si dispone di un puntatore all'oggetto querydef, usare l'operatore delete
per eliminare definitivamente l'oggetto C++.
CDaoQueryDef::Close
Chiamare questa funzione membro al termine dell'utilizzo dell'oggetto querydef.
virtual void Close();
Osservazioni:
La chiusura dell'oggetto querydef rilascia l'oggetto DAO sottostante, ma non elimina definitivamente l'oggetto querydef DAO salvato o l'oggetto C++ CDaoQueryDef
. Ciò non equivale a CDaoDatabase::D eleteQueryDef, che elimina l'oggetto querydef dall'insieme QueryDefs del database in DAO (se non un querydef temporaneo).
CDaoQueryDef::Create
Chiamare questa funzione membro per creare una nuova query salvata o una nuova query temporanea.
virtual void Create(
LPCTSTR lpszName = NULL,
LPCTSTR lpszSQL = NULL);
Parametri
lpszName
Nome univoco della query salvata nel database. Per informazioni dettagliate sulla stringa, vedere l'argomento "Metodo CreateQueryDef" nella Guida di DAO. Se si accetta il valore predefinito, viene creata una stringa vuota, viene creato un querydef temporaneo. Tale query non viene salvata nell'insieme QueryDefs.
lpszSQL
Stringa SQL che definisce la query. Se si accetta il valore predefinito NULL, è necessario chiamare successivamente SetSQL per impostare la stringa. Fino ad allora, la query non è definita. È tuttavia possibile usare la query non definita per aprire un recordset; per informazioni dettagliate, vedere La sezione Osservazioni. L'istruzione SQL deve essere definita prima di poter aggiungere querydef all'insieme QueryDefs.
Osservazioni:
Se si passa un nome in lpszName, è possibile chiamare Append per salvare querydef nell'insieme QueryDefs del database. In caso contrario, l'oggetto è un querydef temporaneo e non viene salvato. In entrambi i casi, querydef è in uno stato aperto ed è possibile usarlo per creare un oggetto CDaoRecordset o chiamare la funzione membro Execute di querydef.
Se non si specifica un'istruzione SQL in lpszSQL, non è possibile eseguire la query con Execute
ma è possibile usarla per creare un recordset. In tal caso, MFC usa l'istruzione SQL predefinita del recordset.
CDaoQueryDef::Execute
Chiamare questa funzione membro per eseguire la query definita dall'oggetto querydef.
virtual void Execute(int nOptions = dbFailOnError);
Parametri
nOptions
Intero che determina le caratteristiche della query. Per informazioni correlate, vedere l'argomento "Execute Method" nella Guida di DAO. È possibile usare l'operatore OR bit per bit (|
) per combinare le costanti seguenti per questo argomento:
dbDenyWrite
Negare l'autorizzazione di scrittura ad altri utenti.dbInconsistent
Aggiornamenti incoerenti.dbConsistent
Aggiornamenti coerenti.dbSQLPassThrough
Pass-through SQL. Fa sì che l'istruzione SQL venga passata a un database ODBC per l'elaborazione.dbFailOnError
Valore predefinito. Eseguire il rollback degli aggiornamenti se si verifica un errore e segnalare l'errore all'utente.dbSeeChanges
Generare un errore di run-time se un altro utente sta modificando i dati che si stanno modificando.
Nota
Per una spiegazione dei termini "incoerenti" e "coerenti", vedere l'argomento "Execute Method" nella Guida di DAO.
Osservazioni:
Gli oggetti Querydef usati per l'esecuzione in questo modo possono rappresentare solo uno dei tipi di query seguenti:
Query di azione
Query pass-through SQL
Execute
non funziona per le query che restituiscono record, ad esempio le query di selezione. Execute
viene comunemente usato per le query di operazioni bulk, ad esempio UPDATE, INSERT o SELECT INTO o per le operazioni DDL (Data Definition Language).
Suggerimento
Il modo migliore per lavorare con le origini dati ODBC consiste nel collegare tabelle a microsoft Jet (. Database MDB). Per altre informazioni, vedere l'argomento "Accesso a database esterni con DAO" nella Guida di DAO.
Chiamare la funzione membro GetRecordsAffected dell'oggetto querydef per determinare il numero di record interessati dalla chiamata più recente Execute
. Ad esempio, restituisce GetRecordsAffected
informazioni sul numero di record eliminati, aggiornati o inseriti durante l'esecuzione di una query di azione. Il conteggio restituito non riflette le modifiche apportate alle tabelle correlate quando sono attivi aggiornamenti o eliminazioni a catena.
Se si includono e dbInconsistent
dbConsistent
o se non si include nessuno dei due, il risultato è l'impostazione predefinita. dbInconsistent
Execute
non restituisce un recordset. Se si usa Execute
in una query che seleziona i record, MFC genera un'eccezione di tipo CDaoException.
CDaoQueryDef::GetConnect
Chiamare questa funzione membro per ottenere il stringa di connessione associato all'origine dati di querydef.
CString GetConnect();
Valore restituito
Oggetto CString
contenente il stringa di connessione per querydef.
Osservazioni:
Questa funzione viene usata solo con origini dati ODBC e determinati driver ISAM. Non viene usato con i database Microsoft Jet (.MDB
). In questo caso, GetConnect
restituisce una stringa vuota. Per ulteriori informazioni, vedere SetConnect
.
Suggerimento
Il modo preferito per lavorare con le tabelle ODBC consiste nel collegarli a un oggetto . Database MDB. Per altre informazioni, vedere l'argomento "Accesso a database esterni con DAO" nella Guida di DAO.
Per informazioni sulle stringa di connessione, vedere l'argomento "Connect Property" nella Guida di DAO.
CDaoQueryDef::GetDateCreated
Chiamare questa funzione membro per ottenere la data di creazione dell'oggetto querydef.
COleDateTime GetDateCreated();
Valore restituito
Oggetto COleDateTime contenente la data e l'ora di creazione dell'oggetto querydef.
Osservazioni:
Per informazioni correlate, vedere l'argomento "DateCreated, LastUpdated Properties" nella Guida di DAO.
CDaoQueryDef::GetDateLastUpdated
Chiamare questa funzione membro per ottenere la data dell'ultimo aggiornamento dell'oggetto querydef, ovvero quando una delle relative proprietà è stata modificata, ad esempio il nome, la stringa SQL o il relativo stringa di connessione.
COleDateTime GetDateLastUpdated();
Valore restituito
Oggetto COleDateTime
contenente la data e l'ora dell'ultimo aggiornamento dell'oggetto querydef.
Osservazioni:
Per informazioni correlate, vedere l'argomento "DateCreated, LastUpdated Properties" nella Guida di DAO.
CDaoQueryDef::GetFieldCount
Chiamare questa funzione membro per recuperare il numero di campi nella query.
short GetFieldCount();
Valore restituito
Numero di campi definiti nella query.
Osservazioni:
GetFieldCount
è utile per scorrere tutti i campi nell'oggetto querydef. A tale scopo, usare GetFieldCount
con GetFieldInfo
.
CDaoQueryDef::GetFieldInfo
Chiamare questa funzione membro per ottenere vari tipi di informazioni su un campo definito nell'oggetto querydef.
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametri
nIndex
Indice in base zero del campo desiderato nell'insieme Fields di querydef, per la ricerca in base all'indice.
fieldinfo
Riferimento a un CDaoFieldInfo
oggetto che restituisce le informazioni richieste.
dwInfoOptions
Opzioni che specificano le informazioni sul campo da recuperare. Le opzioni disponibili sono elencate di seguito insieme a ciò che causano la restituzione della funzione:
nome AFX_DAO_PRIMARY_INFO (impostazione predefinita), Type, Size, Attributes
AFX_DAO_SECONDARY_INFO Informazioni primarie più: Posizione ordinale, Obbligatorio, Consenti lunghezza zero, Campo di origine, Nome esterno, Tabella di origine, Ordine di confronto
AFX_DAO_ALL_INFO informazioni primarie e secondarie più: valore predefinito, testo di convalida, regola di convalida
lpszName
Stringa contenente il nome del campo desiderato, per la ricerca in base al nome. È possibile usare CString
.
Osservazioni:
Per una descrizione delle informazioni restituite in fieldinfo, vedere la struttura CDaoFieldInfo. Questa struttura ha membri che corrispondono alle informazioni descrittive riportate in dwInfoOptions sopra. Se si richiede un livello di informazioni, si ottengono anche livelli precedenti di informazioni.
CDaoQueryDef::GetName
Chiamare questa funzione membro per recuperare il nome della query rappresentata dall'oggetto querydef.
CString GetName();
Valore restituito
Nome della query.
Osservazioni:
I nomi querydef sono nomi univoci definiti dall'utente. Per altre informazioni sui nomi querydef, vedere l'argomento "Proprietà name" nella Guida di DAO.
CDaoQueryDef::GetODBCTimeout
Chiamare questa funzione membro per recuperare il timeout corrente prima del timeout di una query a un'origine dati ODBC.
short GetODBCTimeout();
Valore restituito
Numero di secondi prima del timeout di una query.
Osservazioni:
Per informazioni su questo limite di tempo, vedere l'argomento "Proprietà ODBCTimeout" nella Guida di DAO.
Suggerimento
Il modo migliore per lavorare con le tabelle ODBC consiste nel collegarli a un Microsoft Jet (. Database MDB). Per altre informazioni, vedere l'argomento "Accesso a database esterni con DAO" nella Guida di DAO.
CDaoQueryDef::GetParameterCount
Chiamare questa funzione membro per recuperare il numero di parametri nella query salvata.
short GetParameterCount();
Valore restituito
Numero di parametri definiti nella query.
Osservazioni:
GetParameterCount
è utile per scorrere tutti i parametri nell'oggetto querydef. A tale scopo, usare GetParameterCount
con GetParameterInfo
.
Per informazioni correlate, vedere gli argomenti "Parameter Object", "Parameters Collection" e "PARAMETERS Declaration (SQL)" nella Guida DI DAO.
CDaoQueryDef::GetParameterInfo
Chiamare questa funzione membro per ottenere informazioni su un parametro definito nell'oggetto querydef.
void GetParameterInfo(
int nIndex,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetParameterInfo(
LPCTSTR lpszName,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametri
nIndex
Indice in base zero del parametro desiderato nell'insieme Parameters di querydef, per la ricerca in base all'indice.
paraminfo
Riferimento a un oggetto CDaoParameterInfo che restituisce le informazioni richieste.
dwInfoOptions
Opzioni che specificano le informazioni sul parametro da recuperare. L'opzione disponibile è elencata di seguito insieme a ciò che fa sì che la funzione restituisca:
AFX_DAO_PRIMARY_INFO
(Impostazione predefinita) Nome, Tipo
lpszName
Stringa contenente il nome del parametro desiderato, per la ricerca in base al nome. È possibile usare CString
.
Osservazioni:
Per una descrizione delle informazioni restituite in paraminfo
, vedere la CDaoParameterInfo
struttura . Questa struttura ha membri che corrispondono alle informazioni descrittive riportate sopra dwInfoOptions
.
Per informazioni correlate, vedere l'argomento "Dichiarazione PARAMETERS (SQL)" nella Guida di DAO.
CDaoQueryDef::GetParamValue
Chiamare questa funzione membro per recuperare il valore corrente del parametro specificato archiviato nell'insieme Parameters di querydef.
virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);
Parametri
lpszName
Nome del parametro il cui valore si desidera, per la ricerca in base al nome.
nIndex
Indice in base zero del parametro nell'insieme Parameters di querydef, per la ricerca in base all'indice. È possibile ottenere questo valore con le chiamate a GetParameterCount e GetParameterInfo.
Valore restituito
Oggetto della classe COleVariant che contiene il valore del parametro.
Osservazioni:
È possibile accedere al parametro in base al nome o alla relativa posizione ordinale nella raccolta.
Per informazioni correlate, vedere l'argomento "Dichiarazione PARAMETERS (SQL)" nella Guida di DAO.
CDaoQueryDef::GetRecordsAffected
Chiamare questa funzione membro per determinare il numero di record interessati dall'ultima chiamata di Execute.
long GetRecordsAffected();
Valore restituito
Numero di record interessati.
Osservazioni:
Il conteggio restituito non riflette le modifiche apportate alle tabelle correlate quando sono attivi aggiornamenti o eliminazioni a catena.
Per informazioni correlate, vedere l'argomento "RecordsAffected Property" nella Guida di DAO.
CDaoQueryDef::GetReturnsRecords
Chiamare questa funzione membro per determinare se querydef è basata su una query che restituisce record.
BOOL GetReturnsRecords();
Valore restituito
Diverso da zero se querydef si basa su una query che restituisce record; in caso contrario, 0.
Osservazioni:
Questa funzione membro viene usata solo per le query pass-through SQL. Per altre informazioni sulle query SQL, vedere la funzione membro Execute . Per altre informazioni sull'uso di query pass-through SQL, vedere la funzione membro SetReturnsRecords .
Per informazioni correlate, vedere l'argomento "Proprietà ReturnsRecords" nella Guida di DAO.
CDaoQueryDef::GetSQL
Chiamare questa funzione membro per recuperare l'istruzione SQL che definisce la query su cui si basa querydef.
CString GetSQL();
Valore restituito
Istruzione SQL che definisce la query su cui si basa querydef.
Osservazioni:
È possibile analizzare la stringa per parole chiave, nomi di tabella e così via.
Per informazioni correlate, vedere gli argomenti "Proprietà SQL", "Confronto tra Microsoft Jet motore di database SQL e SQL ANSI" e "Esecuzione di query su un database con SQL nel codice" nella Guida di DAO.
CDaoQueryDef::GetType
Chiamare questa funzione membro per determinare il tipo di query dell'oggetto querydef.
short GetType();
Valore restituito
Tipo della query definita dall'oggetto querydef. Per i valori, vedere Osservazioni.
Osservazioni:
Il tipo di query viene impostato in base a quanto specificato nella stringa SQL del querydef quando si crea querydef o si chiama una funzione membro SetSQL di querydef esistente. Il tipo di query restituito da questa funzione può essere uno dei valori seguenti:
dbQSelect
SelezionareAzione
dbQAction
dbQCrosstab
Campi incrociatidbQDelete
EliminadbQUpdate
UpdatedbQAppend
AggiungeredbQMakeTable
Creazione tabelladbQDDL
Definizione dei datidbQSQLPassThrough
Pass-throughdbQSetOperation
UnionedbQSPTBulk
Usato condbQSQLPassThrough
per specificare una query che non restituisce record.
Nota
Per creare una query pass-through SQL, non impostare la dbSQLPassThrough
costante . Questa impostazione viene impostata automaticamente dal motore di database Microsoft Jet quando si crea un oggetto querydef e si imposta il stringa di connessione.
Per informazioni sulle stringhe SQL, vedere GetSQL. Per informazioni sui tipi di query, vedere Esecuzione.
CDaoQueryDef::IsOpen
Chiamare questa funzione membro per determinare se l'oggetto CDaoQueryDef
è attualmente aperto.
BOOL IsOpen() const;
Valore restituito
Diverso da zero se l'oggetto CDaoQueryDef
è attualmente aperto; in caso contrario, 0.
Osservazioni:
Un oggetto querydef deve trovarsi in uno stato aperto prima di usarlo per chiamare Execute
o creare un CDaoRecordset
oggetto . Per inserire un querydef in uno stato aperto, chiamare Create
(per un nuovo querydef) o Open
(per un querydef esistente).
CDaoQueryDef::m_pDatabase
Contiene un puntatore all'oggetto CDaoDatabase associato all'oggetto querydef.
Osservazioni:
Usare questo puntatore se è necessario accedere direttamente al database. Ad esempio, per ottenere puntatori ad altri oggetti querydef o recordset nelle raccolte del database.
CDaoQueryDef::m_pDAOQueryDef
Contiene un puntatore all'interfaccia OLE per l'oggetto querydef DAO sottostante.
Osservazioni:
Questo puntatore viene fornito per completezza e coerenza con le altre classi. Tuttavia, poiché MFC incapsula completamente le querydef DAO, è improbabile che sia necessario. Se lo si usa, farlo con cautela. In particolare, non modificare il valore del puntatore, a meno che non si sappia cosa si sta facendo.
CDaoQueryDef::Open
Chiamare questa funzione membro per aprire una querydef salvata in precedenza nell'insieme QueryDefs del database.
virtual void Open(LPCTSTR lpszName = NULL);
Parametri
lpszName
Stringa contenente il nome dell'oggetto querydef salvato da aprire. È possibile usare CString
.
Osservazioni:
Quando querydef è aperto, è possibile chiamare la relativa Execute
funzione membro o usare querydef per creare un CDaoRecordset
oggetto.
CDaoQueryDef::SetConnect
Chiamare questa funzione membro per impostare il stringa di connessione dell'oggetto querydef.
void SetConnect(LPCTSTR lpszConnect);
Parametri
lpszConnect
Stringa contenente un stringa di connessione per l'oggetto CDaoDatabase associato.
Osservazioni:
Il stringa di connessione viene usato per passare informazioni aggiuntive a ODBC e a determinati driver ISAM in base alle esigenze. Non viene usato per i database Microsoft Jet (.MDB
).
Suggerimento
Il modo preferito per lavorare con le tabelle ODBC consiste nel collegarli a un oggetto . Database MDB.
Prima di eseguire un querydef che rappresenta una query pass-through SQL su un'origine dati ODBC, impostare il stringa di connessione con SetConnect
e chiamare SetReturnsRecords per specificare se la query restituisce record.
Per altre informazioni sulla struttura di stringa di connessione ed esempi di componenti stringa di connessione, vedere l'argomento "Connect Property" nella Guida di DAO.
CDaoQueryDef::SetName
Chiamare questa funzione membro se si vuole modificare il nome di un querydef che non è temporaneo.
void SetName(LPCTSTR lpszName);
Parametri
lpszName
Stringa contenente il nuovo nome per una query nontemporary nell'oggetto CDaoDatabase associato.
Osservazioni:
I nomi querydef sono nomi univoci definiti dall'utente. È possibile chiamare SetName
prima che l'oggetto querydef venga accodato all'insieme QueryDefs.
CDaoQueryDef::SetODBCTimeout
Chiamare questa funzione membro per impostare il limite di tempo prima del timeout di una query a un'origine dati ODBC.
void SetODBCTimeout(short nODBCTimeout);
Parametri
nODBCTimeout
Numero di secondi prima del timeout di una query.
Osservazioni:
Questa funzione membro consente di eseguire l'override del numero predefinito di secondi prima delle operazioni successive sull'origine dati connessa "timeout". Un'operazione potrebbe verificarsi un timeout a causa di problemi di accesso alla rete, tempi di elaborazione delle query eccessivi e così via. Chiamare SetODBCTimeout
prima di eseguire una query con questo querydef se si vuole modificare il valore di timeout della query. Poiché ODBC riutilizza le connessioni, il valore di timeout è lo stesso per tutti i client nella stessa connessione.
Il valore predefinito per i timeout delle query è 60 secondi.
CDaoQueryDef::SetParamValue
Chiamare questa funzione membro per impostare il valore di un parametro nell'oggetto querydef in fase di esecuzione.
virtual void SetParamValue(
LPCTSTR lpszName,
const COleVariant& varValue);
virtual void SetParamValue(
int nIndex,
const COleVariant& varValue);
Parametri
lpszName
Nome del parametro di cui si desidera impostare il valore.
varValue
Valore da impostare; vedere Osservazioni.
nIndex
Posizione ordinale del parametro nell'insieme Parameters di querydef. È possibile ottenere questo valore con le chiamate a GetParameterCount e GetParameterInfo.
Osservazioni:
Il parametro deve essere già stabilito come parte della stringa SQL del querydef. È possibile accedere al parametro in base al nome o alla relativa posizione ordinale nella raccolta.
Specificare il valore da impostare come COleVariant
oggetto . Per informazioni sull'impostazione del valore desiderato e sul tipo nell'oggetto COleVariant
, vedere classe COleVariant.
CDaoQueryDef::SetReturnsRecords
Chiamare questa funzione membro come parte del processo di configurazione di una query pass-through SQL in un database esterno.
void SetReturnsRecords(BOOL bReturnsRecords);
Parametri
bReturnsRecords
Passare TRUE se la query in un database esterno restituisce record; in caso contrario, FALSE.
Osservazioni:
In questo caso, è necessario creare querydef e impostarne le proprietà usando altre CDaoQueryDef
funzioni membro. Per una descrizione dei database esterni, vedere SetConnect.
CDaoQueryDef::SetSQL
Chiamare questa funzione membro per impostare l'istruzione SQL eseguita dall'oggetto querydef.
void SetSQL(LPCTSTR lpszSQL);
Parametri
lpszSQL
Stringa contenente un'istruzione SQL completa, adatta per l'esecuzione. La sintassi di questa stringa dipende dal sistema DBMS di destinazione della query. Per una descrizione della sintassi usata nel motore di database Microsoft Jet, vedere l'argomento "Compilazione di istruzioni SQL nel codice" nella Guida di DAO.
Osservazioni:
Un uso tipico di è la configurazione di SetSQL
un oggetto querydef da usare in una query pass-through SQL. Per la sintassi delle query pass-through SQL nel sistema DBMS di destinazione, vedere la documentazione relativa a DBMS.
Vedi anche
CObject
Classe
Grafico della gerarchia
CDaoRecordset
Classe
CDaoDatabase
Classe
CDaoTableDef
Classe
CDaoException
Classe