Jump to content
Fórum Script Brasil
  • 0

Como Preparar Um Sistema Para Ser Utilizado Em Rede?


Guest Lívio Neiva
 Share

Question

Guest Lívio Neiva

Procedimentos a serem executados:

acionei a tela DM (Onde estar conecções com banco de dados(TADOConection, TADOTable..)) da mesma, e apaguei o conteúdo da propriedade ConnectionString do objeto Conexao (TADOConection).

Acrescente as próximas linhas de comando no programa principal (*.dpr), logo após a criação da tela DM do sistema:

(Eu Não sei onde acrecentar as linhas de comando q estão abaixo)

Dm.Conexao.Connected := False;

Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

ExtractFilePath(Application.ExeName)+

'Banco.mdb;Persist Security Info=False;';

Dm.Conexao.Connected := True;

Gostaria de saber onde acrescento as linhas de comando q estão acima.

Agradeço atenção;

Lívio Neiva

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Voce pode colocar o codigo no evento :

procedure TForm1.ADOConnection1Login(Sender: TObject; Username,
  Password: String);
begin
   Dm.Conexao.Connected := False;
   Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +
   ExtractFilePath(Application.ExeName)+
   'Banco.mdb;Persist Security Info=False;';
   Dm.Conexao.Connected := True;
end;

ou pode escolher outro local

Link to comment
Share on other sites

  • 0
Guest Livio Neiva
Voce pode colocar o codigo no evento :

procedure TForm1.ADOConnection1Login(Sender: TObject; Username,
  Password: String);
begin
   Dm.Conexao.Connected := False;
   Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +
   ExtractFilePath(Application.ExeName)+
   'Banco.mdb;Persist Security Info=False;';
   Dm.Conexao.Connected := True;
end;

ou pode escolher outro local

ok.. mais agora estar dando erro nessa linha de comando

Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

ExtractFilePath(Application.ExeName)+ ---> Application.ExeName

menssagem de erro;

[Error] UDM.pas(114): Undeclared identifier: 'Application'

[Error] UDM.pas(114): ')' expected but identifier 'ExeName' found

Agradeço atenção

Link to comment
Share on other sites

  • 0

O erro esta no seu proprio codigo

Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

correto : olhe o espaço deixado entre dois pontos e igual

Dm.Conexao.ConnectionString := 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

Link to comment
Share on other sites

  • 0
Guest Lívio Neiva
O erro esta no seu proprio codigo

Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

correto : olhe o espaço deixado entre dois pontos e igual

Dm.Conexao.ConnectionString := 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

mais estar junto!!!

dm.conexao.Connected := False;

Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souce='+

ExtractfilePath(Application.ExeName)+ ------------.>>>> local do erro

'Banco.mdb;Persist Security Info=False;';

Dm.Conexao.connected := true;

erro continua

Menssagem de erro;

[Error] UDM.pas(114): Undeclared identifier: 'Application'

[Error] UDM.pas(114): ')' expected but identifier 'ExeName' found

Link to comment
Share on other sites

  • 0
Guest Livio Neiva
O erro esta no seu proprio codigo

Dm.Conexao.ConnectionString : = 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

correto : olhe o espaço deixado entre dois pontos e igual

Dm.Conexao.ConnectionString := 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +

mais estar junto!!!

dm.conexao.Connected := False;

Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souce='+

ExtractfilePath(Application.ExeName)+ ------------.>>>> local do erro

'Banco.mdb;Persist Security Info=False;';

Dm.Conexao.connected := true;

erro continua

Menssagem de erro;

[Error] UDM.pas(114): Undeclared identifier: 'Application'

[Error] UDM.pas(114): ')' expected but identifier 'ExeName' found

--------------------------------------------------------------------------------------------

procedure TDM.ConexaoLogin(Sender: TObject; Username, Password: String);

begin

dm.conexao.Connected := False;

Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souce='+

ExtractfilePath(Application.ExeName)+

'Banco.mdb;Persist Security Info=False;';

Dm.Conexao.connected := true;

end;

Link to comment
Share on other sites

  • 0

Testei o seu codigo sem erros:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ADODB;

type
  TDM = class(TDataModule)
    Conexao: TADOConnection;
    procedure ConexaoLogin(Sender: TObject; Username, Password: String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DM: TDM;

implementation

{$R *.DFM}

procedure TDM.ConexaoLogin(Sender: TObject; Username, Password: String);
begin
   Dm.Conexao.Connected := False;
   Dm.Conexao.ConnectionString := 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +
   ExtractFilePath(Application.ExeName)+
   'Banco.mdb;Persist Security Info=False;';
   Dm.Conexao.Connected := True;
end;

end.

Nota: o componente ADO deve estar dentro do seu data module

Edited by Jhonas
Link to comment
Share on other sites

  • 0
erro continua

Menssagem de erro;

[Error] UDM.pas(114): Undeclared identifier: 'Application'

[Error] UDM.pas(114): ')' expected but identifier 'ExeName' found

Livio Neiva, o erro é porque em DataModules não é adicionado por padrão a unit Forms (onde Application está declarada) na cláusula uses. Apenas adicione ela.
Link to comment
Share on other sites

  • 0
Guest Lívio Neiva
Testei o seu codigo sem erros:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ADODB;

type
  TDM = class(TDataModule)
    Conexao: TADOConnection;
    procedure ConexaoLogin(Sender: TObject; Username, Password: String);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DM: TDM;

implementation

{$R *.DFM}

procedure TDM.ConexaoLogin(Sender: TObject; Username, Password: String);
begin
   Dm.Conexao.Connected := False;
   Dm.Conexao.ConnectionString := 'Provider =Microsoft.Jet.OLEDB.4.0;Data Source=' +
   ExtractFilePath(Application.ExeName)+
   'Banco.mdb;Persist Security Info=False;';
   Dm.Conexao.Connected := True;
end;

end.

Nota: o componente ADO deve estar dentro do seu data module

Sim o componente ADO estar dentro do data mdule

Aki estar a minha Unit!!!! Mas o erro continua.

unit UDM;

interface

uses

Dialogs, Graphics, Controls, Windows, Messages, -------> Se eu acrescentar Forms o sistema começa a compilar mais

SysUtils, Classes, DB, ADODB; logo-lgo da varios tipos de erro.

type

TDM = class(TDataModule)

Conexao: TADOConnection;

Tab_Clientes: TADOTable;

Tab_Fornecedores: TADOTable;

Tab_Categorias: TADOTable;

Tab_Produtos: TADOTable;

Tab_Funcionarios: TADOTable;

Tab_Vendas: TADOTable;

Tab_ItemVendas: TADOTable;

Tab_Usuarios: TADOTable;

Ds_Tab_Clientes: TDataSource;

DS_Tab_Fornecedores: TDataSource;

DS_Tab_Categorias: TDataSource;

DS_Tab_Produtos: TDataSource;

DS_Tab_Funcionarios: TDataSource;

DS_Tab_Vendas: TDataSource;

DS_Tab_ItemVendas: TDataSource;

DS_Tab_Usuarios: TDataSource;

Tab_ClientesCliCodigo: TAutoIncField;

Tab_ClientesCliNome: TWideStringField;

Tab_ClientesCliEnd: TWideStringField;

Tab_ClientesCliCep: TWideStringField;

Tab_ClientesCliCid: TWideStringField;

Tab_ClientesCliEst: TWideStringField;

Tab_ClientesCliNumFone: TWideStringField;

Tab_ClientesCliEmail: TWideStringField;

Tab_ClientesCliDoc1: TWideStringField;

Tab_ClientesCliDoc2: TWideStringField;

Tab_ClientesCliContato: TWideStringField;

Tab_FornecedoresForCodigo: TAutoIncField;

Tab_FornecedoresForRazao: TWideStringField;

Tab_FornecedoresForEnd: TWideStringField;

Tab_FornecedoresForCid: TWideStringField;

Tab_FornecedoresForEst: TWideStringField;

Tab_FornecedoresForCep: TWideStringField;

Tab_FornecedoresForCont: TWideStringField;

Tab_FornecedoresForNumFone: TWideStringField;

Tab_FornecedoresForHomPage: TWideStringField;

Tab_CategoriasCatCodigo: TAutoIncField;

Tab_CategoriasCatDesc: TWideStringField;

Tab_ProdutosProID: TAutoIncField;

Tab_ProdutosProdCategoria: TIntegerField;

Tab_ProdutosProdCodigo: TWideStringField;

Tab_ProdutosProdNome: TWideStringField;

Tab_ProdutosProdPrecoVenda: TBCDField;

Tab_ProdutosProdQtdeEst: TIntegerField;

Tab_ProdutosProdUnidade: TWideStringField;

Tab_ProdutosProdFornecedor: TIntegerField;

Tab_FuncionariosFunCodigo: TAutoIncField;

Tab_FuncionariosFunNome: TWideStringField;

Tab_FuncionariosFunEnd: TWideStringField;

Tab_FuncionariosFunCep: TWideStringField;

Tab_FuncionariosFunCid: TWideStringField;

Tab_FuncionariosFunEst: TWideStringField;

Tab_FuncionariosFuNumFone: TWideStringField;

Tab_FuncionariosFunDatAdm: TDateTimeField;

Tab_FuncionariosFunSalario: TBCDField;

Tab_VendasVendID: TAutoIncField;

Tab_VendasVendCliente: TIntegerField;

Tab_VendasVendDt_Venda: TDateTimeField;

Tab_VendasVendValorPrdutos: TBCDField;

Tab_VendasVendDesconto: TBCDField;

Tab_VendasVendAcrescimo: TBCDField;

Tab_VendasVendFrete: TBCDField;

Tab_VendasVendQrde: TIntegerField;

Tab_ItemVendasItVeID: TAutoIncField;

Tab_ItemVendasItVeVenda: TIntegerField;

Tab_ItemVendasItVeProduto: TIntegerField;

Tab_ItemVendasItVeValorUnitario: TBCDField;

Tab_ItemVendasItVeDescontoItem: TBCDField;

Tab_ItemVendasItVeQtde: TIntegerField;

Tab_UsuariosUsuCodigo: TAutoIncField;

Tab_UsuariosUsuNome: TWideStringField;

Tab_UsuariosUsusApelido: TWideStringField;

Tab_UsuariosUsuSenha: TWideStringField;

Tab_UsuariosUsuDepto: TWideStringField;

Tab_UsuariosUsuNivel: TIntegerField;

Tab_ItemVendasTotal: TCurrencyField;

Tab_ProdutosCategoria: TStringField;

procedure Tab_ItemVendasCalcFields(DataSet: TDataSet);

procedure ConexaoLogin(Sender: TObject; Username, Password: String);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DM: TDM;

implementation

uses UfunProGeral;

{$R *.dfm}

procedure TDM.Tab_ItemVendasCalcFields(DataSet: TDataSet);

begin

dm.Tab_ItemVendasTotal.Value:= dm.Tab_ItemVendasItveQtde.Value *

(dm.Tab_ItemVendasitVeValorUnitario.Value - dm.Tab_ItemVendasItveDescontoItem.Value);

end;

procedure TDM.ConexaoLogin(Sender: TObject; Username, Password: String);

begin

dm.conexao.Connected := False;

Dm.Conexao.ConnectionString := 'provider=Microsoft.jet.OLEDB.4.0;Data Souce='+

ExtractfilePath(Application.ExeName) + 'Banco.mdb;Persist Security Info=False;';

Dm.Conexao.connected := true;

end;

end.

Link to comment
Share on other sites

  • 0
Guest Lívio Neiva
erro continua

Menssagem de erro;

[Error] UDM.pas(114): Undeclared identifier: 'Application'

[Error] UDM.pas(114): ')' expected but identifier 'ExeName' found

Livio Neiva, o erro é porque em DataModules não é adicionado por padrão a unit Forms (onde Application está declarada) na cláusula uses. Apenas adicione ela.

eu já adicionei!!!

uses

Dialogs, Graphics, Controls, Windows, Messages, Forms,

SysUtils, Classes, DB, ADODB;

So q quando eu compilo aparece essa menssagem de erro!!!

Project sistema.exe raised exception class EOutofMemory with message 'Sem Memoria'. Process stopped.

Use Step or run to continue.

Depois tenho q fechar tudo, e abrir o projeto dinovo.

So q, se eu abrir todos os arquivos unit do projeto, o delphi fecha, eu tenho q abrir o o arquivo *.dpr(sistema.dpr) e o UDM.pas (data module), para q ele possa abrir.

e não sei mais o q fazer??

obrigado pela atenção

Link to comment
Share on other sites

  • 0

Olha Livio eu utilizo de uma outra forma, a principio parece ser mais complicado, mas funciona certinho nos meus sistemas.

Eu crio dois arquivos .txt (Acesso.txt e Caminho.txt).

No Acesso.txt eu salvo as informações de conexão com o meu banco de dados:

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Teste\Dados.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=123456;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
No arquivo Caminho.txt eu salvo informações do local do sistema e do banco:
C:\Teste\Dados.mdb
Deixo a propriedade ConnectionString do AdoConnection zerada como você está fazendo mesmo. Adiciono no form de login um OpenDialog e um label, neste label no caption dele eu deixo um sinal de ' (apóstrofo) pois eu preciso dele, para adicionar na conexão com o banco. Deixo o label visible = False. No meu form de LOGIN, no evento OnCreate eu adiciono os códigos para verificar se os arquivos existem e se caso sim leio o conteudo deles e faço todas as configurações necessárias para o sistema rodar...
procedure TFrmSenha.FormCreate(Sender: TObject);
var ArquivoAlias, ArquivoCaminho : TextFile;
    Mensagem, Caminho : String;
begin
  //Le arquivo txt
  AssignFile(ArquivoAlias,'C:\Teste\Acesso.txt');
  Reset(ArquivoAlias);
  Readln(ArquivoAlias,Mensagem);
  CloseFile(ArquivoAlias);
  Alias := Mensagem;
  //le txt caso banco não encontrado
  AssignFile(ArquivoCaminho,'C:\Teste\Caminho.txt');
  Reset(ArquivoCaminho);
  Readln(ArquivoCaminho,Caminho);
  CloseFile(ArquivoCaminho);
  CaminhoNovo := Caminho;
  if not FileExists(CaminhoNovo) then //Verifica se existe o arquivo
  begin
    ShowMessage('Banco de dados não encontrado!');
    OpenDialog.Execute;
    //alterar Dados do txt alias e do Connection String do AdoConnection
    AssignFile(ArquivoAlias,'C:\Teste\Acesso.txt');
    Rewrite(ArquivoAlias);
    CloseFile(ArquivoAlias);
    Mensagem := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+[b]OpenDialog.FileName[/b]+';Mode=Share Deny None;'+
           'Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=aslaleadmin;'+
           'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;'+
           'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'+
           'Jet OLEDB:Don'+[b]LblSinal.Caption[/b]+'t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
    AssignFile(ArquivoAlias,'C:\Teste\Acesso.txt');
    Append(ArquivoAlias);
    Write(ArquivoAlias, Mensagem);
    CloseFile(ArquivoAlias);
    Alias := Mensagem;
    //altera o caminho do banco no txt
    AssignFile(ArquivoCaminho,'C:\Teste\Caminho.txt');
    Rewrite(ArquivoCaminho);
    CloseFile(ArquivoCaminho);
    Caminho := OpenDialog.FileName;
    AssignFile(ArquivoCaminho,'C:\Teste\Caminho.txt');
    Append(ArquivoCaminho);
    Write(ArquivoCaminho, Caminho);
    CloseFile(ArquivoCaminho);
  end;
  DmDados.Conecta.ConnectionString := Alias;
  DmDados.Conecta.Connected := True;
  DmDados.Senhas.Open;
  DmDados.Senhas.Active := True;
end;

Como falei parece até complicado e sei que existem maneiras mais fáceis de fazer isso, mas foi a forma que encontrei e funciona...

Alexandre

Edited by Vivendo&Aprendendo
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...