Compartilhar via


Classe CDaoWorkspace

Gerencia uma sessão de banco de dados nomeada, protegida por senha, de logon a logoff, por um único usuário. O DAO tem suporte por meio do Office 2013. O DAO 3.6 é a versão final e é considerado obsoleto.

Sintaxe

class CDaoWorkspace : public CObject

Membros

Construtores públicos

Nome Descrição
CDaoWorkspace::CDaoWorkspace Constrói um objeto de workspace. Depois, chame Create ou Open.

Métodos públicos

Nome Descrição
CDaoWorkspace::Append Acrescenta um workspace recém-criado à coleção Workspaces do mecanismo de banco de dados.
CDaoWorkspace::BeginTrans Inicia uma nova transação, que se aplica a todos os bancos de dados abertos no workspace.
CDaoWorkspace::Close Fecha o workspace e todos os objetos que ele contém. As transações pendentes são revertidas.
CDaoWorkspace::CommitTrans Conclui a transação atual e salva as alterações.
CDaoWorkspace::CompactDatabase Compacta (ou duplica) um banco de dados.
CDaoWorkspace::Create Cria um objeto de workspace do DAO.
CDaoWorkspace::GetDatabaseCount Retorna o número de objetos de banco de dados do DAO na coleção Bancos de Dados do workspace.
CDaoWorkspace::GetDatabaseInfo Retorna informações sobre um banco de dados do DAO especificado definido na coleção Bancos de Dados do workspace.
CDaoWorkspace::GetIniPath Retorna o local das configurações de inicialização do mecanismo de banco de dados do Microsoft Jet no Registro do Windows.
CDaoWorkspace::GetIsolateODBCTrans Retorna um valor que indica se várias transações que envolvem a mesma fonte de dados ODBC são isoladas por meio de várias conexões forçadas com a fonte de dados.
CDaoWorkspace::GetLoginTimeout Retorna o número de segundos antes de ocorrer um erro quando o usuário tenta fazer logon em um banco de dados ODBC.
CDaoWorkspace::GetName Retorna o nome definido pelo usuário para o objeto de workspace.
CDaoWorkspace::GetUserName Retorna o nome de usuário especificado quando o workspace foi criado. Esse é o nome do proprietário do workspace.
CDaoWorkspace::GetVersion Retorna uma cadeia de caracteres que contém a versão do mecanismo de banco de dados associado ao workspace.
CDaoWorkspace::GetWorkspaceCount Retorna o número de objetos de workspace do DAO na coleção Workspaces do mecanismo de banco de dados.
CDaoWorkspace::GetWorkspaceInfo Retorna informações sobre um workspace do DAO especificado definido na coleção Workspaces do mecanismo de banco de dados.
CDaoWorkspace::Idle Permite que o mecanismo de banco de dados execute tarefas em segundo plano.
CDaoWorkspace::IsOpen Retornará um valor diferente de zero se o workspace estiver aberto.
CDaoWorkspace::Open Abre explicitamente um objeto de workspace associado ao workspace padrão do DAO.
CDaoWorkspace::RepairDatabase Tenta reparar um banco de dados danificado.
CDaoWorkspace::Rollback Encerra a transação atual e não salva as alterações.
CDaoWorkspace::SetDefaultPassword Define a senha que o mecanismo de banco de dados usa quando um objeto de workspace é criado sem uma senha específica.
CDaoWorkspace::SetDefaultUser Define o nome de usuário que o mecanismo de banco de dados usa quando um objeto de workspace é criado sem um nome de usuário específico.
CDaoWorkspace::SetIniPath Define o local das configurações de inicialização do mecanismo de banco de dados do Microsoft Jet no Registro do Windows.
CDaoWorkspace::SetIsolateODBCTrans Especifica se várias transações que envolvem a mesma fonte de dados ODBC são isoladas por meio de várias conexões forçadas com a fonte de dados.
CDaoWorkspace::SetLoginTimeout Define o número de segundos antes de ocorrer um erro quando o usuário tenta fazer logon em uma fonte de dados ODBC.

Membros de Dados Públicos

Nome Descrição
CDaoWorkspace::m_pDAOWorkspace Aponta para o objeto de workspace do DAO subjacente.

Comentários

Na maioria dos casos, você não precisará de vários workspaces e não precisará criar objetos de workspace explícitos; quando você abre objetos de banco de dados e conjunto de registros, eles usam o workspace padrão do DAO. No entanto, se necessário, você pode executar várias sessões por vez criando objetos de workspace adicionais. Cada objeto de workspace pode conter, na própria coleção Bancos de dados, vários objetos de banco de dados abertos. No MFC, um workspace é principalmente um gerenciador de transações, especificando um conjunto de bancos de dados abertos, todos no mesmo "espaço de transação".

Observação

As classes de banco de dados do DAO são diferentes das classes de banco de dados MFC com base no ODBC (Open Database Connectivity). Todos os nomes de classe de banco de dados DAO têm o prefixo "CDao". Em geral, as classes MFC baseadas em DAO são mais capazes do que as classes MFC baseadas em ODBC. As classes baseadas em DAO acessam dados por meio do mecanismo de banco de dados do Microsoft Jet, incluindo drivers ODBC. Elas também dão suporte a operações de DDL (Linguagem de Definição de Dados), como criar bancos de dados e adicionar tabelas e campos por meio das classes, sem precisar chamar o DAO diretamente.

Funcionalidades

A classe CDaoWorkspace fornece o seguinte:

  • Acesso explícito, se necessário, a um workspace padrão, criado inicializando o mecanismo de banco de dados. Normalmente, você usa o workspace padrão do DAO implicitamente criando objetos de banco de dados e de conjunto de registros.

  • Um espaço de transação no qual as transações se aplicam a todos os bancos de dados abertos no workspace. Você pode criar workspaces adicionais para gerenciar espaços de transação separados.

  • Uma interface para muitas propriedades do mecanismo de banco de dados do Microsoft Jet subjacente (consulte as funções membro estáticas). Abrir ou criar um workspace ou chamar uma função membro estática antes de abri-lo ou criá-lo inicializa o mecanismo de banco de dados.

  • Acesso à coleção Workspaces do mecanismo de banco de dados, que armazena todos os workspaces ativos que foram anexados a ele. Você também pode criar e trabalhar com workspaces sem anexá-los à coleção.

Segurança

O MFC não implementa as coleções Usuários e Grupos no DAO, que são usadas para controle de segurança. Se você precisar desses aspectos do DAO, precisará programá-los por conta própria por meio de chamadas diretas para interfaces DAO. Para obter mais informações, confira Nota Técnica 54.

Uso

Você pode usar a classe CDaoWorkspace para:

  • Abrir explicitamente o workspace padrão.

    Normalmente, o uso do workspace padrão é implícito – quando você abre novos objetos CDaoDatabase ou CDaoRecordset. Mas talvez seja necessário acessá-lo explicitamente, por exemplo, para acessar as propriedades do mecanismo de banco de dados ou da coleção de Workspaces. Confira "Uso implícito do workspace padrão" abaixo.

  • Crie workspaces. Chame Append se você quiser adicioná-los à coleção Workspaces.

  • Abra um workspace existente na coleção Workspaces.

A criação de um workspace que ainda não existe na coleção Workspaces é descrita na função membro Create. Os objetos de workspace não persistem de maneira nenhuma entre as sessões do mecanismo de banco de dados. Se o aplicativo vincular o MFC estaticamente, encerrar o aplicativo cancelará a inicialização do mecanismo de banco de dados. Se o aplicativo for vinculado dinamicamente ao MFC, a inicialização do mecanismo de banco de dados será cancelada quando a DLL do MFC for descarregada.

Os procedimentos de abrir explicitamente o workspace padrão ou abrir um workspace existente na coleção Workspaces são descritos na função membro Open.

Encerre uma sessão de workspace fechando o workspace com a função membro Close. Close fecha todos os bancos de dados que você não fechou anteriormente, revertendo todas as transações não confirmadas.

Transações

O DAO gerencia transações no nível do workspace; portanto, as transações em um workspace com vários bancos de dados abertos se aplicam a todos os bancos de dados. Por exemplo, se dois bancos de dados tiverem atualizações não confirmadas e você chamar CommitTrans, todas as atualizações serão confirmadas. Se você quiser limitar as transações a apenas um banco de dados, precisará de um objeto de workspace separado para ele.

Uso implícito do workspace padrão

O MFC usa o workspace padrão do DAO implicitamente sob as seguintes circunstâncias:

  • Se você criar um objeto CDaoDatabase, mas não o fizer por meio de um objeto CDaoWorkspace existente, o MFC criará um objeto de workspace temporário para você, que corresponderá ao workspace padrão do DAO. Se você fizer isso para vários bancos de dados, todos os objetos de banco de dados serão associados ao workspace padrão. Você pode acessar o workspace de um banco de dados por meio de um membro de dados CDaoDatabase.

  • Da mesma forma, se você criar um objeto CDaoRecordset sem fornecer um ponteiro para um objeto CDaoDatabase, o MFC criará um objeto de banco de dados temporário e, por extensão, um objeto de workspace temporário. Você pode acessar o banco de dados de um conjunto de registros e indiretamente, o workspace dele por meio de um membro de dados CDaoRecordset.

Outras operações

Outras operações de banco de dados também são fornecidas, como reparar um banco de dados corrompido ou compactar um banco de dados.

Para obter informações sobre como chamar o DAO diretamente e sobre a segurança do DAO, confira a Nota Técnica 54.

Hierarquia de herança

CObject

CDaoWorkspace

Requisitos

Cabeçalho: afxdao.h

CDaoWorkspace::Append

Chame essa função membro depois de chamar Create.

virtual void Append();

Comentários

Append acrescenta um objeto de workspace recém-criado à coleção Workspaces do mecanismo de banco de dados. Os workspaces não persistem entre as sessões do mecanismo de banco de dados; eles são armazenados somente na memória, não no disco. Você não precisa acrescentar um workspace; se não o fizer, você ainda poderá usá-lo.

Um workspace acrescentado permanece na coleção Workspaces, em um estado ativo e aberto, até que você chame a respectiva função membro Close.

Para obter informações relacionadas, consulte o tópico "Método Append" na ajuda do DAO.

CDaoWorkspace::BeginTrans

Chame essa função de membro para iniciar uma transação.

void BeginTrans();

Comentários

Depois de você chamar BeginTrans, as atualizações feitas em seus dados ou estrutura de banco de dados entrarão em vigor quando você confirmar a transação. Como o workspace define apenas um espaço de transação, a transação se aplica a todos os bancos de dados abertos no workspace. Há duas maneiras de concluir a transação:

  • Chame a função membro CommitTrans para confirmar a transação e salvar alterações na fonte de dados.

  • Ou chame a função membro Rollback para cancelar a transação.

Fechar o objeto de workspace ou um objeto de banco de dados enquanto uma transação está pendente reverte todas as transações pendentes.

Se você precisar isolar transações em uma fonte de dados ODBC daquelas em outra fonte de dados ODBC, confira a função membro SetIsolateODBCTrans.

CDaoWorkspace::CDaoWorkspace

Constrói um objeto CDaoWorkspace.

CDaoWorkspace();

Comentários

Depois de construir o objeto C++, você tem duas opções:

  • Chame a função membro Open do objeto para abrir o workspace padrão ou para abrir um objeto existente na coleção Workspaces.

  • Ou chame a função membro Create do objeto para criar um objeto de workspace do DAO. Isso inicia explicitamente uma nova sessão de workspace, que você pode consultar por meio do objeto CDaoWorkspace. Depois de chamar Create, você poderá chamar Append se quiser adicionar o workspace à coleção Workspaces do mecanismo de banco de dados.

Confira a visão geral da classe para CDaoWorkspace para obter informações sobre quando você precisa criar explicitamente um objeto CDaoWorkspace. Normalmente, você usa workspaces criados implicitamente quando abre um objeto CDaoDatabase sem especificar um workspace ou quando abre um objeto CDaoRecordset sem especificar um objeto de banco de dados. Os objetos MFC do DAO criados dessa forma usam o workspace padrão do DAO, que é criado uma vez e reutilizado.

Para liberar um workspace e os objetos contidos nele, chame a função membro Close do objeto de workspace.

CDaoWorkspace::Close

Chame essa função membro para fechar o objeto de workspace.

virtual void Close();

Comentários

Fechar um objeto de workspace aberto liberará o objeto DAO subjacente e, se o workspace for um membro da coleção Workspaces, o removerá da coleção. Chamar Close é uma boa prática de programação.

Cuidado

Fechar um objeto de workspace fecha todos os bancos de dados abertos no workspace. Isso faz com que todos os conjuntos de registros abertos nos bancos de dados sejam fechados também, e com que todas as edições ou atualizações pendentes sejam revertidas. Para obter informações relacionadas, confira as funções membro CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close e CDaoQueryDef::Close.

Objetos de workspace não são permanentes; eles só existem enquanto as referências a eles existem. Isso significa que, quando a sessão do mecanismo de banco de dados termina, o workspace e a coleção de Bancos de Dados dele não persistem. Você precisa criá-los novamente para a próxima sessão abrindo seu workspace e bancos de dados novamente.

Para obter informações relacionadas, consulte o tópico "Método Close" na ajuda do DAO.

CDaoWorkspace::CommitTrans

Chame essa função membro para confirmar uma transação – salve um grupo de edições e atualizações em um ou mais bancos de dados no workspace.

void CommitTrans();

Comentários

Uma transação consiste em uma série de alterações nos dados do banco de dados ou na estrutura dele, começando com uma chamada para BeginTrans. Quando você concluir a transação, confirme-a ou reverta-a (cancele as alterações) com Rollback. Por padrão, sem transações, as atualizações nos registros são confirmadas imediatamente. Chamar BeginTrans faz com que a confirmação das atualizações seja adiada até que você chame CommitTrans.

Cuidado

Em um workspace, as transações são sempre globais para o workspace e não se limitam a apenas um banco de dados ou conjunto de registros. Se você executar operações em mais de um banco de dados ou conjunto de registros dentro de uma transação de workspace, CommitTrans confirmará todas as atualizações pendentes e Rollback restaurará todas as operações nesses bancos de dados e conjuntos de registros.

Quando você fecha um banco de dados ou workspace com transações pendentes, todas as transações são revertidas.

Observação

Esse não é um mecanismo de confirmação em duas fases. Se uma atualização não for confirmada, outras ainda serão confirmadas.

CDaoWorkspace::CompactDatabase

Chame essa função membro para compactar um banco de dados especificado do Microsoft Jet (.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);

Parâmetros

lpszSrcName
O nome de um banco de dados fechado existente. Pode ser o caminho completo e o nome do arquivo, como "C:\\MYDB.MDB". Se o nome do arquivo tiver uma extensão, você precisará especificá-la. Se a sua rede der suporte à UNC (convenção de nomenclatura uniforme), você também poderá especificar um caminho de rede, como "\\\\MEUSERVIDOR\\MEUCOMPARTILHAMENTO\\MEUDIRETÓRIO\\MEUBD.MDB". (Barras invertidas duplas são necessárias na cadeia de caracteres de caminho porque "\" é o caractere de escape do C++.)

lpszDestName
O caminho completo do banco de dados compactado que você está criando. Você também pode especificar um caminho de rede como com lpszSrcName. Você não pode usar o argumento lpszDestName para especificar o mesmo arquivo de banco de dados que lpszSrcName.

lpszPassword
Uma senha, usada quando você deseja compactar um banco de dados protegido por senha. Observe que, se você usar a versão de CompactDatabase que usa uma senha, precisará fornecer todos os parâmetros. Além disso, como esse é um parâmetro de conexão, ele requer formatação especial, da seguinte maneira: ; PWD= lpszPassword. Por exemplo: ; PWD="Happy". (O ponto e vírgula à esquerda é necessário.)

lpszLocale
Uma expressão de cadeia de caracteres usada para especificar a direção de ordenação para criação de lpszDestName. Se você omitir esse argumento aceitando o valor padrão dbLangGeneral (veja abaixo), a localidade do novo banco de dados será a mesma do banco de dados antigo. Os valores possíveis são:

  • dbLangGeneral Inglês, alemão, francês, português, italiano e espanhol moderno

  • dbLangArabic Árabe

  • dbLangCyrillic Russo

  • dbLangCzech Tcheco

  • dbLangDutch Holandês

  • dbLangGreek Grego

  • dbLangHebrew Hebraico

  • dbLangHungarian Húngaro

  • dbLangIcelandic Islandês

  • dbLangNordic Idiomas nórdicos (somente versão 1.0 do mecanismo de banco de dados do Microsoft Jet)

  • dbLangNorwdan Norueguês e dinamarquês

  • dbLangPolish Polonês

  • dbLangSpanish Espanhol tradicional

  • dbLangSwedfin Sueco e finlandês

  • dbLangTurkish Turco

nOptions
Indica uma ou mais opções para o banco de dados de destino, lpszDestName. Se você omitir esse argumento aceitando o valor padrão, o lpszDestName terá a mesma criptografia e a mesma versão que lpszSrcName. Você pode combinar a opção dbEncrypt ou dbDecrypt com uma das opções de versão usando o operador OR bit a bit. Os valores possíveis, que especificam um formato de banco de dados, não uma versão do mecanismo de banco de dados, são:

  • dbEncrypt Criptografar o banco de dados durante a compactação.

  • dbDecrypt Descriptografar o banco de dados durante a compactação.

  • dbVersion10 Crie um banco de dados que use o mecanismo de banco de dados do Microsoft Jet versão 1.0 durante a compactação.

  • dbVersion11 Crie um banco de dados que use o mecanismo de banco de dados do Microsoft Jet versão 1.1 durante a compactação.

  • dbVersion20 Crie um banco de dados que use o mecanismo de banco de dados do Microsoft Jet versão 2.0 durante a compactação.

  • dbVersion30 Crie um banco de dados que use o mecanismo de banco de dados do Microsoft Jet versão 3.0 durante a compactação.

Você pode usar dbEncrypt ou dbDecrypt no argumento de opções para especificar se deseja criptografar ou descriptografar o banco de dados conforme ele é compactado. Se você omitir uma constante de criptografia ou incluir ambos dbDecrypt e dbEncrypt, lpszDestName terá a mesma criptografia que lpszSrcName. Você pode usar uma das constantes de versão no argumento de opções para especificar a versão do formato de dados para o banco de dados compactado. Essa constante afeta apenas a versão do formato de dados de lpszDestName. Você pode especificar apenas uma constante de versão. Se você omitir uma constante de versão, lpszDestName terá a mesma versão que lpszSrcName. Você pode compactar lpszDestName apenas para uma versão igual ou posterior à de lpszSrcName.

Cuidado

Se um banco de dados não for criptografado, será possível, mesmo que você implemente a segurança de usuário/senha, ler diretamente o arquivo de disco binário que constitui o banco de dados.

Comentários

À medida que você altera os dados em um banco de dados, o arquivo de banco de dados pode ficar fragmentado e usar mais espaço em disco do que o necessário. Periodicamente, você deve compactar seu banco de dados para desfragmentar o arquivo de banco de dados. O banco de dados compactado geralmente é menor. Você também pode optar por alterar a direção de ordenação, a criptografia ou a versão do formato de dados enquanto copia e compacta o banco de dados.

Cuidado

A função membro CompactDatabase não converterá corretamente um banco de dados completo do Microsoft Access de uma versão em outra. Somente o formato de dados é convertido. Objetos definidos pelo Microsoft Access, como formulários e relatórios, não são convertidos. No entanto, os dados são convertidos corretamente.

Dica

Você também pode usar CompactDatabase para copiar um arquivo de banco de dados.

Para obter mais informações sobre como compactar bancos de dados, confira o tópico "Método CompactDatabase" na Ajuda do DAO.

CDaoWorkspace::Create

Chame essa função membro para criar um objeto de workspace do DAO e associá-lo ao objeto CDaoWorkspace do MFC.

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

Parâmetros

lpszName
Uma cadeia de caracteres com até 14 caracteres que nomeia exclusivamente o novo objeto de workspace. Você precisa fornecer um nome. Para obter informações relacionadas, confira o tópico "Propriedade Name" na ajuda do DAO.

lpszUserName
O nome de usuário do proprietário do workspace. Para obter requisitos, confira o parâmetro lpszDefaultUser para a função membro SetDefaultUser. Para obter informações relacionadas, confira o tópico "Propriedade UserName" na Ajuda do DAO.

lpszPassword
A senha do novo objeto de workspace. Uma senha pode ter até 14 caracteres e pode conter qualquer caractere, exceto ASCII 0 (nulo). As senhas diferenciam maiúsculas de minúsculas. Para obter informações relacionadas, confira o tópico "Propriedade Password" na ajuda do DAO.

Comentários

O processo geral de criação é:

  1. Construa um objeto CDaoWorkspace.

  2. Chame a função membro do objeto Create para criar o workspace subjacente do DAO. Você precisa especificar um nome de workspace.

  3. Opcionalmente, chame Append se você quiser adicionar o workspace à coleção Workspaces do mecanismo de banco de dados. Você pode trabalhar com o workspace sem anexá-lo.

Após a chamada Create, o objeto de workspace está em um estado aberto, pronto para uso. Não chame Open após Create. Você não chamará Create se o workspace já existir na coleção Workspaces. Create inicializa o mecanismo de banco de dados se ele ainda não tiver sido inicializado para o seu aplicativo.

CDaoWorkspace::GetDatabaseCount

Chame essa função membro para recuperar o número de objetos de banco de dados do DAO na coleção Bancos de Dados do workspace – o número de bancos de dados abertos no workspace.

short GetDatabaseCount();

Valor de Devolução

O número de bancos de dados abertos no workspace.

Comentários

GetDatabaseCount será útil se você precisar fazer loop por todos os bancos de dados definidos na coleção Bancos de Dados do workspace. Para obter informações sobre um determinado banco de dados na coleção, confira GetDatabaseInfo. O uso típico é chamar GetDatabaseCount para o número de bancos de dados abertos e, em seguida, usar esse número como um índice de loop para chamadas repetidas para GetDatabaseInfo.

CDaoWorkspace::GetDatabaseInfo

Chame essa função membro para obter vários tipos de informações sobre um banco de dados aberto no workspace.

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

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

Parâmetros

nIndex
O índice baseado em zero do objeto de banco de dados na coleção Bancos de Dados do workspace, para pesquisa por índice.

dbinfo
Uma referência a um objeto CDaoDatabaseInfo que retorna as informações solicitadas.

dwInfoOptions
Opções que especificam quais informações sobre o banco de dados devem ser recuperadas. As opções disponíveis estão listadas aqui junto com o que elas fazem com que a função retorne:

  • AFX_DAO_PRIMARY_INFO (padrão) Nome, Atualizável, Transações

  • AFX_DAO_SECONDARY_INFO Informações primárias mais: versão, direção de ordenação, tempo limite da consulta

  • AFX_DAO_ALL_INFO Informações primárias e secundárias mais: Conexão

lpszName
O nome do objeto de banco de dados para pesquisa por nome. O nome é uma cadeia de caracteres com até 14 caracteres que nomeia exclusivamente o novo objeto de workspace.

Comentários

Uma versão da função permite pesquisar um campo por índice. A outra versão permite pesquisar um banco de dados por nome.

Para obter uma descrição das informações retornadas em dbinfo, confira a estrutura CDaoDatabaseInfo. Essa estrutura tem membros que correspondem aos itens de informações listados acima na descrição de dwInfoOptions. Quando você solicita informações em um nível, também obtém informações para qualquer nível anterior.

CDaoWorkspace::GetIniPath

Chame essa função membro para obter o local das configurações de inicialização do mecanismo de banco de dados do Microsoft Jet no Registro do Windows.

static CString PASCAL GetIniPath();

Valor de Devolução

Um CString que contém o local do registro.

Comentários

Você pode usar o local para obter informações sobre as configurações do mecanismo de banco de dados. As informações retornadas são, na verdade, o nome de uma subchave do Registro.

Para obter informações relacionadas, confira os tópicos "Propriedade IniPath" e "Personalizando configurações do Registro do Windows para acesso a dados" na Ajuda do DAO.

CDaoWorkspace::GetIsolateODBCTrans

Chame essa função membro para obter o valor atual da propriedade IsolateODBCTrans do DAO para o workspace.

BOOL GetIsolateODBCTrans();

Valor de Devolução

Diferente de zero se as transações ODBC estiverem isoladas; caso contrário, 0.

Comentários

Em algumas situações, talvez seja necessário ter várias transações simultâneas pendentes no mesmo banco de dados ODBC. Para fazer isso, você precisa abrir um workspace separado para cada transação. Tenha em mente que, embora cada workspace possa ter uma conexão ODBC própria com o banco de dados, isso reduz o desempenho do sistema. Como o isolamento de transações normalmente não é necessário, as conexões ODBC de vários objetos de workspace abertos pelo mesmo usuário são compartilhadas por padrão.

Alguns servidores ODBC, como o Microsoft SQL Server, não permitem transações simultâneas em apenas uma conexão. Se você precisar ter mais de uma transação por vez pendente em relação a esse banco de dados, defina a propriedade IsolateODBCTrans como TRUE em cada workspace assim que você abri-la. Isso força uma conexão ODBC separada para cada workspace.

Para informações relacionadas, confira o tópico "Propriedade IsolateODBCTrans" na Ajuda do DAO.

CDaoWorkspace::GetLoginTimeout

Chame essa função membro para obter o valor atual da propriedade LoginTimeout do DAO para o workspace.

static short PASCAL GetLoginTimeout();

Valor de Devolução

O número de segundos antes de ocorrer um erro quando você tenta fazer logon em um banco de dados ODBC.

Comentários

Esse valor representa o número de segundos antes de ocorrer um erro quando você tenta fazer logon em um banco de dados ODBC. A configuração padrão de LoginTimeout é de 20 segundos. Quando LoginTimeout é definido como 0, nenhum tempo limite ocorre e a comunicação com a fonte de dados pode parar de responder.

Quando você está tentando fazer logon em um banco de dados ODBC, como o Microsoft SQL Server, a conexão pode falhar como resultado de erros de rede ou porque o servidor não está em execução. Em vez de aguardar os 20 segundos padrão para se conectar, você pode especificar quanto tempo o mecanismo de banco de dados aguarda antes de produzir um erro. O logon no servidor ocorre implicitamente como parte de vários eventos diferentes, como a execução de uma consulta em um banco de dados de servidor externo.

Para obter informações relacionadas, confira o tópico "Propriedade LoginTimeout" na ajuda do DAO.

CDaoWorkspace::GetName

Chame essa função membro para obter o nome definido pelo usuário do objeto de workspace do DAO subjacente ao objeto CDaoWorkspace.

CString GetName();

Valor de Devolução

Um CString que contém o nome definido pelo usuário do objeto de workspace do DAO.

Comentários

O nome é útil para acessar o objeto de workspace do DAO na coleção Workspaces do mecanismo de banco de dados pelo nome.

Para obter informações relacionadas, confira o tópico "Propriedade Name" na ajuda do DAO.

CDaoWorkspace::GetUserName

Chame essa função membro para obter o nome do proprietário do workspace.

CString GetUserName();

Valor de Devolução

Um CString que representa o proprietário do objeto de workspace.

Comentários

Para obter ou definir as permissões para o proprietário do workspace, chame o DAO diretamente para verificar a configuração da propriedade Permissions; isso determina quais permissões o usuário tem. Para trabalhar com permissões, você precisa de um arquivo SYSTEM.MDA.

Para obter informações sobre como chamar o DAO diretamente, confira a Nota Técnica 54. Para obter informações relacionadas, confira o tópico "Propriedade UserName" na Ajuda do DAO.

CDaoWorkspace::GetVersion

Chame essa função membro para determinar a versão do mecanismo de banco de dados do Microsoft Jet em uso.

static CString PASCAL GetVersion();

Valor de Devolução

Um CString que indica a versão do mecanismo de banco de dados associada ao objeto.

Comentários

O valor retornado representa o número da versão no formato "principal.secundária"; por exemplo, "3.0". O número da versão do produto (por exemplo, 3.0) consiste no número da versão (3), um ponto e o número do lançamento (0).

Para obter informações relacionadas, confira o tópico "Propriedade Version" na ajuda do DAO.

CDaoWorkspace::GetWorkspaceCount

Chame essa função membro para recuperar o número de objetos de workspace do DAO na coleção Workspaces do mecanismo de banco de dados.

short GetWorkspaceCount();

Valor de Devolução

O número de workspaces abertos na coleção Workspaces.

Comentários

Essa contagem não inclui nenhum workspace aberto não acrescentado à coleção. GetWorkspaceCount será útil se você precisar fazer loop por todos os workspaces definidos na coleção Workspaces. Para obter informações sobre um determinado workspace na coleção, consfira GetWorkspaceInfo. O uso típico é chamar GetWorkspaceCount para o número de workspaces abertos e, em seguida, usar esse número como um índice de loop para chamadas repetidas para GetWorkspaceInfo.

CDaoWorkspace::GetWorkspaceInfo

Chame essa função membro para obter vários tipos de informações sobre um workspace aberto na sessão.

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

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

Parâmetros

nIndex
O índice baseado em zero do objeto de banco de dados na coleção Workspaces, para pesquisa por índice.

wkspcinfo
Uma referência a um objeto CDaoWorkspaceInfo que retorna as informações solicitadas.

dwInfoOptions
Opções que especificam quais informações sobre o workspace devem ser recuperadas. As opções disponíveis estão listadas aqui junto com o que elas fazem com que a função retorne:

  • AFX_DAO_PRIMARY_INFO (Padrão) Nome

  • AFX_DAO_SECONDARY_INFO Informações primárias mais: Nome de Usuário

  • AFX_DAO_ALL_INFO Informações primárias e secundárias mais: Isolar ODBCTrans

lpszName
O nome do objeto de workspace para pesquisa por nome. O nome é uma cadeia de caracteres com até 14 caracteres que nomeia exclusivamente o novo objeto de workspace.

Comentários

Para obter uma descrição das informações retornadas em wkspcinfo, confira a estrutura CDaoWorkspaceInfo. Essa estrutura tem membros que correspondem aos itens de informações listados acima na descrição de dwInfoOptions. Quando você solicita informações em um nível, também obtém informações para níveis anteriores.

CDaoWorkspace::Idle

Chame Idle para fornecer ao mecanismo de banco de dados a oportunidade de executar tarefas em segundo plano que podem não estar atualizadas devido ao processamento de dados intenso.

static void PASCAL Idle(int nAction = dbFreeLocks);

Parâmetros

nAction
Uma ação a ser tomada durante o processamento ocioso. Atualmente, a única ação válida é dbFreeLocks.

Comentários

Isso geralmente é verdadeiro em ambientes multiusuário e multitarefa em que não há tempo suficiente de processamento em segundo plano para manter todos os registros de um conjunto atualizados.

Observação

A chamada Idle não é necessária com bancos de dados criados com a versão 3.0 do mecanismo de banco de dados do Microsoft Jet. Use Idle somente para bancos de dados criados com versões anteriores.

Normalmente, os bloqueios de leitura são removidos e os dados em objetos de conjunto de registros do tipo dynaset locais são atualizados somente quando nenhuma outra ação (incluindo movimentos do mouse) está ocorrendo. Se você chamar Idle periodicamente, forneça ao mecanismo de banco de dados tempo para alcançar o andamento das tarefas de processamento em segundo plano, liberando bloqueios de leitura desnecessários. Especificar a constante dbFreeLocks como um argumento atrasa o processamento até que todos os bloqueios de leitura sejam liberados.

Essa função membro não é necessária em ambientes de usuário único, a menos que várias instâncias de um aplicativo estejam em execução. A função membro Idle pode aumentar o desempenho em um ambiente multiusuário porque força o mecanismo de banco de dados a liberar dados para o disco, liberando bloqueios na memória. Você também pode liberar bloqueios de leitura ao tornar as operações parte de uma transação.

Para obter informações relacionadas, confira o tópico "Método Idle" na ajuda do DAO.

CDaoWorkspace::IsOpen

Chame essa função membro para determinar se o objeto CDaoWorkspace está aberto – ou seja, se o objeto MFC foi inicializado por uma chamada para Open ou uma chamada para Create.

BOOL IsOpen() const;

Valor de Devolução

Diferente de zero se o objeto de workspace está visível; caso contrário, 0.

Comentários

Você pode chamar qualquer uma das funções membro de um workspace que esteja em um estado aberto.

CDaoWorkspace::m_pDAOWorkspace

Aponta para o objeto de workspace subjacente do DAO.

Comentários

Use esse membro de dados se precisar de acesso direto ao objeto subjacente do DAO. Você pode chamar as interfaces do objeto do DAO por meio desse ponteiro.

Para obter informações sobre como acessar objetos do DAO diretamente, confira a Nota Técnica 54.

CDaoWorkspace::Open

Abre explicitamente um objeto de workspace associado ao workspace padrão do DAO.

virtual void Open(LPCTSTR lpszName = NULL);

Parâmetros

lpszName
O nome do objeto de workspace do DAO a ser aberto – uma cadeia de caracteres com até 14 caracteres que nomeia exclusivamente o workspace. Aceite o valor padrão NULL para abrir explicitamente o workspace padrão. Para conhecer os requisitos de nomenclatura, confira o parâmetro lpszName para Create. Para obter informações relacionadas, confira o tópico "Propriedade Name" na ajuda do DAO.

Comentários

Depois de construir um objeto CDaoWorkspace, chame essa função membro para realizar um dos seguintes procedimentos:

  • Abrir explicitamente o workspace padrão. Passar NULL para lpszName.

  • Abrir um objeto CDaoWorkspace existente, um membro da coleção Workspaces, pelo nome. Passar um nome válido para um objeto de workspace existente.

Open coloca o objeto de workspace em um estado aberto e também inicializa o mecanismo de banco de dados se ele ainda não foi inicializado para o seu aplicativo.

Embora muitas funções membro CDaoWorkspace só possam ser chamadas depois que o workspace tiver sido aberto, as seguintes funções membro, que operam no mecanismo de banco de dados, estão disponíveis após a construção do objeto C++, mas antes de uma chamada para Open:

CDaoWorkspace::RepairDatabase

Chame essa função membro se precisar tentar reparar um banco de dados corrompido que acesse o mecanismo de banco de dados do Microsoft Jet.

static void PASCAL RepairDatabase(LPCTSTR lpszName);

Parâmetros

lpszName
O caminho e o nome de um arquivo de banco de dados existente do mecanismo Microsoft Jet. Se você omitir o caminho, somente o diretório atual será pesquisado. Se o seu sistema der suporte à UNC (convenção de nomenclatura uniforme), você também poderá especificar um caminho de rede, como "\\\\MEUSERVIDOR\\MEUCOMPARTILHAMENTO\\MEUDIRETÓRIO\\MEUBD.MDB". (Barras invertidas duplas são necessárias na cadeia de caracteres de caminho porque "\" é o caractere de escape do C++.)

Comentários

Você precisa fechar o banco de dados especificado por lpszName antes de repará-lo. Em um ambiente multiusuário, outros usuários não poderão estar com lpszName aberto enquanto você o estiver reparando. Se lpszName não estiver fechado ou não estiver disponível para uso exclusivo, ocorrerá um erro.

Essa função membro tenta reparar um banco de dados que foi marcado como possivelmente corrompido por uma operação de gravação incompleta. Isso poderá ocorrer se um aplicativo que usa o mecanismo de banco de dados do Microsoft Jet for fechado inesperadamente devido a uma interrupção de energia ou problema de hardware do computador. Se você concluir a operação e chamar a função membro Close ou sair do aplicativo de maneira usual, o banco de dados não será marcado como possivelmente corrompido.

Observação

Depois de reparar um banco de dados, também é uma boa ideia compactá-lo usando a função membro CompactDatabase para desfragmentar o arquivo e recuperar o espaço em disco.

Para obter mais informações sobre como reparar bancos de dados, confira o tópico "Método RepairDatabase" na Ajuda do DAO.

CDaoWorkspace::Rollback

Chame essa função membro para encerrar a transação atual e restaurar todos os bancos de dados no workspace para a condição que apresentavam antes de a transação ser iniciada.

void Rollback();

Comentários

Cuidado

Dentro de um objeto de workspace, as transações são sempre globais para o workspace e não estão limitadas a apenas um banco de dados ou conjunto de registros. Se você executar operações em mais de um banco de dados ou conjunto de registros dentro de uma transação de workspace, Rollback restaurará todas as operações em todos esses bancos de dados e conjuntos de registros.

Se você fechar um objeto de workspace sem salvar ou reverter quaisquer transações pendentes, as transações serão revertidas automaticamente. Se você chamar o CommitTrans ou Rollback sem primeiro chamar BeginTrans, ocorrerá um erro.

Observação

Quando você inicia uma transação, o mecanismo de banco de dados registra suas operações em um arquivo mantido no diretório especificado pela variável de ambiente TEMP na estação de trabalho. Se o arquivo de log de transações esgotar o armazenamento disponível em sua unidade TEMP, o mecanismo de banco de dados fará com que o MFC gere um CDaoException (erro 2004 do DAO). Neste ponto, se você chamar CommitTrans, um número indeterminado de operações será confirmado, mas as operações não confirmadas restantes serão perdidas e a operação precisará ser reiniciada. Chamar Rollback libera o log de transações e reverte todas as operações na transação.

CDaoWorkspace::SetDefaultPassword

Chame essa função membro para definir a senha padrão que o mecanismo de banco de dados usa quando um objeto de workspace é criado sem uma senha específica.

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

Parâmetros

lpszPassword
A senha padrão. Uma senha pode ter até 14 caracteres e pode conter qualquer caractere, exceto ASCII 0 (nulo). As senhas diferenciam maiúsculas de minúsculas.

Comentários

A senha padrão que você define se aplica a novos workspaces criados após a chamada. Ao criar workspaces subsequentes, você não precisa especificar uma senha na chamada Criar.

Para usar essa função membro:

  1. Construa um objeto CDaoWorkspace, mas não chame Create.

  2. Chame SetDefaultPassword e, se quiser, SetDefaultUser.

  3. Chame Create para esse objeto de workspace ou os subsequentes, sem especificar uma senha.

Por padrão, a propriedade DefaultUser é definida como "administrador" e a propriedade DefaultPassword é definida como uma cadeia de caracteres vazia ("").

Para obter mais informações sobre segurança, confira o tópico "Propriedade Permissões" na Ajuda do DAO. Para obter informações relacionadas, confira os tópicos "Propriedade DefaultPassword" e "Propriedade DefaultUser" na Ajuda do DAO.

CDaoWorkspace::SetDefaultUser

Chame essa função membro para definir o nome de usuário padrão que o mecanismo de banco de dados usa quando um objeto de workspace é criado sem um nome de usuário específico.

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

Parâmetros

lpszDefaultUser
O nome de usuário padrão. Um nome de usuário pode ter de 1 a 20 caracteres e incluir caracteres alfabéticos, caracteres acentuados, números, espaços e símbolos, exceto por: " (aspas), / (barra), \ (barra invertida), [ ] (colchetes), : (dois pontos), | (pipe), < (sinal menor que), > (sinal maior que), + (sinal de adição), = (sinal de igual), ; (ponto-e-vírgula), , (vírgula), (ponto de interrogação), * (asterisco), espaços à esquerda e caracteres de controle (ASCII 00 a ASCII 31). Para obter informações relacionadas, confira o tópico "Propriedade UserName" na Ajuda do DAO.

Comentários

O nome de usuário padrão definido por você aplica-se a novos workspaces criados após a chamada. Ao criar workspaces subsequentes, você não precisa especificar um nome de usuário na chamada a Create.

Para usar essa função membro:

  1. Construa um objeto CDaoWorkspace, mas não chame Create.

  2. Chame SetDefaultUser e, se quiser, SetDefaultPassword.

  3. Chame Create para esse objeto de workspace ou os subsequentes, sem especificar um nome de usuário.

Por padrão, a propriedade DefaultUser é definida como "administrador" e a propriedade DefaultPassword é definida como uma cadeia de caracteres vazia ("").

Para obter informações relacionadas, confira os tópicos "Propriedade DefaultUser" e "Propriedade DefaultPassword" na Ajuda do DAO.

CDaoWorkspace::SetIniPath

Chame essa função membro para especificar o local das configurações do Registro do Windows para o mecanismo de banco de dados do Microsoft Jet.

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

Parâmetros

lpszRegistrySubkey
Uma cadeia de caracteres que contém o nome de uma subchave do Registro do Windows para o local das configurações do mecanismo de banco de dados do Microsoft Jet ou parâmetros necessários para bancos de dados ISAM instaláveis.

Comentários

Chame SetIniPath somente se precisar especificar configurações especiais. Para mais informações, confira o tópico "Propriedade IniPath" na ajuda do DAO.

Observação

Chame SetIniPath durante a instalação do aplicativo, não quando o aplicativo for executado. SetIniPath precisa ser chamado antes de você abrir workspaces, bancos de dados ou conjuntos de registros; caso contrário, o MFC gera uma exceção.

Você pode usar esse mecanismo para configurar o mecanismo de banco de dados com configurações de registro fornecidas pelo usuário. O escopo desse atributo é limitado ao seu aplicativo e não pode ser alterado sem reiniciar o aplicativo.

CDaoWorkspace::SetIsolateODBCTrans

Chame essa função membro para definir o valor da propriedade IsolateODBCTrans do DAO para o workspace.

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

Parâmetros

bIsolateODBCTrans
Passe TRUE se você quiser começar a isolar transações ODBC. Passe FALSE se você quiser parar de isolar transações ODBC.

Comentários

Em algumas situações, talvez seja necessário ter várias transações simultâneas pendentes no mesmo banco de dados ODBC. Para fazer isso, você precisa abrir um workspace separado para cada transação. Embora cada workspace possa ter uma conexão ODBC própria com o banco de dados, isso reduz o desempenho do sistema. Como o isolamento de transações normalmente não é necessário, as conexões ODBC de vários objetos de workspace abertos pelo mesmo usuário são compartilhadas por padrão.

Alguns servidores ODBC, como o Microsoft SQL Server, não permitem transações simultâneas em apenas uma conexão. Se você precisar ter mais de uma transação por vez pendente em relação a esse banco de dados, defina a propriedade IsolateODBCTrans como TRUE em cada workspace assim que você abri-la. Isso força uma conexão ODBC separada para cada workspace.

CDaoWorkspace::SetLoginTimeout

Chame essa função membro para definir o valor da propriedade LoginTimeout do DAO para o workspace.

static void PASCAL SetLoginTimeout(short nSeconds);

Parâmetros

nSeconds
O número de segundos antes de ocorrer um erro quando você tenta fazer logon em um banco de dados ODBC.

Comentários

Esse valor representa o número de segundos antes de ocorrer um erro quando você tenta fazer logon em um banco de dados ODBC. A configuração padrão de LoginTimeout é de 20 segundos. Quando LoginTimeout é definido como 0, nenhum tempo limite ocorre e a comunicação com a fonte de dados pode parar de responder.

Quando você está tentando fazer logon em um banco de dados ODBC, como o Microsoft SQL Server, a conexão pode falhar como resultado de erros de rede ou porque o servidor não está em execução. Em vez de aguardar os 20 segundos padrão para se conectar, você pode especificar quanto tempo o mecanismo de banco de dados aguarda antes de produzir um erro. O logon no servidor ocorre implicitamente como parte de vários eventos diferentes, como a execução de uma consulta em um banco de dados de servidor externo. O valor do tempo limite é determinado pela configuração atual da propriedade LoginTimeout.

Para obter informações relacionadas, confira o tópico "Propriedade LoginTimeout" na ajuda do DAO.

Confira também

Classe CObject
Gráfico da hierarquia
Classe CDaoDatabase
Classe CDaoRecordset
Classe CDaoTableDef
Classe CDaoQueryDef
Classe CDaoException