Fórum Conectar Banco de Dados ACESS e Data Module #263441

27/12/2004

0

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


Luisribeiro

Luisribeiro

Responder

Posts

27/12/2004

Bruno_fantin

Usa ADO com o provider do Jet...

E quanto ao datamodule é só criar um e colocar todas as adoquery dentro dele...


Responder

Gostei + 0

27/12/2004

Luisribeiro

Como eu posso usar o componente sem que precise configurar o ODBC?
Você poderia me orientar fazendo um favor?

Muito Grato,


Responder

Gostei + 0

27/12/2004

Luisribeiro

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


Responder

Gostei + 0

27/12/2004

Bruno_fantin

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)...


Responder

Gostei + 0

27/12/2004

Luisribeiro

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


Responder

Gostei + 0

27/12/2004

Bruno_fantin

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...


Responder

Gostei + 0

27/12/2004

Luisribeiro

Eu coloquei o banco de dados em uma pasta chamada ´dados´, como eu posso resolver isso?

abraços,
Luis


Responder

Gostei + 0

27/12/2004

Bruno_fantin

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...


Responder

Gostei + 0

27/12/2004

Luisribeiro

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,


Responder

Gostei + 0

27/12/2004

Luisribeiro

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,


Responder

Gostei + 0

28/12/2004

Bon Jovi

´DTModulo.tb_loja.FieldByName(´loja´).AsString´ dá erro

Qual erro??

DTModulo está instanciado?
tb_loja foi ativado antes?


Responder

Gostei + 0

28/12/2004

Luisribeiro

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar