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:

  1. In tutti i casi, creare innanzitutto un CDaoQueryDef oggetto , fornendo un puntatore all'oggetto CDaoDatabase a cui appartiene la query.

  2. 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 chiama Create Open.

    • Per creare un querydef temporaneo, chiamare Create. Passare una stringa vuota per il nome della query. Non chiamare Append.

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 oggetto

  • Per 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à

CObject

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 chiamato Create, inizializzare querydef impostandone direttamente gli attributi. Non chiamare Append.

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 Selezionare

  • Azione dbQAction

  • dbQCrosstab Campi incrociati

  • dbQDelete Elimina

  • dbQUpdate Update

  • dbQAppend Aggiungere

  • dbQMakeTable Creazione tabella

  • dbQDDL Definizione dei dati

  • dbQSQLPassThrough Pass-through

  • dbQSetOperation Unione

  • dbQSPTBulk Usato con dbQSQLPassThrough 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