Ir para conteúdo
Fórum Script Brasil
  • 0

Como Preparar Um Sistema Para Ser Utilizado Em Rede?


Guest Lívio Neiva

Pergunta

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 para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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

Editado por Jhonas
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...