Senha do Access
18/02/2003
0
Estou alterando as ligações do BD feitas em BDE para ADO. Meu banco de Dados em Access XP tem uma senha, ao testar a ligação do ADOConnection com o BD, ocorre o seguinte erro:
[i:db6bdb8749]Falha no teste de conexão devido a um erro na inicialização do provedor. Senha inválida[/i:db6bdb8749]
Se descarco ´Senha em branco´ e digito a senha, a mensagem muda para:
[i:db6bdb8749]Falha no teste de conexão devido a um erro na inicialização do provedor. Não é possível iniciar o aplicativo. O arquivo de informações do grupo de trabalho está faltando ou foi aberto em modo exclusivo por um outro usuário.[/i:db6bdb8749]
Utilizo Delphi 7. Alguém sabe o que pode ser?
Brigadu
:roll: [/i]
[i:db6bdb8749]Falha no teste de conexão devido a um erro na inicialização do provedor. Senha inválida[/i:db6bdb8749]
Se descarco ´Senha em branco´ e digito a senha, a mensagem muda para:
[i:db6bdb8749]Falha no teste de conexão devido a um erro na inicialização do provedor. Não é possível iniciar o aplicativo. O arquivo de informações do grupo de trabalho está faltando ou foi aberto em modo exclusivo por um outro usuário.[/i:db6bdb8749]
Utilizo Delphi 7. Alguém sabe o que pode ser?
Brigadu
:roll: [/i]
Marcelo.c
Curtir tópico
+ 0
Responder
Posts
18/02/2003
Carnette
Criando uma base de dados MS Access pelo Delphi
Resumo:
Aprenda como criar uma base de dados MS Access sem o MS Access. Cria a base, as tabelas, índices, enfim, tudo utilizando puro código delphi.
INTRODUÇÃO
Quando se cria um sistema para ambientes desktop sempre surge a dúvida de qual base de dados usar. Geralmente são usados bancos DBase, Paradox ou MS Access. Destes, a base mais robusta e confiável é, sem dúvida, MS Access. Mas existe um grande problema para se criar a base de dados MS Access, pois faz-se necessário o uso do ambiente MS Access.
Algumas pessoas não têm este aplicativo instalado em sua máquina e então torna-se inviável o uso desta base de dados, impedindo, desta forma, um crescimento tecnológico do programador que fica preso a ferramentas obsoletas.
Neste tutorial você irá aprender como criar uma base de dados MS Access a partir do nada, usando puro código Delphi e a Tecnologia ADO Extensions que é distribuída pela Microsoft.
ADOX, faz parte dos componentes ADO, quer dizer, é uma extensão do ADO. O ADOX fornece ferramentas de acesso a estrutura, segurança, definições de tabelas e muitos outros.
Como dito anteriormente, ADOX é uma library distribuída pela Microsoft, o arquivo chama-se ´Msadox.dll´, sua definição é ´Microsoft ADO Ext. 2.x for DDL and Security´ e é este arquivo que iremos importar para nossa IDE no Delphi.
INSTALANDO
Para usar este objetos no Delphi basta seguir os seguintes passos:
1- Selecione PROJECT > IMPORT TYPE LIBRARY
2- Procure pela descrição: ´Microsoft ADO Ext. 2.x for DDL and Security (Version 2.x)´
2- Em CLASS NAMES, altere o nome dos objetos acrescentando ADOX após a letra T, exemplo: TTable mude para TADOXTable, TColumm mude para TADOXColumn. Repita este procedimento para todos objetos nesta lista.
3- Em PALETTE PAGE selecione ou digite um novo nome para a paleta onde os componentes ficarão, exemplo: ADOX.
4- Pressione INSTALL, logo depois pressione Ok confirmando o início da instalação.
5- Pressione YES confirmando que você quer instalar os componentes.
6- Pressione Ok na tela que indica os objetos instalados.
7- Selecione FILE > CLOSE ALL e pressione YES para salvar este package criado.
O motivo da troca do nome dos objetos é muito óbvio, estes nomes de classe como Ttable já existem, então iria gerar conflitos na compilação, por isso bastou trocar o nome da classe.
Pronto, os objetos estão instalados, agora sempre que você utilizar estes objetos será inserido na clausula USES a Unit ADOX_TLB pois este é o nome da unit criada a partir da importação da DLL.
Agora, mãos à obra.
DEFININDO A BASE DE DADOS E OBJETOS A SEREM USADOS
Vamos criar uma base onde serão armazenados informaçõe sobre animais de estimação (para sair um pouco da rotina de CLIENTES/PRODUTOS/PEDIDOS).
Para esta base serão criadas as seguintes tabelas:
> PROPRIETARIO
> PRO_ID
> PRO_NOME
>ANIMAL
> ANI_ID
> ANI_PROPRIETARIO
> ANI_NOME
> ANI_NASCIMENTO
Onde um proprietario pode ter mais de um animal formando assim um relacionamento UM PARA MUITOS.
No Delphi, crie uma nova aplicação. Será criado um novo Form, a este insira os seguintes componentes:
> 3 TButtons
Para lançar os procedimentos de criação da base de dados e das tabelas.
Altere as seguintes propriedades para cada TButtons respectivamente:
Caption: Criar base
Name: btnBase
Caption: Criar tabelas
Name: btnTabelas
Caption: Navegar
Name: btnNavegar
> 1 TEdit
Para armazenar o path da base de dados a ser criada.
Altere as seguintes propriedades:
Name: edtPath
Text: (deixe em branco)
> 1 TSaveDialog
Para navegar no disco e informar o path da base de dados.
Altere as seguintes propriedades:
Filter: Base MS Access|*.mdb
Title: Salvar como...
DefaultExt: .mdb
> 1 TADOConnection
Para fazer a conexão com a base criada.
Altere as seguintes propriedades:
Login prompt: False
> 1 TADOCommand
Para fazer a ligação e criação das tabelas.
Altere as seguintes propriedades:
Connection: Selecione o ADOConnection1
> 1 TADOXCatalog
Para criar a base de dados.
CRIANDO A BASE DE DADOS
Agora vamos ao código. Clique duas vezes no objeto btnNavegar e digite:
procedure TForm1.btnNavegarClick(Sender: TObject);
begin
if SaveDialog1.Execute then
edtPath.Text := SaveDialog1.FileName;
end;
Com isso informamos o nome que a base terá.
Clique duas vezes no objeto btnBase e digite o seguinte procedimento:
procedure TForm1.btnBaseClick(Sender: TObject);
var
Base: String;
begin
if edtPath.Text = ´´ then
begin
ShowMessage(´Nome da base de dados não informada.´);
exit;
end;
Base := ´Provider=Microsoft.Jet.OLEDB.4.0´+
´;Data Source=´ + edtPath.Text +
´;Jet OLEDB:Engine Type=4´;
ADOXCatalog1.Create1(Base);
end;
Primeiro verificamos se há algum texto no objeto TEdit, em seguida atribuímos a string de conexão à variável BASE informando vários parâmetros, mas atente para a seguinte linha: ´...Engine Type=4...´, isto quer dizer que iremos criar uma base Access 97, para Access 2000 informe 5.
Em seguida é efetivamente criado a base de dados através do método Create1 do objeto ADOXCatalog, passando para este a string da BASE. Observe que o método é Create1 e não simplesmente Create, pois o método Create já existe e é da classe.
Pronto, criamos uma base de dados vazia, não existe nada nela, mas já é um arquivo comum ao MS Access e pode ser aberto normalmente.
CRIANDO TABELAS
Vamos começar a criar as tabelas, seus índices e integridade referencial. Para isso clique duas vezes no objeto btnTabelas e digite:
procedure TForm1.btnTabelasClick(Sender: TObject);
var
base, comando: string;
begin
{ definindo a base de dados }
base := ´Provider=Microsoft.Jet.OLEDB.4.0´ +
´;Data Source=´ + edtPath.Text +
´;Persist Security Info=False´;
ADOConnection1.ConnectionString := base;
{ Criando as tabelas... }
{>>> PROPRIETARIO <<<}
comando := ´CREATE TABLE PROPRIETARIO (´ +
´PRO_ID INT,´ +
´PRO_NOME TEXT(50))´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
{ ADICIONANDO INDICES }
comando := ´CREATE INDEX IDX_PRO_ID ´ +
´ON PROPRIETARIO (PRO_ID) WITH PRIMARY´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
{>>> ANIMAL <<<}
comando := ´CREATE TABLE ANIMAL (´ +
´ANI_ID INT,´ +
´ANI_PROPRIETARIO INT ´ +
´CONSTRAINT IDX_PRO_ID ´ +
´REFERENCES PROPRIETARIO (PRO_ID),´ +
´ANI_NOME TEXT (50),´ +
´ANI_NASCIMENTO DATETIME)´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
end;
CONCLUÍNDO
Pronto, tudo muito fácil e simples. Agora rode o programa e faça os testes. Clique em navegar, selecione um diretório e digite o nome que sua base terá, então clique em CRIAR BASE e veja que o programa criará a base, logo após isto clique em CRIAR TABELAS então as tabelas serão criadas.
Agora ficou fácil criar sistemas desktops usando uma base mais robusta sem a necessidade de se ter o MS Access instalado em sua máquina. É possível criar e acessar todos os recursos de tabelas da base de dados MS Access usando os objetos ADOX, aqui foi mostrado como criar utilizando linguagem DDL, ou seja, escrevemos diretamente para que o comando fosse executado, mas é possível ter acesso à estes recursos diretamente com os componentes distribuídos por esta library, mas este assunto ficará para outra ocasião.
Se você tiver o MS Access instalado em sua máquina pode abri-lo e verificar nossa base de dados, caso contrário (como é o meu caso) crie uma simples aplicação com dois DBGrids para exibir os campos das tabelas, assim como inserir dados.
Resumo:
Aprenda como criar uma base de dados MS Access sem o MS Access. Cria a base, as tabelas, índices, enfim, tudo utilizando puro código delphi.
INTRODUÇÃO
Quando se cria um sistema para ambientes desktop sempre surge a dúvida de qual base de dados usar. Geralmente são usados bancos DBase, Paradox ou MS Access. Destes, a base mais robusta e confiável é, sem dúvida, MS Access. Mas existe um grande problema para se criar a base de dados MS Access, pois faz-se necessário o uso do ambiente MS Access.
Algumas pessoas não têm este aplicativo instalado em sua máquina e então torna-se inviável o uso desta base de dados, impedindo, desta forma, um crescimento tecnológico do programador que fica preso a ferramentas obsoletas.
Neste tutorial você irá aprender como criar uma base de dados MS Access a partir do nada, usando puro código Delphi e a Tecnologia ADO Extensions que é distribuída pela Microsoft.
ADOX, faz parte dos componentes ADO, quer dizer, é uma extensão do ADO. O ADOX fornece ferramentas de acesso a estrutura, segurança, definições de tabelas e muitos outros.
Como dito anteriormente, ADOX é uma library distribuída pela Microsoft, o arquivo chama-se ´Msadox.dll´, sua definição é ´Microsoft ADO Ext. 2.x for DDL and Security´ e é este arquivo que iremos importar para nossa IDE no Delphi.
INSTALANDO
Para usar este objetos no Delphi basta seguir os seguintes passos:
1- Selecione PROJECT > IMPORT TYPE LIBRARY
2- Procure pela descrição: ´Microsoft ADO Ext. 2.x for DDL and Security (Version 2.x)´
2- Em CLASS NAMES, altere o nome dos objetos acrescentando ADOX após a letra T, exemplo: TTable mude para TADOXTable, TColumm mude para TADOXColumn. Repita este procedimento para todos objetos nesta lista.
3- Em PALETTE PAGE selecione ou digite um novo nome para a paleta onde os componentes ficarão, exemplo: ADOX.
4- Pressione INSTALL, logo depois pressione Ok confirmando o início da instalação.
5- Pressione YES confirmando que você quer instalar os componentes.
6- Pressione Ok na tela que indica os objetos instalados.
7- Selecione FILE > CLOSE ALL e pressione YES para salvar este package criado.
O motivo da troca do nome dos objetos é muito óbvio, estes nomes de classe como Ttable já existem, então iria gerar conflitos na compilação, por isso bastou trocar o nome da classe.
Pronto, os objetos estão instalados, agora sempre que você utilizar estes objetos será inserido na clausula USES a Unit ADOX_TLB pois este é o nome da unit criada a partir da importação da DLL.
Agora, mãos à obra.
DEFININDO A BASE DE DADOS E OBJETOS A SEREM USADOS
Vamos criar uma base onde serão armazenados informaçõe sobre animais de estimação (para sair um pouco da rotina de CLIENTES/PRODUTOS/PEDIDOS).
Para esta base serão criadas as seguintes tabelas:
> PROPRIETARIO
> PRO_ID
> PRO_NOME
>ANIMAL
> ANI_ID
> ANI_PROPRIETARIO
> ANI_NOME
> ANI_NASCIMENTO
Onde um proprietario pode ter mais de um animal formando assim um relacionamento UM PARA MUITOS.
No Delphi, crie uma nova aplicação. Será criado um novo Form, a este insira os seguintes componentes:
> 3 TButtons
Para lançar os procedimentos de criação da base de dados e das tabelas.
Altere as seguintes propriedades para cada TButtons respectivamente:
Caption: Criar base
Name: btnBase
Caption: Criar tabelas
Name: btnTabelas
Caption: Navegar
Name: btnNavegar
> 1 TEdit
Para armazenar o path da base de dados a ser criada.
Altere as seguintes propriedades:
Name: edtPath
Text: (deixe em branco)
> 1 TSaveDialog
Para navegar no disco e informar o path da base de dados.
Altere as seguintes propriedades:
Filter: Base MS Access|*.mdb
Title: Salvar como...
DefaultExt: .mdb
> 1 TADOConnection
Para fazer a conexão com a base criada.
Altere as seguintes propriedades:
Login prompt: False
> 1 TADOCommand
Para fazer a ligação e criação das tabelas.
Altere as seguintes propriedades:
Connection: Selecione o ADOConnection1
> 1 TADOXCatalog
Para criar a base de dados.
CRIANDO A BASE DE DADOS
Agora vamos ao código. Clique duas vezes no objeto btnNavegar e digite:
procedure TForm1.btnNavegarClick(Sender: TObject);
begin
if SaveDialog1.Execute then
edtPath.Text := SaveDialog1.FileName;
end;
Com isso informamos o nome que a base terá.
Clique duas vezes no objeto btnBase e digite o seguinte procedimento:
procedure TForm1.btnBaseClick(Sender: TObject);
var
Base: String;
begin
if edtPath.Text = ´´ then
begin
ShowMessage(´Nome da base de dados não informada.´);
exit;
end;
Base := ´Provider=Microsoft.Jet.OLEDB.4.0´+
´;Data Source=´ + edtPath.Text +
´;Jet OLEDB:Engine Type=4´;
ADOXCatalog1.Create1(Base);
end;
Primeiro verificamos se há algum texto no objeto TEdit, em seguida atribuímos a string de conexão à variável BASE informando vários parâmetros, mas atente para a seguinte linha: ´...Engine Type=4...´, isto quer dizer que iremos criar uma base Access 97, para Access 2000 informe 5.
Em seguida é efetivamente criado a base de dados através do método Create1 do objeto ADOXCatalog, passando para este a string da BASE. Observe que o método é Create1 e não simplesmente Create, pois o método Create já existe e é da classe.
Pronto, criamos uma base de dados vazia, não existe nada nela, mas já é um arquivo comum ao MS Access e pode ser aberto normalmente.
CRIANDO TABELAS
Vamos começar a criar as tabelas, seus índices e integridade referencial. Para isso clique duas vezes no objeto btnTabelas e digite:
procedure TForm1.btnTabelasClick(Sender: TObject);
var
base, comando: string;
begin
{ definindo a base de dados }
base := ´Provider=Microsoft.Jet.OLEDB.4.0´ +
´;Data Source=´ + edtPath.Text +
´;Persist Security Info=False´;
ADOConnection1.ConnectionString := base;
{ Criando as tabelas... }
{>>> PROPRIETARIO <<<}
comando := ´CREATE TABLE PROPRIETARIO (´ +
´PRO_ID INT,´ +
´PRO_NOME TEXT(50))´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
{ ADICIONANDO INDICES }
comando := ´CREATE INDEX IDX_PRO_ID ´ +
´ON PROPRIETARIO (PRO_ID) WITH PRIMARY´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
{>>> ANIMAL <<<}
comando := ´CREATE TABLE ANIMAL (´ +
´ANI_ID INT,´ +
´ANI_PROPRIETARIO INT ´ +
´CONSTRAINT IDX_PRO_ID ´ +
´REFERENCES PROPRIETARIO (PRO_ID),´ +
´ANI_NOME TEXT (50),´ +
´ANI_NASCIMENTO DATETIME)´;
ADOCommand1.CommandText := comando;
ADOCommand1.Execute;
end;
CONCLUÍNDO
Pronto, tudo muito fácil e simples. Agora rode o programa e faça os testes. Clique em navegar, selecione um diretório e digite o nome que sua base terá, então clique em CRIAR BASE e veja que o programa criará a base, logo após isto clique em CRIAR TABELAS então as tabelas serão criadas.
Agora ficou fácil criar sistemas desktops usando uma base mais robusta sem a necessidade de se ter o MS Access instalado em sua máquina. É possível criar e acessar todos os recursos de tabelas da base de dados MS Access usando os objetos ADOX, aqui foi mostrado como criar utilizando linguagem DDL, ou seja, escrevemos diretamente para que o comando fosse executado, mas é possível ter acesso à estes recursos diretamente com os componentes distribuídos por esta library, mas este assunto ficará para outra ocasião.
Se você tiver o MS Access instalado em sua máquina pode abri-lo e verificar nossa base de dados, caso contrário (como é o meu caso) crie uma simples aplicação com dois DBGrids para exibir os campos das tabelas, assim como inserir dados.
Responder
Clique aqui para fazer login e interagir na Comunidade :)