Conectar Banco de Dados ACESS e Data Module
Pessoal,
gostaria que vocês me ajudassem na minha seguinte dúvida.
Como eu faço para acessar um banco de dados ACESS sem que o cliente precise configurar nada de alias, etc.
Eu preciso que as tabelas fiquem no Data Module, daí no meu sistema eu sempre acesso as tabelas a partir do module.
por favor, ajude-me nisso....
abraços
gostaria que vocês me ajudassem na minha seguinte dúvida.
Como eu faço para acessar um banco de dados ACESS sem que o cliente precise configurar nada de alias, etc.
Eu preciso que as tabelas fiquem no Data Module, daí no meu sistema eu sempre acesso as tabelas a partir do module.
por favor, ajude-me nisso....
abraços
Luisribeiro
Curtidas 0
Respostas
Bruno_fantin
27/12/2004
Usa ADO com o provider do Jet...
E quanto ao datamodule é só criar um e colocar todas as adoquery dentro dele...
E quanto ao datamodule é só criar um e colocar todas as adoquery dentro dele...
GOSTEI 0
Luisribeiro
27/12/2004
Como eu posso usar o componente sem que precise configurar o ODBC?
Você poderia me orientar fazendo um favor?
Muito Grato,
Você poderia me orientar fazendo um favor?
Muito Grato,
GOSTEI 0
Luisribeiro
27/12/2004
Mas é um seguinte, eu queria que quando eu jogasse os arquivos do sistema em uma determinada pasta, o sistema já pegaria o caminho do banco de dados, tem como?
Aguardo uma ajuda por favor,.....
Luis
Aguardo uma ajuda por favor,.....
Luis
GOSTEI 0
Bruno_fantin
27/12/2004
Dica... Para não ter problema com a pasta do banco... Copia o banco na mesma pasta do executavel... Ai você pode mudar os dois de pasta sem nenhum problema... Isso só funciona para aplicação que não vai rodar em rede...
Para configurar o ADO:
* Coloca um ADOConnection no datamodule...
* Der um duplo click nele...
* Der um duplo click na opção do Jet...
* Escolha o caminho do banco e der ok... (Se você segiu a dica acima não precisa informar o caminho... Só precisa informar o banco)...
Para configurar o ADO:
* Coloca um ADOConnection no datamodule...
* Der um duplo click nele...
* Der um duplo click na opção do Jet...
* Escolha o caminho do banco e der ok... (Se você segiu a dica acima não precisa informar o caminho... Só precisa informar o banco)...
GOSTEI 0
Luisribeiro
27/12/2004
Mas vamos supor, ele pede p/ colocar o caminho do banco de dados, vamos supor que eu selecionei, ta no C: e depois eu crio um instalador e instalo o programa no D: o caminho ele pega automático?
Será que no código eu não devo colocar aquele código que pega o caminho?
Muito obrigado pela ajuda...
abraços,
Luis
Será que no código eu não devo colocar aquele código que pega o caminho?
Muito obrigado pela ajuda...
abraços,
Luis
GOSTEI 0
Bruno_fantin
27/12/2004
Se você colocar o banco na mesma pasta do exe não precisa fazer mais nada...
Se colocou em uma pasta diferente então vai ter que fazer via codigo sim...
Se colocou em uma pasta diferente então vai ter que fazer via codigo sim...
GOSTEI 0
Luisribeiro
27/12/2004
Eu coloquei o banco de dados em uma pasta chamada ´dados´, como eu posso resolver isso?
abraços,
Luis
abraços,
Luis
GOSTEI 0
Bruno_fantin
27/12/2004
Se a pasta dados for subpasta da pasta do exe então faz isso...
var Caminho: String;
Caminho := ExtractFilePath(Application.ExeName);
Caminho := Caminho + ´\Dados\Banco.mdb´;
Ai você tem que substituir essa variavel caminho dentro da connection string do ADOConnection...
var Caminho: String;
Caminho := ExtractFilePath(Application.ExeName);
Caminho := Caminho + ´\Dados\Banco.mdb´;
Ai você tem que substituir essa variavel caminho dentro da connection string do ADOConnection...
GOSTEI 0
Luisribeiro
27/12/2004
Bruno,
a respeito dos tópicos acima, ocorreu tudo perfeito.
Só que agora, me pintou outra dúvida que está me traumatizando, é o seguinte. Eu criei um Data Module e lá com o ADO Conection e Table.
Ou seja, minha tabela chama: tb_loja, daí quando eu estou em outro form e tento buscar um campo da tabela ´DTModulo.tb_loja.FieldByName(´loja´).AsString´ dá erro.
A Unit do Module está mencionada certinho no Formulário que eu estou tentando recuperar o campo.
Por favor, ajude-me.
Desculpe por encher seu saco...
Abraços,
a respeito dos tópicos acima, ocorreu tudo perfeito.
Só que agora, me pintou outra dúvida que está me traumatizando, é o seguinte. Eu criei um Data Module e lá com o ADO Conection e Table.
Ou seja, minha tabela chama: tb_loja, daí quando eu estou em outro form e tento buscar um campo da tabela ´DTModulo.tb_loja.FieldByName(´loja´).AsString´ dá erro.
A Unit do Module está mencionada certinho no Formulário que eu estou tentando recuperar o campo.
Por favor, ajude-me.
Desculpe por encher seu saco...
Abraços,
GOSTEI 0
Luisribeiro
27/12/2004
Para ser mais específico, eu não consigo recuperar um campo de uma tabela, tentei: DTModulo.tb_loja.ParamByName(´loja´).AsString;
Mas não funciona de jeito nenhum, você sabe o que pode estar acontecendo?
Abraços,
Mas não funciona de jeito nenhum, você sabe o que pode estar acontecendo?
Abraços,
GOSTEI 0
Bon Jovi
27/12/2004
´DTModulo.tb_loja.FieldByName(´loja´).AsString´ dá erro
Qual erro??
DTModulo está instanciado?
tb_loja foi ativado antes?
GOSTEI 0
Luisribeiro
27/12/2004
Dá erro nesta linha:
StatusBar1.Panels[2].Text:=´ Loja: ´+DTModulo.tb_loja.ParamByName(´loja´).AsString;
O cursor para onde está ´ParamByName(´loja´)´.
O Módulo está instanciado na Uses, veja meu código abaixo:
unit UPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, WinSkinData, ToolWin, ComCtrls, Menus, StdCtrls, Mask,
DBCtrls, DB, ADODB;
type
TFrmPrincipal = class(TForm)
MainMenu1: TMainMenu;
Cadastros1: TMenuItem;
ToolBar1: TToolBar;
SkinData1: TSkinData;
Timer1: TTimer;
StatusBar1: TStatusBar;
Cadastros2: TMenuItem;
Cliente1: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmPrincipal: TFrmPrincipal;
implementation
uses UModulo;
{$R *.dfm}
procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=´ ´+DateToStr(now);
StatusBar1.Panels[1].Text:=´ Logado às ´+TimeToStr(now);
StatusBar1.Panels[2].Text:=´ Loja: ´+DTModulo.tb_loja.ParamByName(´loja´).AsString;
end;
end.
Obrigado.
StatusBar1.Panels[2].Text:=´ Loja: ´+DTModulo.tb_loja.ParamByName(´loja´).AsString;
O cursor para onde está ´ParamByName(´loja´)´.
O Módulo está instanciado na Uses, veja meu código abaixo:
unit UPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, WinSkinData, ToolWin, ComCtrls, Menus, StdCtrls, Mask,
DBCtrls, DB, ADODB;
type
TFrmPrincipal = class(TForm)
MainMenu1: TMainMenu;
Cadastros1: TMenuItem;
ToolBar1: TToolBar;
SkinData1: TSkinData;
Timer1: TTimer;
StatusBar1: TStatusBar;
Cadastros2: TMenuItem;
Cliente1: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmPrincipal: TFrmPrincipal;
implementation
uses UModulo;
{$R *.dfm}
procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=´ ´+DateToStr(now);
StatusBar1.Panels[1].Text:=´ Logado às ´+TimeToStr(now);
StatusBar1.Panels[2].Text:=´ Loja: ´+DTModulo.tb_loja.ParamByName(´loja´).AsString;
end;
end.
Obrigado.
GOSTEI 0