Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Gerir uma sessão de base de dados nomeada, protegida por palavra-passe, desde o login até ao logout, por um único utilizador.
Observação
Os Objetos de Acesso a Dados (DAO) são suportados através do Office 2013. O DAO 3.6 é a versão final, e é considerado obsoleto.
Sintaxe
class CDaoWorkspace : public CObject
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CDaoWorkspace::CDaoWorkspace | Constrói um objeto de espaço de trabalho. Depois, ligue Create ou Open. |
Métodos Públicos
| Nome | Description |
|---|---|
| CDaoWorkspace::Anexar | Adiciona um espaço de trabalho recém-criado à coleção Workspaces do motor de base de dados. |
| CDaoWorkspace::BeginTrans | Inicia uma nova transação, que se aplica a todas as bases de dados abertas no espaço de trabalho. |
| CDaoWorkspace::Fechar | Fecha o espaço de trabalho e todos os objetos que contém. As transações pendentes são revertidas. |
| CDaoWorkspace::CommitTrans | Completa a transação atual e guarda as alterações. |
| CDaoWorkspace::CompactDatabase | Compacta (ou duplica) uma base de dados. |
| CDaoWorkspace::Create | Cria um novo objeto de espaço de trabalho DAO. |
| CDaoWorkspace::GetDatabaseCount | Devolve o número de objetos de base de dados DAO na coleção Bases de Dados do workspace. |
| CDaoWorkspace::GetDatabaseInfo | Devolve informação sobre uma base de dados DAO especificada definida na coleção Bases de Dados do workspace. |
| CDaoWorkspace::GetIniPath | Devolve a localização das definições de inicialização do motor de base de dados Microsoft Jet no registo do Windows. |
| CDaoWorkspace::GetIsolateODBCTrans | Devolve um valor que indica se múltiplas transações que envolvem a mesma fonte de dados ODBC estão isoladas através de múltiplas ligações forçadas à fonte de dados. |
| CDaoWorkspace::GetLoginTimeout | Devolve o número de segundos antes de ocorrer um erro quando o utilizador tenta iniciar sessão numa base de dados ODBC. |
| CDaoWorkspace::GetName | Devolve o nome definido pelo utilizador para o objeto workspace. |
| CDaoWorkspace::GetUserName | Devolve o nome de utilizador especificado quando o espaço de trabalho foi criado. Este é o nome do proprietário do espaço de trabalho. |
| CDaoWorkspace::GetVersion | Devolve uma string que contém a versão do motor de base de dados associada ao espaço de trabalho. |
| CDaoWorkspace::GetWorkspaceCount | Devolve o número de objetos de espaço de trabalho DAO na coleção Workspaces do motor de base de dados. |
| CDaoWorkspace::GetWorkspaceInfo | Devolve informação sobre um espaço de trabalho DAO especificado definido na coleção Workspaces do motor de base de dados. |
| CDaoWorkspace::Idle | Permite ao motor de base de dados realizar tarefas em segundo plano. |
| CDaoWorkspace::IsOpen | Devolve um valor diferente de zero se o espaço de trabalho estiver aberto. |
| CDaoWorkspace::Open | Abre explicitamente um objeto de espaço de trabalho associado ao espaço de trabalho predefinido do DAO. |
| CDaoWorkspace::RepairDatabase | Tenta reparar uma base de dados danificada. |
| CDaoWorkspace::Rollback | Termina a transação atual e não guarda as alterações. |
| CDaoWorkspace::SetDefaultPassword | Define a palavra-passe que o motor de base de dados usa quando um objeto de espaço de trabalho é criado sem uma palavra-passe específica. |
| CDaoWorkspace::SetDefaultUser | Define o nome de utilizador que o motor de base de dados utiliza quando um objeto de espaço de trabalho é criado sem um nome de utilizador específico. |
| CDaoWorkspace::SetIniPath | Define a localização das definições de inicialização do motor de base de dados Microsoft Jet no registo do Windows. |
| CDaoWorkspace::SetIsolateODBCTrans | Especifica se múltiplas transações que envolvem a mesma fonte de dados ODBC são isoladas forçando múltiplas ligações à fonte de dados. |
| CDaoWorkspace::SetLoginTimeout | Define o número de segundos antes de ocorrer um erro quando o utilizador tenta iniciar sessão numa fonte de dados ODBC. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CDaoWorkspace::m_pDAOWorkspace | Aponta para o objeto de trabalho DAO subjacente. |
Observações
Na maioria dos casos, não precisará de múltiplos espaços de trabalho, nem de criar objetos explícitos; quando abres objetos de base de dados e de conjuntos de registos, eles usam o espaço de trabalho predefinido do DAO. No entanto, se necessário, pode executar várias sessões ao mesmo tempo criando mais objetos de espaço de trabalho. Cada objeto de espaço de trabalho pode conter múltiplos objetos de base de dados abertos na sua própria coleção de bases de dados. No MFC, um espaço de trabalho é principalmente um gestor de transações, especificando um conjunto de bases de dados abertas todas no mesmo "espaço de transações".
Observação
As classes de base de dados DAO são distintas das classes de base de dados MFC baseadas em Conectividade de Base de Dados Aberta (ODBC). Todos os nomes de classes da base de dados DAO têm um 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 acedem aos dados através do motor de base de dados Microsoft Jet, incluindo os drivers ODBC. Também suportam operações de Linguagem de Definição de Dados (DDL), como a criação de bases de dados e a adição de tabelas e campos através das classes, sem necessidade de chamar diretamente o DAO.
Capabilities
A classe CDaoWorkspace oferece:
Acesso explícito, se necessário, a um espaço de trabalho predefinido, criado inicializando o motor da base de dados. Normalmente usas implicitamente o espaço de trabalho predefinido do DAO, criando objetos de base de dados e conjuntos de registos.
Um espaço de transações onde as transações se aplicam a todas as bases de dados abertas no espaço de trabalho. Pode criar mais espaços de trabalho para gerir espaços de transação separados.
Uma interface para muitas propriedades do motor de base de dados subjacente do Microsoft Jet (ver as funções estáticas dos membros). Abrir ou criar um espaço de trabalho, ou chamar uma função membro estática antes de abrir ou criar, inicializa o motor da base de dados.
Acesso à coleção Workspaces do motor de base de dados, que armazena todos os workspaces ativos que lhe foram anexados. Também pode criar e trabalhar com espaços de trabalho sem os adicionar à coleção.
Segurança
O MFC não implementa as coleções de Utilizadores e Grupos no DAO, que são usadas para controlo de segurança. Se precisares desses aspetos do DAO, deves programá-los tu próprio através de chamadas diretas para interfaces DAO. Para mais informações, consulte a Nota Técnica 54.
Usage
Pode usar a classe CDaoWorkspace para:
Abre explicitamente o espaço de trabalho predefinido.
Normalmente, o uso do espaço de trabalho padrão é implícito quando se abrem novos objetos CDaoDatabase ou CDaoRecordset . Mas talvez precises de aceder explicitamente. Por exemplo, para aceder a propriedades do motor de base de dados ou à coleção Workspaces. Veja "Uso Implícito do Espaço de Trabalho Predefinido" abaixo.
Crie novos espaços de trabalho. Chama Append se quiseres adicioná-los à coleção Workspaces.
Abra um espaço de trabalho existente na coleção Workspaces.
Criar um novo espaço de trabalho que ainda não exista na coleção Workspaces é descrito na função Criar membro. Os objetos do workspace não persistem de forma alguma entre as sessões do motor de base de dados. Se a sua aplicação liga o MFC de forma estática, terminar a aplicação desinicializa o motor da base de dados. Se a sua aplicação se ligar dinamicamente ao MFC, o motor da base de dados é desinicializado quando a DLL do MFC é descarregada.
Abrir explicitamente o espaço de trabalho predefinido, ou abrir um espaço de trabalho existente na coleção Workspaces, é descrito na função Abrir membro.
Termina uma sessão de espaço de trabalho fechando o espaço de trabalho com a função Fechar membro.
Close Fecha todas as bases de dados que não tenhas fechado e reverte quaisquer transações não comprometidas.
Transações
O DAO gere as transações ao nível do espaço de trabalho; assim, transações num espaço de trabalho com múltiplas bases de dados abertas aplicam-se a todas as bases de dados. Por exemplo, se duas bases de dados tiverem atualizações não comprometidas e ligares para a CommitTrans, todas as atualizações são confirmadas. Se quiseres limitar as transações a uma única base de dados, precisas de um objeto de espaço de trabalho separado para ela.
Uso Implícito do Workspace Padrão
O MFC utiliza implicitamente o espaço de trabalho padrão do DAO nas seguintes circunstâncias:
Se criares um novo
CDaoDatabaseobjeto mas não o fizeres através de um objeto existenteCDaoWorkspace, o MFC cria um objeto de espaço de trabalho temporário para ti, que corresponde ao espaço de trabalho padrão do DAO. Se o fizer para múltiplas bases de dados, todos os objetos da base de dados estão associados ao espaço de trabalho predefinido. Pode aceder ao espaço de trabalho de uma base de dados através de umCDaoDatabasemembro de dados.De forma semelhante, se criar um
CDaoRecordsetobjeto sem fornecer um ponteiro para umCDaoDatabaseobjeto, o MFC cria um objeto temporário de base de dados e, por extensão, um objeto temporário de espaço de trabalho. Pode aceder à base de dados de um conjunto de registos, e indiretamente ao seu espaço de trabalho, através de umCDaoRecordsetmembro de dados.
Outras Operações
Outras operações de base de dados também são fornecidas, como reparar uma base de dados corrompida ou compactar uma base de dados.
Para informações sobre como ligar diretamente para a DAO e sobre a segurança da DAO, consulte a Nota Técnica 54.
Hierarquia de herança
CDaoWorkspace
Requerimentos
Cabeçalho:afxdao.h
CDaoWorkspace::Anexar
Chame esta função de membro depois de chamar o Create.
virtual void Append();
Observações
Append adiciona um objeto de espaço de trabalho recém-criado à coleção Workspaces do motor de base de dados. Os espaços de trabalho não persistem entre sessões do motor de base de dados; São armazenados apenas na memória, não em disco. Não precisas de acrescentar um espaço de trabalho; Se não o fizeres, ainda podes usá-lo.
Um espaço de trabalho anexado permanece na coleção Workspaces, num estado ativo e aberto, até que chame a sua função de membro Close .
Para informações relacionadas, consulte o tópico "Método Append" na Ajuda do DAO.
CDaoWorkspace::BeginTrans
Chame esta função membro para iniciar uma transação.
void BeginTrans();
Observações
Depois de ligar BeginTrans, as atualizações que faz aos seus dados ou à estrutura da base de dados entram em vigor quando compromete a transação. Como o espaço de trabalho define um único espaço de transações, a transação aplica-se a todas as bases de dados abertas no espaço de trabalho. Existem duas formas de concluir a transação:
Chame a função membro CommitTrans para confirmar a transação e guardar alterações na fonte de dados.
Ou chamar a função de membro Rollback para cancelar a transação.
Fechar o objeto workspace ou um objeto de base de dados enquanto uma transação está pendente reverte todas as transações pendentes.
Se precisar de isolar transações numa fonte de dados ODBC daquelas noutra fonte ODBC, consulte a função membro SetIsolateODBCTrans .
CDaoWorkspace::CDaoWorkspace
Constrói um CDaoWorkspace objeto.
CDaoWorkspace();
Observações
Depois de construir o objeto C++, tens duas opções:
Chame a função do membro Open do objeto para abrir o workspace padrão ou para abrir um objeto existente na coleção Workspaces.
Ou chamar a função Create member do objeto para criar um novo objeto de espaço de trabalho DAO. Isto inicia explicitamente uma nova sessão de espaço de trabalho, à qual pode referir-se através do
CDaoWorkspaceobjeto. Depois de chamarCreate, podes chamar Append se quiseres adicionar o espaço de trabalho à coleção Workspaces do motor de base de dados.
Consulte a visão geral da classe para CDaoWorkspace para informações sobre quando precisa de criar explicitamente um CDaoWorkspace objeto. Normalmente, utiliza-se espaços de trabalho criados implicitamente quando se abre um objeto CDaoDatabase sem especificar um espaço de trabalho ou quando se abre um objeto CDaoRecordset sem especificar um objeto de base de dados. Os objetos MFC DAO criados desta forma utilizam o espaço de trabalho predefinido do DAO, que é criado uma vez e reutilizado.
Para libertar um espaço de trabalho e os seus objetos contidos, chame a função Fechar membro do objeto do espaço de trabalho.
CDaoWorkspace::Fechar
Chame esta função membro para fechar o objeto workspace.
virtual void Close();
Observações
Fechar um objeto de espaço de trabalho aberto liberta o objeto DAO subjacente e, se o espaço de trabalho for membro da coleção Workspaces, remove-o da coleção. Chamar Close é uma boa prática de programação.
Atenção
Fechar um objeto de espaço de trabalho fecha quaisquer bases de dados abertas no espaço de trabalho. Isto resulta no encerramento de quaisquer conjuntos de registos abertos nas bases de dados, e quaisquer edições ou atualizações pendentes são revertidas. Para informações relacionadas, consulte as funções dos membros CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close e CDaoQueryDef::Close .
Os objetos do espaço de trabalho não são permanentes; Só existem enquanto existem referências a eles. Isto significa que, quando a sessão do motor de base de dados termina, o espaço de trabalho e a sua coleção de Bases de Dados não persistem. Deve recriá-los para a sessão seguinte, abrindo novamente o seu espaço de trabalho e base de dados.
Para informações relacionadas, consulte o tópico "Método de Fechar" na Ajuda DAO.
CDaoWorkspace::CommitTrans
Chame esta função membro para comprometer uma transação, o que guarda um grupo de edições e atualizações para uma ou mais bases de dados no espaço de trabalho.
void CommitTrans();
Observações
Uma transação consiste numa série de alterações aos dados da base de dados ou à sua estrutura, começando com uma chamada ao BeginTrans. Quando concluir a transação, faça commit ou reverta (cancele as alterações) com Rollback. Por defeito, sem transações, as atualizações dos registos são comprometidas imediatamente. Ligar BeginTrans faz com que o compromisso das atualizações seja adiado até que contacte CommitTrans.
Atenção
Dentro de um espaço de trabalho, as transações são sempre globais para o espaço de trabalho e não estão limitadas a uma única base de dados ou conjunto de registos. Se realizar operações em mais do que uma base de dados ou conjunto de registos dentro de uma transação de espaço de trabalho, CommitTrans confirma todas as atualizações pendentes e Rollback restaura todas as operações nessas bases de dados e conjuntos de registos.
Quando fecha uma base de dados ou espaço de trabalho com transações pendentes, todas as transações são revertidas.
Observação
Isto não é um mecanismo de commit em duas fases. Se uma atualização falhar em comprometer, outras continuam a comprometer-se.
CDaoWorkspace::CompactDatabase
Chame esta função membro para compactar um Microsoft Jet especificado (. 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 uma base de dados existente e fechada. Pode ser um caminho completo e nome de ficheiro, como "C:\\MYDB. MDB". Se o nome do ficheiro tiver uma extensão, deve especificá-la. Se a sua rede suportar a convenção uniforme de nomenclatura (UNC), pode também especificar um caminho de rede, como "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Barras duplas são necessárias nas cadeias de caminho porque "\" é o carácter de escape C++.)
lpszDestName
O percurso completo da base de dados compactada que está a criar. Também pode especificar um caminho de rede, como acontece com lpszSrcName. Não podes usar o argumento lpszDestName para especificar o mesmo ficheiro de base de dados que lpszSrcName.
lpszPassword
Uma palavra-passe, usada quando se quer compactar uma base de dados protegida por palavra-passe. Se usares a versão que CompactDatabase aceita uma palavra-passe, tens de fornecer todos os parâmetros. Além disso, por ser um parâmetro de conexão, requer formatação especial, da seguinte forma: ;P WD= lpszPassword. Por exemplo: ;P WD="Feliz". (É necessário o ponto e vírgula inicial.)
lpszLocale
Uma expressão de cadeia usada para especificar a ordem de colação para criar lpszDestName. Se omitir este argumento aceitando o valor padrão de dbLangGeneral (ver abaixo), a localização da nova base de dados é a mesma da base de dados antiga. Os valores possíveis são:
dbLangGeneralInglês, Alemão, Francês, Português, Italiano e Espanhol ModernodbLangArabicÁrabedbLangCyrillicRussodbLangCzechChecodbLangDutchHolandêsdbLangGreekGregodbLangHebrewHebraicodbLangHungarianHúngarodbLangIcelandicIslandêsdbLangNordicLínguas nórdicas (apenas versão 1.0 do motor de base de dados Microsoft Jet)dbLangNorwdanNorueguesa e dinamarquesadbLangPolishPolacodbLangSpanishEspanhol tradicionaldbLangSwedfinSueco e finlandêsdbLangTurkishTurco
nOpções
Indica uma ou mais opções para a base de dados alvo, lpszDestName. Se omitir este argumento aceitando o valor padrão, o lpszDestName tem a mesma encriptação e a mesma versão que lpszSrcName. Podes combinar a dbEncrypt opção OR dbDecrypt com uma das opções de versão usando o operador bitwise-OR. Os valores possíveis, que especificam um formato de base de dados, e não uma versão do motor de base de dados, são:
dbEncryptEncripte a base de dados enquanto compacta.dbDecryptDescifra a base de dados enquanto compacta.dbVersion10Crie uma base de dados que utilize o motor de base de dados Microsoft Jet versão 1.0 durante a compactação.dbVersion11Crie uma base de dados que utilize o motor de base de dados Microsoft Jet versão 1.1 durante a compactação.dbVersion20Crie uma base de dados que utilize o motor de base de dados Microsoft Jet versão 2.0 durante a compactação.dbVersion30Crie uma base de dados que utilize o motor de base de dados Microsoft Jet versão 3.0 durante a compactação.
Pode usar dbEncrypt ou dbDecrypt no argumento options para especificar se deve encriptar ou desencriptar a base de dados à medida que esta é compactada. Se omitir uma constante de encriptação ou se incluir tanto dbDecrypt como dbEncrypt, lpszDestName tem a mesma encriptação que lpszSrcName. Pode usar uma das constantes de versão no argumento opções para especificar a versão do formato de dados para a base de dados compactada. Esta constante afeta apenas a versão do formato de dados de lpszDestName. Só pode especificar uma constante de versão. Se omitir uma constante de versão, lpszDestName terá a mesma versão que lpszSrcName. Só pode compactar lpszDestName para uma versão que seja igual ou posterior a lpszSrcName.
Atenção
Se uma base de dados não estiver encriptada, é possível, mesmo que implemente segurança de utilizador/palavra-passe, ler diretamente o ficheiro binário de disco que constitui a base de dados.
Observações
À medida que altera dados numa base de dados, o ficheiro da base de dados pode fragmentar-se e consumir mais espaço em disco do que o necessário. Periodicamente, deve compactar a sua base de dados para desfragmentar o ficheiro da base de dados. A base de dados compactada é geralmente mais pequena. Também pode optar por alterar a ordem de compilação, a encriptação ou a versão do formato dos dados enquanto copia e compacta a base de dados.
Atenção
A CompactDatabase função membro não converte corretamente uma base de dados completa do Microsoft Access de uma versão para outra. Apenas o formato dos dados é convertido. Objetos definidos pelo Microsoft Access, como formulários e relatórios, não são convertidos. No entanto, os dados são corretamente convertidos.
Sugestão
Também pode usar CompactDatabase para copiar um ficheiro de base de dados.
Para mais informações sobre compactação de bases de dados, consulte o tópico "Método CompactDatabase" na Ajuda DAO.
CDaoWorkspace::Create
Chame esta função membro para criar um novo objeto de espaço de trabalho DAO e associá-lo ao objeto MFC CDaoWorkspace .
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszUserName,
LPCTSTR lpszPassword);
Parâmetros
lpszName
Uma cadeia com até 14 caracteres que nomeia de forma única o novo objeto de espaço de trabalho. Tens de fornecer um nome. Para informações relacionadas, consulte o tópico "Nome de Propriedade" no DAO Help.
lpszUserName
O nome de utilizador do proprietário do espaço de trabalho. Para requisitos, consulte o parâmetro lpszDefaultUser para a função membro SetDefaultUser . Para informações relacionadas, consulte o tópico "Propriedade do Nome de Utilizador" na Ajuda do DAO.
lpszPassword
A palavra-passe do novo objeto workspace. Uma palavra-passe pode ter até 14 caracteres e pode conter qualquer carácter exceto ASCII 0 (nulo). As palavras-passe diferenciam maiúsculas de minúsculas. Para informações relacionadas, consulte o tópico "Propriedade de Palavra-Passe" na Ajuda DAO.
Observações
O processo geral de criação é:
Construa um objeto CDaoWorkspace .
Chame a função membro do
Createobjeto para criar o espaço de trabalho DAO subjacente. Deve especificar o nome do espaço de trabalho.Opcionalmente, chame Append se quiser adicionar o espaço de trabalho à coleção Workspaces do motor de base de dados. Podes trabalhar com o espaço de trabalho sem o acrescentar.
Após a Create chamada, o objeto workspace fica em estado aberto, pronto para uso. Não ligas Open depois Createde . Não se chama Create se o espaço de trabalho já existe na coleção Workspaces.
Create Inicializa o motor da base de dados se este ainda não tiver sido inicializado para a sua aplicação.
CDaoWorkspace::GetDatabaseCount
Chame esta função membro para recuperar o número de objetos de base de dados DAO na coleção Databases do workspace. Que é o número de bases de dados abertas no espaço de trabalho.
short GetDatabaseCount();
Valor de retorno
O número de bases de dados abertas no espaço de trabalho.
Observações
GetDatabaseCount é útil se precisar de percorrer todas as bases de dados definidas na coleção de Bases de Dados do workspace. Para obter informações sobre uma determinada base de dados na coleção, consulte GetDatabaseInfo. O uso típico é chamar GetDatabaseCount o número de bases de dados abertas, depois usar esse número como índice de loop para chamadas repetidas para GetDatabaseInfo.
CDaoWorkspace::GetDatabaseInfo
Chame esta função membro para obter vários tipos de informação sobre uma base de dados aberta no espaço de trabalho.
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 da base de dados na coleção Bases de Dados do workspace, para consulta por índice.
dbinfo
Uma referência a um objeto CDaoDatabaseInfo que devolve a informação solicitada.
dwInfoOptions
Opções que especificam que informação sobre a base de dados recuperar. As opções disponíveis estão listadas aqui juntamente com o que fazem a função devolver:
AFX_DAO_PRIMARY_INFO (Padrão) Nome, Atualizável, Transações
AFX_DAO_SECONDARY_INFO Informação principal mais: Versão, Ordem de Compilação, Tempo de Extinção da Consulta
AFX_DAO_ALL_INFO Informação primária e secundária mais: Ligar
lpszName
O nome do objeto da base de dados, para pesquisa por nome. O nome é uma cadeia com até 14 caracteres que nomeia de forma única o novo objeto de espaço de trabalho.
Observações
Uma versão da função permite-te consultar uma base de dados por índice. A outra versão permite consultar uma base de dados pelo nome.
Para uma descrição da informação devolvida em dbinfo, consulte a estrutura CDaoDatabaseInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição do dwInfoOptions. Quando se pede informação a um nível, obtém-se também informação de quaisquer níveis anteriores.
CDaoWorkspace::GetIniPath
Chame esta função membro para obter a localização das definições de inicialização do motor da base de dados Microsoft Jet no registo do Windows.
static CString PASCAL GetIniPath();
Valor de retorno
A CString contendo a localização do registo.
Observações
Pode usar a localização para obter informações sobre as definições do motor da base de dados. A informação devolvida é, na verdade, o nome de uma subchave do registo.
Para informações relacionadas, consulte os tópicos "Propriedade IniPath" e "Personalização das Definições do Registo do Windows para Acesso a Dados" na Ajuda do DAO.
CDaoWorkspace::GetIsolateODBCTrans
Chame esta função membro para obter o valor atual da propriedade DAO IsolateODBCTrans para o espaço de trabalho.
BOOL GetIsolateODBCTrans();
Valor de retorno
Não nula se as transações ODBC forem isoladas; caso contrário, 0.
Observações
Em algumas situações, pode ser necessário ter várias transações simultâneas pendentes na mesma base de dados ODBC. Para isso, precisa de abrir um espaço de trabalho separado para cada transação. Tenha em mente que, embora cada espaço de trabalho possa ter a sua própria ligação ODBC à base de dados, isso abranda o desempenho do sistema. Como normalmente não é necessário isolamento de transações, as ligações ODBC de múltiplos objetos de espaço de trabalho abertos pelo mesmo utilizador são partilhadas por defeito.
Alguns servidores ODBC, como o Microsoft SQL Server, não permitem transações simultâneas numa única ligação. Se precisares de ter mais do que uma transação pendente de cada vez numa base de dados destes, define a propriedade IsolateODBCTrans para TRUE em cada espaço de trabalho assim que o abrires. Isto obriga a uma ligação ODBC separada para cada espaço de trabalho.
Para informações relacionadas, consulte o tópico "IsolateODBCTrans Property" na Ajuda DAO.
CDaoWorkspace::GetLoginTimeout
Chame esta função membro para obter o valor atual da propriedade DAO LoginTimeout para o espaço de trabalho.
static short PASCAL GetLoginTimeout();
Valor de retorno
O número de segundos antes de ocorrer um erro quando tenta iniciar sessão numa base de dados ODBC.
Observações
Este valor representa o número de segundos antes de ocorrer um erro quando tenta iniciar sessão numa base de dados ODBC. A definição padrão de LoginTimeout é de 20 segundos. Quando o LoginTimeout está definido para 0, não ocorre nenhum timeout e a comunicação com a fonte de dados pode deixar de responder.
Quando tenta iniciar sessão numa base de dados ODBC, como o Microsoft SQL Server, a ligação pode falhar devido a erros de rede ou porque o servidor não está a funcionar. Em vez de esperar pelos 20 segundos padrão para se ligar, pode especificar quanto tempo o motor da base de dados espera antes de produzir um erro. Iniciar sessão no servidor acontece implicitamente como parte de diferentes eventos, como executar uma consulta numa base de dados externa de servidor.
Para informações relacionadas, consulte o tópico "LoginTimeout Property" na Ajuda DAO.
CDaoWorkspace::GetName
Chame esta função membro para obter o nome definido pelo utilizador do objeto de trabalho DAO subjacente ao CDaoWorkspace objeto.
CString GetName();
Valor de retorno
A contendo CString o nome definido pelo utilizador do objeto de espaço de trabalho DAO.
Observações
O nome é útil para aceder ao objeto de espaço de trabalho DAO na coleção Workspaces do motor de base de dados pelo nome.
Para informações relacionadas, consulte o tópico "Nome de Propriedade" no DAO Help.
CDaoWorkspace::GetUserName
Chame esta função de membro para obter o nome do proprietário do espaço de trabalho.
CString GetUserName();
Valor de retorno
A CString que representa o proprietário do objeto workspace.
Observações
Para obter ou definir as permissões para o proprietário do espaço de trabalho, ligue diretamente ao DAO para verificar a definição de propriedades Permissões; Isto determina as permissões que esse utilizador tem. Para trabalhar com permissões, precisas de um SISTEMA. MDA.
Para informações sobre como ligar diretamente para o DAO, consulte a Nota Técnica 54. Para informações relacionadas, consulte o tópico "Propriedade do Nome de Utilizador" na Ajuda do DAO.
CDaoWorkspace::GetVersion
Chame esta função membro para determinar a versão do motor de base de dados Microsoft Jet em uso.
static CString PASCAL GetVersion();
Valor de retorno
A CString que indica a versão do motor de base de dados associada ao objeto.
Observações
O valor devolvido representa o número de versão na forma "major.minor"; por exemplo, "3.0". O número de versão do produto (por exemplo, 3.0) consiste no número de versão (3), um ponto e o número de lançamento (0).
Para informações relacionadas, consulte o tópico "Propriedade de Versão" no DAO Help.
CDaoWorkspace::GetWorkspaceCount
Chame esta função membro para recuperar o número de objetos de espaço de trabalho DAO na coleção Workspaces do motor de base de dados.
short GetWorkspaceCount();
Valor de retorno
O número de espaços de trabalho abertos na coleção Workspaces.
Observações
Esta contagem não inclui quaisquer espaços de trabalho abertos que não estejam anexados à coleção.
GetWorkspaceCount é útil se precisar de percorrer todos os espaços de trabalho definidos na coleção Workspaces. Para obter informações sobre um determinado espaço de trabalho na coleção, consulte GetWorkspaceInfo. O uso típico é pedir GetWorkspaceCount o número de espaços de trabalho abertos, depois usar esse número como índice de loop para chamadas repetidas para GetWorkspaceInfo.
CDaoWorkspace::GetWorkspaceInfo
Chame esta função membro para obter vários tipos de informação sobre um espaço de trabalho 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 da base de dados na coleção Workspaces, para pesquisa por índice.
WKSPCINFO
Uma referência a um objeto CDaoWorkspaceInfo que devolve a informação solicitada.
dwInfoOptions
Opções que especificam que informação sobre o espaço de trabalho recuperar. As opções disponíveis estão listadas aqui juntamente com o que fazem a função devolver:
AFX_DAO_PRIMARY_INFO (Nome Predefinido)
AFX_DAO_SECONDARY_INFO Informação principal mais: Nome de utilizador
AFX_DAO_ALL_INFO Informação primária e secundária mais: Isolar ODBCTrans
lpszName
O nome do objeto workspace, para pesquisa por nome. O nome é uma cadeia com até 14 caracteres que nomeia de forma única o novo objeto de espaço de trabalho.
Observações
Para uma descrição da informação devolvida em wkspcinfo, consulte a estrutura CDaoWorkspaceInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição do dwInfoOptions. Quando solicitas informação a um nível, obtém-se também informação para níveis anteriores.
CDaoWorkspace::Idle
Chamar Idle para fornecer ao motor da base de dados a oportunidade de realizar tarefas em segundo plano que podem não ser up-to- data devido ao processamento intenso de dados.
static void PASCAL Idle(int nAction = dbFreeLocks);
Parâmetros
nAction
Uma ação a tomar durante o processamento inativo. Atualmente, a única ação válida é dbFreeLocks.
Observações
Isto é frequentemente verdade em ambientes multiutilizador e multitarefa, onde não há tempo suficiente de processamento em segundo plano para manter todos os registos de um conjunto de registos atualizados.
Observação
A chamada Idle não é necessária com bases de dados criadas com a versão 3.0 do motor de base de dados Microsoft Jet.
Idle Use apenas para bases de dados criadas com versões anteriores.
Normalmente, os bloqueios de leitura são removidos e os dados em objetos de registos locais do tipo dynaset são atualizados apenas quando não estão a ocorrer outras ações (incluindo movimentos do rato). Se ligar Idleperiodicamente para , dá tempo ao motor da base de dados para recuperar tarefas de processamento em segundo plano ao libertar bloqueios de leitura desnecessários. Especificar a dbFreeLocks constante como argumento atrasa o processamento até que todos os bloqueios de leitura sejam libertados.
Esta função membro não é necessária em ambientes de utilizador único, a menos que estejam a correr várias instâncias de uma aplicação. A Idle função membro pode aumentar o desempenho num ambiente multiutilizador porque força o motor da base de dados a limpar dados para o disco, libertando bloqueios na memória. Também pode libertar bloqueios de leitura tornando as operações parte de uma transação.
Para informações relacionadas, consulte o tópico "Método Idle" na Ajuda DAO.
CDaoWorkspace::IsOpen
Chame esta função membro para determinar se o CDaoWorkspace objeto está aberto. O que significa que ou o objeto MFC foi inicializado por uma chamada para Abrir ou para Criar.
BOOL IsOpen() const;
Valor de retorno
Não nulo se o objeto workspace for aberto; caso contrário, 0.
Observações
Pode chamar qualquer uma das funções membros de um espaço de trabalho que esteja em estado aberto.
CDaoWorkspace::m_pDAOWorkspace
Um apontador para o objeto de trabalho DAO subjacente.
Observações
Use este membro de dados se precisar de acesso direto ao objeto DAO subjacente. Pode chamar as interfaces do objeto DAO através deste ponteiro.
Para informações sobre o acesso direto a objetos DAO, consulte a Nota Técnica 54.
CDaoWorkspace::Open
Abre explicitamente um objeto de espaço de trabalho associado ao espaço de trabalho predefinido do DAO.
virtual void Open(LPCTSTR lpszName = NULL);
Parâmetros
lpszName
O nome do objeto do espaço de trabalho DAO a abrir — uma cadeia com até 14 caracteres que nomeia de forma única o espaço de trabalho. Aceitar o valor predefinido NULL para abrir explicitamente o espaço de trabalho predefinido. Para requisitos de nomenclatura, consulte o parâmetro lpszName para Criar. Para informações relacionadas, consulte o tópico "Nome de Propriedade" no DAO Help.
Observações
Depois de construir um CDaoWorkspace objeto, chama esta função membro para fazer uma das seguintes:
Abre explicitamente o espaço de trabalho predefinido. Passe NULL para o lpszName.
Abra um objeto existente
CDaoWorkspace, um membro da coleção Workspaces, pelo nome. Passe um nome válido para um objeto de espaço de trabalho existente.
Open coloca o objeto workspace em estado aberto e também inicializa o motor da base de dados caso ainda não tenha sido inicializado para a sua aplicação.
Embora muitas CDaoWorkspace funções membros só possam ser chamadas após a abertura do espaço de trabalho, as seguintes funções membro, que operam no motor da base de dados, estão disponíveis após a construção do objeto C++ mas antes de uma chamada para Open:
CDaoWorkspace::RepairDatabase
Chame esta função membro se precisar de tentar reparar uma base de dados corrompida que acede ao motor da base de dados Microsoft Jet.
static void PASCAL RepairDatabase(LPCTSTR lpszName);
Parâmetros
lpszName
O caminho e o nome do ficheiro de um ficheiro existente na base de dados do motor Microsoft Jet. Se omitir o caminho, apenas o diretório atual é pesquisado. Se o seu sistema suportar a convenção uniforme de nomes (UNC), pode também especificar um caminho de rede, como: "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (São necessárias barras duplas na cadeia de caminho porque "\" é o carácter de escape C++.)
Observações
Deve fechar a base de dados especificada por lpszName antes de a reparar. Num ambiente multiutilizador, outros utilizadores não podem ter o lpszName aberto enquanto o estás a reparar. Se o lpszName não estiver fechado ou não estiver disponível para uso exclusivo, ocorre um erro.
Esta função membro tenta reparar uma base de dados que foi marcada como possivelmente corrompida por uma operação de escrita incompleta. Isto pode ocorrer se uma aplicação que utilize o motor de base de dados Microsoft Jet for encerrada inesperadamente devido a uma falha de energia ou problema de hardware informático. Se completares a operação e chamares a função Close member ou saíres da aplicação de forma habitual, a base de dados não será marcada como possivelmente corrompida.
Observação
Após reparar uma base de dados, também é uma boa ideia compactá-la usando a função membro CompactDatabase para desfragmentar o ficheiro e recuperar espaço em disco.
Para mais informações sobre reparação de bases de dados, consulte o tópico "Método RepairDatabase" na Ajuda DAO.
CDaoWorkspace::Rollback
Chame esta função membro para terminar a transação atual e restaurar todas as bases de dados do espaço de trabalho ao estado anterior ao início da transação.
void Rollback();
Observações
Atenção
Dentro de um objeto de espaço de trabalho, as transações são sempre globais para o espaço de trabalho e não estão limitadas a apenas uma base de dados ou conjunto de registos. Se realizar operações em mais do que uma base de dados ou conjunto de registos dentro de uma transação de espaço de trabalho, Rollback restaura todas as operações em todas essas bases de dados e conjuntos de registos.
Se fechar um objeto de espaço de trabalho sem guardar ou reverter quaisquer transações pendentes, as transações são automaticamente revertidas. Se ligar para a CommitTrans ou Rollback sem ligar primeiro para a BeginTrans, ocorre um erro.
Observação
Quando inicia uma transação, o motor da base de dados regista as suas operações num ficheiro guardado no diretório especificado pela variável de ambiente TEMP na estação de trabalho. Se o ficheiro de registo de transações esgotar o armazenamento disponível no seu disco TEMP, o motor da base de dados fará com que o MFC dê um CDaoException erro (erro DAO 2004). Neste ponto, se chamar CommitTrans, um número indeterminado de operações é comprometido, mas as operações restantes por concluir são perdidas, e a operação tem de ser reiniciada. A chamada Rollback liberta o registo de transações e reverte todas as operações na transação.
CDaoWorkspace::SetDefaultPassword
Chame esta função membro para definir a palavra-passe padrão que o motor de base de dados usa quando um objeto de workspace é criado sem uma palavra-passe específica.
static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
Parâmetros
lpszPassword
A palavra-passe padrão. Uma palavra-passe pode ter até 14 caracteres e pode conter qualquer carácter exceto ASCII 0 (nulo). As palavras-passe diferenciam maiúsculas de minúsculas.
Observações
A palavra-passe padrão que defines aplica-se aos novos espaços de trabalho que crias após a chamada. Quando cria espaços de trabalho subsequentes, não precisa de especificar uma palavra-passe na chamada Criar .
Para usar esta função membro:
Constrói um
CDaoWorkspaceobjeto mas não chamesCreate.Liga
SetDefaultPassworde, se quiseres, SetDefaultUser.Peça
Createeste objeto de trabalho ou outros subsequentes, sem especificar uma palavra-passe.
Por defeito, a propriedade DefaultUser está definida como "admin" e a propriedade DefaultPassword está definida como uma string vazia ("").
Para mais informações sobre segurança, consulte o tópico "Propriedade de Permissões" na Ajuda DAO. Para informações relacionadas, consulte os tópicos "Propriedade DefaultPassword" e "Propriedade DefaultUser" na Ajuda DAO.
CDaoWorkspace::SetDefaultUser
Chame esta função membro para definir o nome de utilizador predefinido que o motor de base de dados utiliza quando um objeto de espaço de trabalho é criado sem um nome de utilizador específico.
static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
Parâmetros
lpszDefaultUser
O nome de utilizador padrão. Um nome de utilizador pode ter entre 1 e 20 caracteres e incluir caracteres alfabéticos, caracteres acentuados, números, espaços e símbolos, exceto por: " (aspas), / (barra para a frente), \ (barra diagonal invertida), [ ] (parênteses), : (dois-pontos), | (pipe), < (signo > menor), (signo maior-que), (signo mais), =+ (signo igual), ; (ponto e vírgula), (vírgula), , (ponto de interrogação), * (asterisco), espaços iniciais e caracteres de controlo (ASCII 00 a ASCII 31). Para informações relacionadas, consulte o tópico "Propriedade do Nome de Utilizador" na Ajuda do DAO.
Observações
O nome de utilizador padrão que defines aplica-se aos novos espaços de trabalho que crias após a chamada. Quando crias espaços de trabalho subsequentes, não precisas de especificar um nome de utilizador na chamada Criar .
Para usar esta função membro:
Constrói um
CDaoWorkspaceobjeto mas não chamesCreate.Liga
SetDefaultUsere, se quiseres, SetDefaultPassword.Chamar
Createpara este objeto workspace ou para os seguintes, sem especificar um nome de utilizador.
Por defeito, a propriedade DefaultUser está definida como "admin" e a propriedade DefaultPassword está definida como uma string vazia ("").
Para informações relacionadas, consulte os tópicos "Propriedade DefaultUser" e "Propriedade DefaultPassword" na Ajuda DAO.
CDaoWorkspace::SetIniPath
Chame esta função membro para especificar a localização das definições do registo do Windows para o motor de base de dados Microsoft Jet.
static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
Parâmetros
lpszRegistrySubkey
Uma string contendo o nome de uma subchave do registo do Windows para a localização das definições do motor da base de dados Microsoft Jet ou parâmetros necessários para bases de dados ISAM instaláveis.
Observações
Ligue SetIniPath apenas se precisar de especificar definições especiais. Para mais informações, consulte o tópico "IniPath Property" na Ajuda DAO.
Observação
Ligue SetIniPath durante a instalação da aplicação, não quando a aplicação estiver a correr.
SetIniPath deve ser chamado antes de abrir qualquer espaço de trabalho, base de dados ou conjuntos de registos; caso contrário, o MFC lança uma exceção.
Pode usar este mecanismo para configurar o motor da base de dados com as definições do registo fornecidas pelo utilizador. O âmbito deste atributo está limitado à sua candidatura e não pode ser alterado sem reiniciar a sua candidatura.
CDaoWorkspace::SetIsolateODBCTrans
Chame esta função membro para definir o valor da propriedade DAO IsolateODBCTrans para o espaço de trabalho.
void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
Parâmetros
bIsolateODBCTrans
Passa VERDADEIRO se quiseres começar a isolar transações ODBC. Passe FALSE se quiser deixar de isolar transações ODBC.
Observações
Em algumas situações, pode ser necessário ter várias transações simultâneas pendentes na mesma base de dados ODBC. Para isso, precisa de abrir um espaço de trabalho separado para cada transação. Embora cada espaço de trabalho possa ter a sua própria ligação ODBC à base de dados, isto atrasa o desempenho do sistema. Como normalmente não é necessário isolamento de transações, as ligações ODBC de múltiplos objetos de espaço de trabalho abertos pelo mesmo utilizador são partilhadas por defeito.
Alguns servidores ODBC, como o Microsoft SQL Server, não permitem transações simultâneas numa única ligação. Se precisares de ter mais do que uma transação pendente de cada vez numa base de dados destes, define a propriedade IsolateODBCTrans para TRUE em cada espaço de trabalho assim que o abrires. Isto obriga a uma ligação ODBC separada para cada espaço de trabalho.
CDaoWorkspace::SetLoginTimeout
Chame esta função membro para definir o valor da propriedade DAO LoginTimeout para o espaço de trabalho.
static void PASCAL SetLoginTimeout(short nSeconds);
Parâmetros
nSegundos
O número de segundos antes de ocorrer um erro quando tenta iniciar sessão numa base de dados ODBC.
Observações
Este valor representa o número de segundos antes de ocorrer um erro quando tenta iniciar sessão numa base de dados ODBC. A definição padrão de LoginTimeout é de 20 segundos. Quando o LoginTimeout está definido para 0, não ocorre nenhum timeout e a comunicação com a fonte de dados pode deixar de responder.
Quando tenta iniciar sessão numa base de dados ODBC, como o Microsoft SQL Server, a ligação pode falhar devido a erros de rede ou porque o servidor não está a funcionar. Em vez de esperar pelos 20 segundos padrão para se ligar, pode especificar quanto tempo o motor da base de dados espera antes de produzir um erro. Iniciar sessão no servidor acontece implicitamente como parte de vários eventos diferentes, como executar uma consulta numa base de dados externa de servidor. O valor de timeout é determinado pela definição atual da propriedade LoginTimeout.
Para informações relacionadas, consulte o tópico "LoginTimeout Property" na Ajuda DAO.
Consulte também
CObject Classe
Gráfico de Hierarquia
CDaoDatabase Classe
CDaoRecordset Classe
CDaoTableDef Classe
CDaoQueryDef Classe
CDaoException Classe