Condividi tramite


Classe CDaoWorkspace

Gestisce una sessione di database denominata e protetta da password, dall'accesso alla disconnessione, di un singolo utente.

Nota

Gli oggetti DAO (Data Access Objects) sono supportati tramite Office 2013. DAO 3.6 è la versione finale ed è considerata obsoleta.

Sintassi

class CDaoWorkspace : public CObject

Membri

Costruttori pubblici

Nome Descrizione
CDaoWorkspace::CDaoWorkspace Costruisce un oggetto area di lavoro. Successivamente, chiamare Create o Open.

Metodi pubblici

Nome Descrizione
CDaoWorkspace::Append Aggiunge un'area di lavoro appena creata alla raccolta Workspaces del motore di database.
CDaoWorkspace::BeginTrans Avvia una nuova transazione, che si applica a tutti i database aperti nell'area di lavoro.
CDaoWorkspace::Close Chiude l'area di lavoro e tutti gli oggetti contenuti. Viene eseguito il rollback delle transazioni in sospeso.
CDaoWorkspace::CommitTrans Completa la transazione corrente e salva le modifiche.
CDaoWorkspace::CompactDatabase Compatta (o duplica) un database.
CDaoWorkspace::Create Crea un nuovo oggetto area di lavoro DAO.
CDaoWorkspace::GetDatabaseCount Restituisce il numero di oggetti di database DAO nell'insieme Databases dell'area di lavoro.
CDaoWorkspace::GetDatabaseInfo Restituisce informazioni su un database DAO specificato definito nella raccolta Databases dell'area di lavoro.
CDaoWorkspace::GetIniPath Restituisce il percorso delle impostazioni di inizializzazione del motore di database Microsoft Jet nel Registro di sistema di Windows.
CDaoWorkspace::GetIsolateODBCTrans Restituisce un valore che indica se più transazioni che coinvolgono la stessa origine dati ODBC sono isolate tramite più connessioni forzate all'origine dati.
CDaoWorkspace::GetLoginTimeout Restituisce il numero di secondi prima che si verifichi un errore quando l'utente tenta di accedere a un database ODBC.
CDaoWorkspace::GetName Restituisce il nome definito dall'utente per l'oggetto area di lavoro.
CDaoWorkspace::GetUserName Restituisce il nome utente specificato al momento della creazione dell'area di lavoro. Si tratta del nome del proprietario dell'area di lavoro.
CDaoWorkspace::GetVersion Restituisce una stringa contenente la versione del motore di database associato all'area di lavoro.
CDaoWorkspace::GetWorkspaceCount Restituisce il numero di oggetti dell'area di lavoro DAO nell'insieme Workspaces del motore di database.
CDaoWorkspace::GetWorkspaceInfo Restituisce informazioni su un'area di lavoro DAO specificata definita nella raccolta Workspaces del motore di database.
CDaoWorkspace::Idle Consente al motore di database di eseguire attività in background.
CDaoWorkspace::IsOpen Restituisce un valore diverso da zero se l'area di lavoro è aperta.
CDaoWorkspace::Open Apre in modo esplicito un oggetto area di lavoro associato all'area di lavoro predefinita di DAO.
CDaoWorkspace::RepairDatabase Tenta di ripristinare un database danneggiato.
CDaoWorkspace::Rollback Termina la transazione corrente e non salva le modifiche.
CDaoWorkspace::SetDefaultPassword Imposta la password utilizzata dal motore di database quando viene creato un oggetto area di lavoro senza una password specifica.
CDaoWorkspace::SetDefaultUser Imposta il nome utente utilizzato dal motore di database quando viene creato un oggetto area di lavoro senza un nome utente specifico.
CDaoWorkspace::SetIniPath Imposta il percorso delle impostazioni di inizializzazione del motore di database Microsoft Jet nel Registro di sistema di Windows.
CDaoWorkspace::SetIsolateODBCTrans Specifica se più transazioni che coinvolgono la stessa origine dati ODBC sono isolate forzando più connessioni all'origine dati.
CDaoWorkspace::SetLoginTimeout Imposta il numero di secondi prima che si verifichi un errore quando l'utente tenta di accedere a un'origine dati ODBC.

Membri dati pubblici

Nome Descrizione
CDaoWorkspace::m_pDAOWorkspace Punta all'oggetto area di lavoro DAO sottostante.

Osservazioni:

Nella maggior parte dei casi non saranno necessarie più aree di lavoro e non sarà necessario creare oggetti dell'area di lavoro espliciti; quando si aprono oggetti database e recordset, usano l'area di lavoro predefinita di DAO. Tuttavia, se necessario, è possibile eseguire più sessioni alla volta creando più oggetti dell'area di lavoro. Ogni oggetto dell'area di lavoro può contenere più oggetti di database aperti nella propria raccolta Databases. In MFC un'area di lavoro è principalmente una gestione transazioni, specificando un set di database aperti tutti nello stesso "spazio delle transazioni".

Nota

Le classi di database DAO sono distinte dalle classi di database MFC basate su ODBC (Open Database Connectivity). Tutti i nomi delle classi di database DAO hanno un prefisso "CDao". In generale, le classi MFC basate su DAO sono più capaci delle classi MFC basate su ODBC. Le classi basate su DAO accedono ai dati tramite il motore di database Microsoft Jet, inclusi i driver ODBC. Supportano anche operazioni DDL (Data Definition Language), ad esempio la creazione di database e l'aggiunta di tabelle e campi tramite le classi, senza dover chiamare direttamente DAO.

Funzionalità

La classe CDaoWorkspace fornisce:

  • Se necessario, l'accesso esplicito a un'area di lavoro predefinita creata inizializzando il motore di database. In genere si usa l'area di lavoro predefinita di DAO in modo implicito creando oggetti database e recordset.

  • Spazio delle transazioni in cui le transazioni si applicano a tutti i database aperti nell'area di lavoro. È possibile creare più aree di lavoro per gestire spazi delle transazioni separati.

  • Interfaccia a molte proprietà del motore di database Microsoft Jet sottostante (vedere le funzioni membro statiche). Aprire o creare un'area di lavoro o chiamare una funzione membro statica prima di aprire o creare, inizializza il motore di database.

  • Accesso alla raccolta Workspaces del motore di database, che archivia tutte le aree di lavoro attive aggiunte. È anche possibile creare e usare aree di lavoro senza aggiungerle alla raccolta.

Sicurezza

MFC non implementa le raccolte Utenti e gruppi in DAO, usate per il controllo di sicurezza. Se sono necessari questi aspetti di DAO, è necessario programmarli manualmente tramite chiamate dirette alle interfacce DAO. Per informazioni, vedere La nota tecnica 54.

Utilizzo

È possibile usare la classe CDaoWorkspace per:

  • Aprire in modo esplicito l'area di lavoro predefinita.

    In genere l'uso dell'area di lavoro predefinita è implicito quando si aprono nuovi oggetti CDaoDatabase o CDaoRecordset . Potrebbe tuttavia essere necessario accedervi in modo esplicito. Ad esempio, per accedere alle proprietà del motore di database o alla raccolta Workspaces. Vedere "Uso implicito dell'area di lavoro predefinita" di seguito.

  • Creare nuove aree di lavoro. Chiamare Append se si desidera aggiungerli all'insieme Workspaces.

  • Aprire un'area di lavoro esistente nell'insieme Workspaces.

La creazione di una nuova area di lavoro che non esiste già nell'insieme Workspaces è descritta nella funzione Crea membro. Gli oggetti dell'area di lavoro non vengono mantenuti in alcun modo tra le sessioni del motore di database. Se l'applicazione collega MFC in modo statico, terminando l'applicazione annulla l'inizializzazione del motore di database. Se l'applicazione si collega in modo dinamico a MFC, il motore di database non viene inizializzato quando la DLL MFC viene scaricata.

L'apertura esplicita dell'area di lavoro predefinita o l'apertura di un'area di lavoro esistente nell'insieme Workspaces è descritta nella funzione membro Open .

Terminare una sessione dell'area di lavoro chiudendo l'area di lavoro con la funzione membro Close . Close chiude tutti i database non chiusi ed esegue il rollback delle transazioni di cui non è stato eseguito il commit.

Transazioni

DAO gestisce le transazioni a livello di area di lavoro; di conseguenza, le transazioni in un'area di lavoro con più database aperti si applicano a tutti i database. Ad esempio, se due database hanno aggiornamenti di cui non è stato eseguito il commit e si chiama CommitTrans, viene eseguito il commit di tutti gli aggiornamenti. Se si desidera limitare le transazioni a un singolo database, è necessario un oggetto area di lavoro separato.

Uso implicito dell'area di lavoro predefinita

MFC usa l'area di lavoro predefinita di DAO in modo implicito nelle circostanze seguenti:

  • Se si crea un nuovo CDaoDatabase oggetto ma non lo si esegue tramite un oggetto esistente CDaoWorkspace , MFC crea automaticamente un oggetto area di lavoro temporaneo, che corrisponde all'area di lavoro predefinita di DAO. In questo caso per più database, tutti gli oggetti di database sono associati all'area di lavoro predefinita. È possibile accedere all'area di lavoro di un database tramite un CDaoDatabase membro dati.

  • Analogamente, se si crea un CDaoRecordset oggetto senza fornire un puntatore a un CDaoDatabase oggetto, MFC crea un oggetto di database temporaneo e, per estensione, un oggetto area di lavoro temporaneo. È possibile accedere al database di un recordset e indirettamente all'area di lavoro tramite un CDaoRecordset membro dati.

Altre operazioni

Vengono inoltre fornite altre operazioni di database, ad esempio il ripristino di un database danneggiato o la compattazione di un database.

Per informazioni sulla chiamata diretta daO e sulla sicurezza DAO, vedere La nota tecnica 54.

Gerarchia di ereditarietà

CObject

CDaoWorkspace

Requisiti

Intestazione: afxdao.h

CDaoWorkspace::Append

Chiamare questa funzione membro dopo aver chiamato Create.

virtual void Append();

Osservazioni:

Append aggiunge un oggetto area di lavoro appena creato all'insieme Workspaces del motore di database. Le aree di lavoro non vengono mantenute tra le sessioni del motore di database; vengono archiviati solo in memoria, non su disco. Non è necessario aggiungere un'area di lavoro; in caso contrario, è comunque possibile usarlo.

Un'area di lavoro aggiunta rimane nell'insieme Workspaces, in uno stato attivo e aperto, fino a quando non si chiama la relativa funzione membro Close .

Per informazioni correlate, vedere l'argomento "Append Method" nella Guida di DAO.

CDaoWorkspace::BeginTrans

Chiamare questa funzione membro per avviare una transazione.

void BeginTrans();

Osservazioni:

Dopo aver chiamato BeginTrans, gli aggiornamenti apportati ai dati o alla struttura del database diventano effettivi quando si esegue il commit della transazione. Poiché l'area di lavoro definisce un singolo spazio transazionale, la transazione si applica a tutti i database aperti nell'area di lavoro. Esistono due modi per completare la transazione:

La chiusura dell'oggetto area di lavoro o di un oggetto di database mentre una transazione è in sospeso esegue il rollback di tutte le transazioni in sospeso.

Se è necessario isolare le transazioni in un'origine dati ODBC da quelle in un'altra origine dati ODBC, vedere la funzione membro SetIsolateODBCTrans .

CDaoWorkspace::CDaoWorkspace

Costruisce un oggetto CDaoWorkspace.

CDaoWorkspace();

Osservazioni:

Dopo aver costruito l'oggetto C++, sono disponibili due opzioni:

  • Chiamare la funzione membro Open dell'oggetto per aprire l'area di lavoro predefinita o per aprire un oggetto esistente nell'insieme Workspaces.

  • In alternativa, chiamare la funzione create member dell'oggetto per creare un nuovo oggetto area di lavoro DAO. Verrà avviata in modo esplicito una nuova sessione dell'area di lavoro a cui è possibile fare riferimento tramite l'oggetto CDaoWorkspace . Dopo aver chiamato Create, è possibile chiamare Append se si vuole aggiungere l'area di lavoro alla raccolta Workspaces del motore di database.

Vedere Panoramica della classe per CDaoWorkspace per informazioni su quando è necessario creare un oggetto CDaoWorkspace in modo esplicito. In genere, si usano le aree di lavoro create in modo implicito quando si apre un oggetto CDaoDatabase senza specificare un'area di lavoro o quando si apre un oggetto CDaoRecordset senza specificare un oggetto di database. Gli oggetti DAO MFC creati in questo modo usano l'area di lavoro predefinita di DAO, che viene creata una volta e riutilizzata.

Per rilasciare un'area di lavoro e i relativi oggetti contenuti, chiamare la funzione membro Close dell'oggetto area di lavoro.

CDaoWorkspace::Close

Chiamare questa funzione membro per chiudere l'oggetto area di lavoro.

virtual void Close();

Osservazioni:

La chiusura di un oggetto area di lavoro aperta rilascia l'oggetto DAO sottostante e, se l'area di lavoro è membro dell'insieme Workspaces, la rimuove dall'insieme. La chiamata Close è una buona procedura di programmazione.

Attenzione

La chiusura di un oggetto area di lavoro chiude tutti i database aperti nell'area di lavoro. Ciò comporta la chiusura di tutti i recordset aperti anche nei database e viene eseguito il rollback di eventuali modifiche o aggiornamenti in sospeso. Per informazioni correlate, vedere le funzioni membro CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close e CDaoQueryDef::Close .

Gli oggetti dell'area di lavoro non sono permanenti; esistono solo se esistono riferimenti a essi. Ciò significa che quando la sessione del motore di database termina, l'area di lavoro e la relativa raccolta Databases non vengono mantenute. È necessario ricrearli per la sessione successiva aprendo nuovamente l'area di lavoro e i database.

Per informazioni correlate, vedere l'argomento "Close Method" nella Guida di DAO.

CDaoWorkspace::CommitTrans

Chiamare questa funzione membro per eseguire il commit di una transazione che salva un gruppo di modifiche e aggiornamenti in uno o più database nell'area di lavoro.

void CommitTrans();

Osservazioni:

Una transazione è costituita da una serie di modifiche apportate ai dati del database o alla relativa struttura, a partire da una chiamata a BeginTrans. Dopo aver completato la transazione, eseguirne il commit o eseguirne il rollback (annullare le modifiche) con rollback. Per impostazione predefinita, senza transazioni, viene eseguito immediatamente il commit degli aggiornamenti ai record. La chiamata BeginTrans fa sì che l'impegno degli aggiornamenti venga ritardato fino a quando non si chiama CommitTrans.

Attenzione

All'interno di un'area di lavoro, le transazioni sono sempre globali nell'area di lavoro e non sono limitate a un solo database o recordset. Se si eseguono operazioni su più database o recordset all'interno di una transazione dell'area di lavoro, CommitTrans esegue il commit di tutti gli aggiornamenti in sospeso e Rollback ripristina tutte le operazioni su tali database e recordset.

Quando si chiude un database o un'area di lavoro con transazioni in sospeso, viene eseguito il rollback delle transazioni.

Nota

Questo non è un meccanismo di commit in due fasi. Se un aggiornamento non riesce a eseguire il commit, altri continueranno a eseguire il commit.

CDaoWorkspace::CompactDatabase

Chiamare questa funzione membro per compattare un microsoft Jet specificato (. Database MDB).

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale = dbLangGeneral,
    int nOptions = 0);

static void PASCAL CompactDatabase(
    LPCTSTR lpszSrcName,
    LPCTSTR lpszDestName,
    LPCTSTR lpszLocale,
    int nOptions,
    LPCTSTR lpszPassword);

Parametri

lpszSrcName
Nome di un database esistente chiuso. Può essere un percorso completo e un nome file, ad esempio "C:\\MYDB. MDB". Se il nome file ha un'estensione, è necessario specificarlo. Se la rete supporta la convenzione di denominazione uniforme (UNC), è anche possibile specificare un percorso di rete, ad esempio "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". Le barre rovesciata doppie sono necessarie nelle stringhe di percorso perché "\" è il carattere di escape C++.

lpszDestName
Percorso completo del database compattato che si sta creando. È anche possibile specificare un percorso di rete come con lpszSrcName. Non è possibile usare l'argomento lpszDestName per specificare lo stesso file di database di lpszSrcName.

lpszPassword
Password, utilizzata per compattare un database protetto da password. Se si usa la versione di CompactDatabase che accetta una password, è necessario specificare tutti i parametri. Inoltre, poiché si tratta di un parametro di connessione, richiede una formattazione speciale, come indicato di seguito: ;P WD= lpszPassword. Ad esempio: ;P WD="Happy". Il punto e virgola iniziale è obbligatorio.

lpszLocale
Espressione stringa utilizzata per specificare l'ordine di confronto per la creazione di lpszDestName. Se si omette questo argomento accettando il valore predefinito di dbLangGeneral (vedere di seguito), le impostazioni locali del nuovo database corrispondono al database precedente. I valori possibili sono:

  • dbLangGeneral Inglese, tedesco, francese, portoghese, italiano e spagnolo moderno

  • dbLangArabic Arabo

  • dbLangCyrillic Russo

  • dbLangCzech Ceco

  • dbLangDutch Olandese

  • dbLangGreek Greco

  • dbLangHebrew Ebraico

  • dbLangHungarian Ungherese

  • dbLangIcelandic Islandese

  • dbLangNordic Lingue nordice (solo motore di database Microsoft Jet versione 1.0)

  • dbLangNorwdan Norvegese e danese

  • dbLangPolish Polacco

  • dbLangSpanish Spagnolo tradizionale

  • dbLangSwedfin Svedese e finlandese

  • dbLangTurkish Turco

nOptions
Indica una o più opzioni per il database di destinazione, lpszDestName. Se si omette questo argomento accettando il valore predefinito, lpszDestName ha la stessa crittografia e la stessa versione di lpszSrcName. È possibile combinare l'opzione dbEncrypt o dbDecrypt con una delle opzioni di versione usando l'operatore OR bit per bit. I valori possibili, che specificano un formato di database, non una versione del motore di database, sono:

  • dbEncrypt Crittografare il database durante la compattazione.

  • dbDecrypt Decrittografare il database durante la compattazione.

  • dbVersion10 Creare un database che usa il motore di database Microsoft Jet versione 1.0 durante la compattazione.

  • dbVersion11 Creare un database che usa il motore di database Microsoft Jet versione 1.1 durante la compattazione.

  • dbVersion20 Creare un database che usa il motore di database Microsoft Jet versione 2.0 durante la compattazione.

  • dbVersion30 Creare un database che usa il motore di database Microsoft Jet versione 3.0 durante la compattazione.

È possibile utilizzare dbEncrypt o dbDecrypt nell'argomento opzioni per specificare se crittografare o decrittografare il database come compattato. Se si omette una costante di crittografia o se si includono entrambi dbDecrypt e dbEncrypt, lpszDestName ha la stessa crittografia di lpszSrcName. È possibile utilizzare una delle costanti della versione nell'argomento opzioni per specificare la versione del formato dati per il database compattato. Questa costante influisce solo sulla versione del formato di dati di lpszDestName. È possibile specificare una sola costante di versione. Se si omette una costante di versione, lpszDestName avrà la stessa versione di lpszSrcName. È possibile compattare lpszDestName solo in una versione uguale o successiva a lpszSrcName.

Attenzione

Se un database non è crittografato, è possibile, anche se si implementa la sicurezza utente/password, per leggere direttamente il file del disco binario che costituisce il database.

Osservazioni:

Quando si modificano i dati in un database, il file di database può diventare frammentato e usare più spazio su disco del necessario. Periodicamente, è necessario compattare il database per deframmentare il file di database. Il database compattato è in genere più piccolo. È anche possibile scegliere di modificare l'ordine di confronto, la crittografia o la versione del formato di dati durante la copia e la compattazione del database.

Attenzione

La CompactDatabase funzione membro non converte correttamente un database completo di Microsoft Access da una versione a un'altra. Viene convertito solo il formato dati. Gli oggetti definiti da Microsoft Access, ad esempio moduli e report, non vengono convertiti. Tuttavia, i dati vengono convertiti correttamente.

Suggerimento

È anche possibile usare CompactDatabase per copiare un file di database.

Per altre informazioni sulla compattazione dei database, vedere l'argomento "CompactDatabase Method" nella Guida di DAO.

CDaoWorkspace::Create

Chiamare questa funzione membro per creare un nuovo oggetto area di lavoro DAO e associarlo all'oggetto MFC CDaoWorkspace .

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszUserName,
    LPCTSTR lpszPassword);

Parametri

lpszName
Stringa con un massimo di 14 caratteri che assegna un nome univoco al nuovo oggetto area di lavoro. È necessario specificare un nome. Per informazioni correlate, vedere l'argomento "Proprietà nome" nella Guida di DAO.

lpszUserName
Nome utente del proprietario dell'area di lavoro. Per i requisiti, vedere il parametro lpszDefaultUser per la funzione membro SetDefaultUser . Per informazioni correlate, vedere l'argomento "Proprietà UserName" nella Guida di DAO.

lpszPassword
Password per il nuovo oggetto area di lavoro. Una password può contenere fino a 14 caratteri e può contenere qualsiasi carattere tranne ASCII 0 (null). Per le password viene fatta distinzione tra maiuscole e minuscole. Per informazioni correlate, vedere l'argomento "Proprietà password" nella Guida di DAO.

Osservazioni:

Il processo di creazione complessivo è:

  1. Costruire un oggetto CDaoWorkspace .

  2. Chiamare la funzione membro dell'oggetto per creare l'area di Create lavoro DAO sottostante. È necessario specificare un nome dell'area di lavoro.

  3. Facoltativamente, chiamare Accoda se si desidera aggiungere l'area di lavoro alla raccolta Workspaces del motore di database. È possibile usare l'area di lavoro senza aggiungerla.

Dopo la Create chiamata, l'oggetto dell'area di lavoro si trova in uno stato aperto, pronto per l'uso. Non si chiama Open dopo Create. Non si chiama Create se l'area di lavoro esiste già nella raccolta Workspaces. Create inizializza il motore di database se non è già stato inizializzato per l'applicazione.

CDaoWorkspace::GetDatabaseCount

Chiamare questa funzione membro per recuperare il numero di oggetti di database DAO nell'insieme Databases dell'area di lavoro. Numero di database aperti nell'area di lavoro.

short GetDatabaseCount();

Valore restituito

Numero di database aperti nell'area di lavoro.

Osservazioni:

GetDatabaseCount è utile se è necessario scorrere tutti i database definiti nella raccolta Databases dell'area di lavoro. Per ottenere informazioni su un determinato database nella raccolta, vedere GetDatabaseInfo. L'utilizzo tipico consiste nel chiamare GetDatabaseCount il numero di database aperti, quindi usare tale numero come indice ciclo per le chiamate ripetute a GetDatabaseInfo.

CDaoWorkspace::GetDatabaseInfo

Chiamare questa funzione membro per ottenere diversi tipi di informazioni su un database aperto nell'area di lavoro.

void GetDatabaseInfo(
    int nIndex,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetDatabaseInfo(
    LPCTSTR lpszName,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parametri

nIndex
Indice in base zero dell'oggetto di database nell'insieme Databases dell'area di lavoro, per la ricerca in base all'indice.

dbinfo
Riferimento a un oggetto CDaoDatabaseInfo che restituisce le informazioni richieste.

dwInfoOptions
Opzioni che specificano le informazioni sul database da recuperare. Le opzioni disponibili sono elencate di seguito insieme a ciò che causano la restituzione della funzione:

  • AFX_DAO_PRIMARY_INFO (impostazione predefinita) Nome, Aggiornabile, Transazioni

  • AFX_DAO_SECONDARY_INFO Informazioni primarie più: Versione, Ordine di confronto, Timeout query

  • AFX_DAO_ALL_INFO informazioni primarie e secondarie più: Connetti

lpszName
Nome dell'oggetto di database, per la ricerca in base al nome. Il nome è una stringa con un massimo di 14 caratteri che denominano in modo univoco il nuovo oggetto area di lavoro.

Osservazioni:

Una versione della funzione consente di cercare un database per indice. L'altra versione consente di cercare un database in base al nome.

Per una descrizione delle informazioni restituite in dbinfo, vedere la struttura CDaoDatabaseInfo. Questa struttura ha membri che corrispondono agli elementi delle informazioni elencate in precedenza nella descrizione di dwInfoOptions. Quando si richiedono informazioni a un livello, si ottengono anche informazioni per i livelli precedenti.

CDaoWorkspace::GetIniPath

Chiamare questa funzione membro per ottenere il percorso delle impostazioni di inizializzazione del motore di database Microsoft Jet nel Registro di sistema di Windows.

static CString PASCAL GetIniPath();

Valore restituito

Oggetto CString contenente il percorso del Registro di sistema.

Osservazioni:

È possibile utilizzare il percorso per ottenere informazioni sulle impostazioni per il motore di database. Le informazioni restituite sono in realtà il nome di una sottochiave del Registro di sistema.

Per informazioni correlate, vedere gli argomenti "Proprietà IniPath" e "Personalizzazione delle impostazioni del Registro di sistema di Windows per l'accesso ai dati" nella Guida di DAO.

CDaoWorkspace::GetIsolateODBCTrans

Chiamare questa funzione membro per ottenere il valore corrente della proprietà DAO IsolateODBCTrans per l'area di lavoro.

BOOL GetIsolateODBCTrans();

Valore restituito

Diverso da zero se le transazioni ODBC sono isolate; in caso contrario, 0.

Osservazioni:

In alcune situazioni, potrebbe essere necessario disporre di più transazioni simultanee in sospeso nello stesso database ODBC. A tale scopo, è necessario aprire un'area di lavoro separata per ogni transazione. Tenere presente che, anche se ogni area di lavoro può avere una connessione ODBC al database, questo rallenta le prestazioni del sistema. Poiché l'isolamento delle transazioni non è in genere obbligatorio, le connessioni ODBC da più oggetti dell'area di lavoro aperte dallo stesso utente vengono condivise per impostazione predefinita.

Alcuni server ODBC, ad esempio Microsoft SQL Server, non consentono transazioni simultanee in una singola connessione. Se è necessario disporre di più transazioni alla volta in sospeso su un database di questo tipo, impostare la proprietà IsolateODBCTrans su TRUE in ogni area di lavoro non appena la si apre. In questo modo viene forzata una connessione ODBC separata per ogni area di lavoro.

Per informazioni correlate, vedere l'argomento "IsolateODBCTrans Property" nella Guida di DAO.

CDaoWorkspace::GetLoginTimeout

Chiamare questa funzione membro per ottenere il valore corrente della proprietà DAO LoginTimeout per l'area di lavoro.

static short PASCAL GetLoginTimeout();

Valore restituito

Numero di secondi prima che si verifichi un errore quando si tenta di accedere a un database ODBC.

Osservazioni:

Questo valore rappresenta il numero di secondi prima che si verifichi un errore quando si tenta di accedere a un database ODBC. L'impostazione predefinita loginTimeout è di 20 secondi. Quando LoginTimeout è impostato su 0, non si verifica alcun timeout e la comunicazione con l'origine dati potrebbe smettere di rispondere.

Quando si tenta di accedere a un database ODBC, ad esempio Microsoft SQL Server, la connessione potrebbe non riuscire a causa di errori di rete o perché il server non è in esecuzione. Anziché attendere la connessione predefinita di 20 secondi, è possibile specificare per quanto tempo il motore di database attende prima che venga generato un errore. L'accesso al server viene eseguito in modo implicito come parte di eventi diversi, ad esempio l'esecuzione di una query su un database del server esterno.

Per informazioni correlate, vedere l'argomento "Proprietà LoginTimeout" nella Guida di DAO.

CDaoWorkspace::GetName

Chiamare questa funzione membro per ottenere il nome definito dall'utente dell'oggetto area di lavoro DAO sottostante l'oggetto CDaoWorkspace .

CString GetName();

Valore restituito

Oggetto CString contenente il nome definito dall'utente dell'oggetto area di lavoro DAO.

Osservazioni:

Il nome è utile per accedere all'oggetto area di lavoro DAO nell'insieme Workspaces del motore di database in base al nome.

Per informazioni correlate, vedere l'argomento "Proprietà nome" nella Guida di DAO.

CDaoWorkspace::GetUserName

Chiamare questa funzione membro per ottenere il nome del proprietario dell'area di lavoro.

CString GetUserName();

Valore restituito

Oggetto CString che rappresenta il proprietario dell'oggetto area di lavoro.

Osservazioni:

Per ottenere o impostare le autorizzazioni per il proprietario dell'area di lavoro, chiamare DIRETTAMENTE DAO per controllare l'impostazione della proprietà Permissions; determina le autorizzazioni di cui dispone l'utente. Per usare le autorizzazioni, è necessario un SISTEMA. File MDA.

Per informazioni sulla chiamata diretta daO, vedere La nota tecnica 54. Per informazioni correlate, vedere l'argomento "Proprietà UserName" nella Guida di DAO.

CDaoWorkspace::GetVersion

Chiamare questa funzione membro per determinare la versione del motore di database Microsoft Jet in uso.

static CString PASCAL GetVersion();

Valore restituito

Oggetto CString che indica la versione del motore di database associato all'oggetto .

Osservazioni:

Il valore restituito rappresenta il numero di versione nel formato "major.minor"; ad esempio "3.0". Il numero di versione del prodotto (ad esempio, 3.0) è costituito dal numero di versione (3), da un punto e dal numero di versione (0).

Per informazioni correlate, vedere l'argomento "Version Property" nella Guida di DAO.

CDaoWorkspace::GetWorkspaceCount

Chiamare questa funzione membro per recuperare il numero di oggetti dell'area di lavoro DAO nell'insieme Workspaces del motore di database.

short GetWorkspaceCount();

Valore restituito

Numero di aree di lavoro aperte nell'insieme Workspaces.

Osservazioni:

Questo conteggio non include aree di lavoro aperte non aggiunte alla raccolta. GetWorkspaceCount è utile se è necessario scorrere tutte le aree di lavoro definite nella raccolta Workspaces. Per ottenere informazioni su una determinata area di lavoro nella raccolta, vedere GetWorkspaceInfo. L'utilizzo tipico consiste nel chiamare GetWorkspaceCount il numero di aree di lavoro aperte, quindi usare tale numero come indice ciclo per le chiamate ripetute a GetWorkspaceInfo.

CDaoWorkspace::GetWorkspaceInfo

Chiamare questa funzione membro per ottenere vari tipi di informazioni su un'area di lavoro aperta nella sessione.

void GetWorkspaceInfo(
    int nIndex,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetWorkspaceInfo(
    LPCTSTR lpszName,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parametri

nIndex
Indice in base zero dell'oggetto di database nell'insieme Workspaces, per la ricerca in base all'indice.

wkspcinfo
Riferimento a un oggetto CDaoWorkspaceInfo che restituisce le informazioni richieste.

dwInfoOptions
Opzioni che specificano le informazioni sull'area di lavoro 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)

  • AFX_DAO_SECONDARY_INFO Informazioni principali più: Nome utente

  • AFX_DAO_ALL_INFO informazioni primarie e secondarie più: Isola ODBCTrans

lpszName
Nome dell'oggetto dell'area di lavoro, per la ricerca in base al nome. Il nome è una stringa con un massimo di 14 caratteri che denominano in modo univoco il nuovo oggetto area di lavoro.

Osservazioni:

Per una descrizione delle informazioni restituite in wkspcinfo, vedere la struttura CDaoWorkspaceInfo. Questa struttura ha membri che corrispondono agli elementi delle informazioni elencate in precedenza nella descrizione di dwInfoOptions. Quando si richiedono informazioni a un livello, si ottengono anche informazioni per i livelli precedenti.

CDaoWorkspace::Idle

Chiamare Idle per fornire al motore di database l'opportunità di eseguire attività in background che potrebbero non essere aggiornate a causa di un'intensa elaborazione dei dati.

static void PASCAL Idle(int nAction = dbFreeLocks);

Parametri

nAction
Azione da eseguire durante l'elaborazione inattiva. Attualmente l'unica azione valida è dbFreeLocks.

Osservazioni:

Questo è spesso vero in ambienti multiutente multitasking in cui non c'è tempo di elaborazione in background sufficiente per mantenere tutti i record in un recordset corrente.

Nota

La chiamata Idle non è necessaria con i database creati con la versione 3.0 del motore di database Microsoft Jet. Usare Idle solo per i database creati con versioni precedenti.

In genere, i blocchi di lettura vengono rimossi e i dati negli oggetti recordset di tipo dynaset locale vengono aggiornati solo quando non si verificano altre azioni (inclusi i movimenti del mouse). Se si chiama Idleperiodicamente , si fornisce al motore di database il tempo necessario per recuperare le attività di elaborazione in background rilasciando blocchi di lettura non necessario. Se si specifica la costante come argomento, l'elaborazione dbFreeLocks viene ritardata fino a quando non vengono rilasciati tutti i blocchi di lettura.

Questa funzione membro non è necessaria negli ambienti a utente singolo, a meno che non siano in esecuzione più istanze di un'applicazione. La Idle funzione membro può migliorare le prestazioni in un ambiente multiutente perché forza il motore di database a scaricare i dati su disco, rilasciando blocchi sulla memoria. È anche possibile rilasciare blocchi di lettura rendendo le operazioni parte di una transazione.

Per informazioni correlate, vedere l'argomento "Metodo inattico" nella Guida di DAO.

CDaoWorkspace::IsOpen

Chiamare questa funzione membro per determinare se l'oggetto CDaoWorkspace è aperto. Ciò significa che l'oggetto MFC è stato inizializzato da una chiamata a Open o una chiamata a Create.

BOOL IsOpen() const;

Valore restituito

Diverso da zero se l'oggetto dell'area di lavoro è aperto; in caso contrario, 0.

Osservazioni:

È possibile chiamare qualsiasi funzione membro di un'area di lavoro in uno stato aperto.

CDaoWorkspace::m_pDAOWorkspace

Puntatore all'oggetto area di lavoro DAO sottostante.

Osservazioni:

Utilizzare questo membro dati se è necessario l'accesso diretto all'oggetto DAO sottostante. È possibile chiamare le interfacce dell'oggetto DAO tramite questo puntatore.

Per informazioni sull'accesso diretto agli oggetti DAO, vedere la nota tecnica 54.

CDaoWorkspace::Open

Apre in modo esplicito un oggetto area di lavoro associato all'area di lavoro predefinita di DAO.

virtual void Open(LPCTSTR lpszName = NULL);

Parametri

lpszName
Nome dell'oggetto area di lavoro DAO da aprire, ovvero una stringa con un massimo di 14 caratteri che denomina in modo univoco l'area di lavoro. Accettare il valore predefinito NULL per aprire in modo esplicito l'area di lavoro predefinita. Per i requisiti di denominazione, vedere il parametro lpszName per Create. Per informazioni correlate, vedere l'argomento "Proprietà nome" nella Guida di DAO.

Osservazioni:

Dopo aver costruito un CDaoWorkspace oggetto, chiamare questa funzione membro per eseguire una delle operazioni seguenti:

  • Aprire in modo esplicito l'area di lavoro predefinita. Passare NULL per lpszName.

  • Aprire un oggetto esistente CDaoWorkspace , un membro dell'insieme Workspaces, in base al nome. Passare un nome valido per un oggetto area di lavoro esistente.

Open inserisce l'oggetto area di lavoro in uno stato aperto e inizializza anche il motore di database se non è già stato inizializzato per l'applicazione.

Anche se molte CDaoWorkspace funzioni membro possono essere chiamate solo dopo l'apertura dell'area di lavoro, le funzioni membro seguenti, che operano sul motore di database, sono disponibili dopo la costruzione dell'oggetto C++, ma prima di una chiamata a Open:

CDaoWorkspace::RepairDatabase

Chiamare questa funzione membro se è necessario tentare di ripristinare un database danneggiato che accede al motore di database Microsoft Jet.

static void PASCAL RepairDatabase(LPCTSTR lpszName);

Parametri

lpszName
Percorso e nome file per un file di database del motore Microsoft Jet esistente. Se si omette il percorso, viene eseguita la ricerca solo nella directory corrente. Se il sistema supporta la convenzione di denominazione uniforme (UNC), è anche possibile specificare un percorso di rete, ad esempio "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". Le barre rovesciata doppie sono necessarie nella stringa di percorso perché "\" è il carattere di escape C++.

Osservazioni:

È necessario chiudere il database specificato da lpszName prima di ripristinarlo. In un ambiente multiutente, altri utenti non possono avere lpszName aperto durante il ripristino. Se lpszName non è chiuso o non è disponibile per l'uso esclusivo, si verifica un errore.

Questa funzione membro tenta di ripristinare un database contrassegnato come probabilmente danneggiato da un'operazione di scrittura incompleta. Ciò può verificarsi se un'applicazione che usa il motore di database Microsoft Jet viene chiusa in modo imprevisto a causa di un'interruzione dell'alimentazione o di un problema hardware del computer. Se si completa l'operazione e si chiama la funzione membro Close o si chiude l'applicazione in modo consueto, il database non verrà contrassegnato come probabilmente danneggiato.

Nota

Dopo aver ripristinato un database, è anche consigliabile compattarlo usando la funzione membro CompactDatabase per deframmentare il file e recuperare spazio su disco.

Per altre informazioni sul ripristino dei database, vedere l'argomento "Metodo RepairDatabase" nella Guida di DAO.

CDaoWorkspace::Rollback

Chiamare questa funzione membro per terminare la transazione corrente e ripristinare tutti i database nell'area di lavoro alla relativa condizione prima dell'avvio della transazione.

void Rollback();

Osservazioni:

Attenzione

All'interno di un oggetto area di lavoro, le transazioni sono sempre globali per l'area di lavoro e non sono limitate a un solo database o recordset. Se si eseguono operazioni su più database o recordset all'interno di una transazione dell'area di lavoro, Rollback ripristina tutte le operazioni su tutti i database e i recordset.

Se si chiude un oggetto area di lavoro senza salvare o eseguire il rollback di transazioni in sospeso, viene eseguito automaticamente il rollback delle transazioni. Se si chiama CommitTrans o Rollback senza prima chiamare BeginTrans, si verifica un errore.

Nota

Quando si avvia una transazione, il motore di database registra le relative operazioni in un file mantenuto nella directory specificata dalla variabile di ambiente TEMP nella workstation. Se il file di log delle transazioni esaurisce l'archiviazione disponibile nell'unità TEMP, il motore di database genererà un CDaoException errore DAO 2004. A questo punto, se si chiama CommitTrans, viene eseguito il commit di un numero indeterminato di operazioni, ma le operazioni rimanenti non compilate vengono perse e l'operazione deve essere riavviata. La chiamata Rollback rilascia il log delle transazioni ed esegue il rollback di tutte le operazioni nella transazione.

CDaoWorkspace::SetDefaultPassword

Chiamare questa funzione membro per impostare la password predefinita usata dal motore di database quando viene creato un oggetto area di lavoro senza una password specifica.

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

Parametri

lpszPassword
Password predefinita. Una password può contenere fino a 14 caratteri e può contenere qualsiasi carattere tranne ASCII 0 (null). Per le password viene fatta distinzione tra maiuscole e minuscole.

Osservazioni:

La password predefinita impostata si applica alle nuove aree di lavoro create dopo la chiamata. Quando si creano aree di lavoro successive, non è necessario specificare una password nella chiamata Crea .

Per usare questa funzione membro:

  1. Costruire un CDaoWorkspace oggetto ma non chiamare Create.

  2. Chiama SetDefaultPassword e, se vuoi, SetDefaultUser.

  3. Chiamare Create per questo oggetto area di lavoro o quelli successivi, senza specificare una password.

Per impostazione predefinita, la proprietà DefaultUser è impostata su "admin" e la proprietà DefaultPassword è impostata su una stringa vuota ("").

Per altre informazioni sulla sicurezza, vedere l'argomento "Proprietà autorizzazioni" nella Guida di DAO. Per informazioni correlate, vedere gli argomenti "DefaultPassword Property" e "DefaultUser Property" nella Guida di DAO.

CDaoWorkspace::SetDefaultUser

Chiamare questa funzione membro per impostare il nome utente predefinito utilizzato dal motore di database quando viene creato un oggetto area di lavoro senza un nome utente specifico.

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

Parametri

lpszDefaultUser
Nome utente predefinito. Un nome utente può contenere da 1 a 20 caratteri e includere caratteri alfabetici, caratteri accentati, numeri, spazi e simboli ad eccezione di: " (virgolette), / (barra rovesciata), \ (barra rovesciata), [ ] (parentesi quadre), (punti), | (pipe), < (segno minore di), > (segno maggiore), + (segno più), (segno più), (segno di uguale), ; = (punto e virgola), , (punto * interrogativo), (asterisco), : spazi iniziali e caratteri di controllo (da ASCII 00 a ASCII 31). Per informazioni correlate, vedere l'argomento "Proprietà UserName" nella Guida di DAO.

Osservazioni:

Il nome utente predefinito impostato si applica alle nuove aree di lavoro create dopo la chiamata. Quando si creano aree di lavoro successive, non è necessario specificare un nome utente nella chiamata Crea .

Per usare questa funzione membro:

  1. Costruire un CDaoWorkspace oggetto ma non chiamare Create.

  2. Chiama SetDefaultUser e, se vuoi, SetDefaultPassword.

  3. Chiamare Create per questo oggetto area di lavoro o quelli successivi, senza specificare un nome utente.

Per impostazione predefinita, la proprietà DefaultUser è impostata su "admin" e la proprietà DefaultPassword è impostata su una stringa vuota ("").

Per informazioni correlate, vedere gli argomenti "DefaultUser Property" e "DefaultPassword Property" nella Guida di DAO.

CDaoWorkspace::SetIniPath

Chiamare questa funzione membro per specificare il percorso delle impostazioni del Registro di sistema di Windows per il motore di database Microsoft Jet.

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

Parametri

lpszRegistrySubkey
Stringa contenente il nome di una sottochiave del Registro di sistema di Windows per il percorso delle impostazioni o dei parametri del motore di database Microsoft Jet necessari per i database ISAM installabili.

Osservazioni:

Chiamare SetIniPath solo se è necessario specificare impostazioni speciali. Per altre informazioni, vedere l'argomento "Proprietà IniPath" nella Guida di DAO.

Nota

Chiamare SetIniPath durante l'installazione dell'applicazione, non quando viene eseguita l'applicazione. SetIniPath deve essere chiamato prima di aprire aree di lavoro, database o recordset; in caso contrario, MFC genera un'eccezione.

È possibile usare questo meccanismo per configurare il motore di database con le impostazioni del Registro di sistema fornite dall'utente. L'ambito di questo attributo è limitato all'applicazione e non può essere modificato senza riavviare l'applicazione.

CDaoWorkspace::SetIsolateODBCTrans

Chiamare questa funzione membro per impostare il valore della proprietà DAO IsolateODBCTrans per l'area di lavoro.

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

Parametri

bIsolateODBCTrans
Passare TRUE se si desidera iniziare a isolare le transazioni ODBC. Passare FALSE se si desidera interrompere l'isolamento delle transazioni ODBC.

Osservazioni:

In alcune situazioni, potrebbe essere necessario disporre di più transazioni simultanee in sospeso nello stesso database ODBC. A tale scopo, è necessario aprire un'area di lavoro separata per ogni transazione. Anche se ogni area di lavoro può avere una connessione ODBC al database, questo rallenta le prestazioni del sistema. Poiché l'isolamento delle transazioni non è in genere obbligatorio, le connessioni ODBC da più oggetti dell'area di lavoro aperte dallo stesso utente vengono condivise per impostazione predefinita.

Alcuni server ODBC, ad esempio Microsoft SQL Server, non consentono transazioni simultanee in una singola connessione. Se è necessario disporre di più transazioni alla volta in sospeso su un database di questo tipo, impostare la proprietà IsolateODBCTrans su TRUE in ogni area di lavoro non appena la si apre. In questo modo viene forzata una connessione ODBC separata per ogni area di lavoro.

CDaoWorkspace::SetLoginTimeout

Chiamare questa funzione membro per impostare il valore della proprietà DAO LoginTimeout per l'area di lavoro.

static void PASCAL SetLoginTimeout(short nSeconds);

Parametri

nSeconds
Numero di secondi prima che si verifichi un errore quando si tenta di accedere a un database ODBC.

Osservazioni:

Questo valore rappresenta il numero di secondi prima che si verifichi un errore quando si tenta di accedere a un database ODBC. L'impostazione predefinita loginTimeout è di 20 secondi. Quando LoginTimeout è impostato su 0, non si verifica alcun timeout e la comunicazione con l'origine dati potrebbe smettere di rispondere.

Quando si tenta di accedere a un database ODBC, ad esempio Microsoft SQL Server, la connessione potrebbe non riuscire a causa di errori di rete o perché il server non è in esecuzione. Anziché attendere la connessione predefinita di 20 secondi, è possibile specificare per quanto tempo il motore di database attende prima che venga generato un errore. L'accesso al server viene eseguito in modo implicito come parte di diversi eventi, ad esempio l'esecuzione di una query su un database del server esterno. Il valore di timeout è determinato dall'impostazione corrente della proprietà LoginTimeout.

Per informazioni correlate, vedere l'argomento "Proprietà LoginTimeout" nella Guida di DAO.

Vedi anche

CObject Classe
Grafico della gerarchia
CDaoDatabase Classe
CDaoRecordset Classe
CDaoTableDef Classe
CDaoQueryDef Classe
CDaoException Classe