Página 1 de 1
Três empresas num sistema só !
Enviado: 28 Jul 2007 21:51
por Alessandr0sp
Pessoal, sou no vo na programação e me deparei com a seguinte situação: Estou fazendo um sistema para uma empresa a qual possui um escritório q administra outras duas filiais (total 3 empresas). O solicitado é q o sistema administre as tres empresas, e estou com uma dúvida em como proceder. Crio um BD único (sepacarando cada empresa por local através da inclusao de um campo "LOCAL") ou subdivido em diretórios contendo os mesmos DBF com os registros das respectivas empresas, no caso filial 01 ->> C:\sistema\emp01\"dbf's".
Enviado: 28 Jul 2007 21:56
por Maligno
Olá. Seja bem-vindo.
Particularmente, em sistemas multi-empresa, prefiro manter tudo bem separado, em diretórios separados, inclusive. Até porque, os dados de uma empresa podem se acumular em demasia. Isso nem é tanto problema, dependendo da natureza dos dados. Mas sem dúvida alguma, tudo fica bem melhor organizado. No cadastramento de cada empresa eu peço para o cliente escolher um nome (apelido) que eu utilizo para seleção e separação das empresas em diretórios. Nada se mistura, tudo fica rápido e mais fácil de manter.
Enviado: 28 Jul 2007 22:06
por Alessandr0sp
No caso da organização por diretórios, teria q deixar algums BD como cadastros de clientes e fornecedores q serviriam para todas as empresas numa pasta raiz e as informações únicas (de cadas empresa) nos respectivos BD's em sibdiretórios resferente a cada empresa. Valeu maligno !
Enviado: 28 Jul 2007 22:08
por sygecom
Bem Vindo ao Forum...
Tche, o que o Maligno disse é o mais correto na minha opnião...apenas completando....um sistema bem feito,bem programado...pode rodar tudo junto tambem..isso tudo vai depender de como vc vai programar... e como vc disse que é novo na programação...talvez seja uma boa vc dar uma estudada antes de como funciona sistemas monousuario, sistemas em rede e etc...para vc ter uma real noção de como vc vai ter que estruturar esse sistema que que esta desenvolvendo..
Qualquer coisa prende o grito...
Enviado: 28 Jul 2007 22:16
por Maligno
cadastros de clientes e fornecedores q serviriam para todas as empresas numa pasta raiz
Isso. Exatamente como eu faço. Esqueci de dizer isso. Claro, alguns cadastros são compartilhados a fim de evitar um possível retrabalho.
filial
Enviado: 29 Jul 2007 15:52
por dbsh
Eu particulamente prefiro manter todas as filiais numa unica pasta no mesmo DBF, separando pelo campo filial, criando indices temporarios com while para exibir os relatorios e filtrar os dados a ser alterado, dando a opcao ao cliente de selecionar uma ou todas as filiais nos relatorios, tendo sempre uma filial ATIVA por padrao, para que o cliente possa tanto incluir, alterar e vizualizar os dados sem ter que ficar definindo nova filial ATIVA.
Enviado: 29 Jul 2007 16:18
por Maligno
numa unica pasta no mesmo DBF, separando pelo campo filial, criando indices temporarios com while para exibir os relatorios e filtrar os dados a ser alterado
Se o cliente rodar 100 relatórios desses por dia, serão 100 índices temporários por dia? Se for isso, acho que dá muito mais trabalho. Desnecessário, a meu ver.
Enviado: 31 Jul 2007 15:30
por Alessandr0sp
Srs. no caso de separar as empresas através de diretórios, vcs acham melhor utilizar no comando "USE", a expressão q contenha o caminho para cada empresa, ou utilizar um comando q execute os arquivos dentro do diretório especificado (ex. chdir(emp001)) ?
Enviado: 31 Jul 2007 15:35
por Maligno
Eu sempre faço abertura explícita, indicando o caminho do arquivo. Nunca mudo diretório. Não acho prático.
Enviado: 31 Jul 2007 15:44
por sygecom
Ex abaixo:
No incio do sistema o usuario escolhe qual usar Filial ou Matriz....
Código: Selecionar todos
IF OPCAO==1
**************
PUBLIC DADOS:="001" //pasta 001
**************
ENDIF
IF OPCAO==2
**************
PUBLIC DADOS:="002" // pasta 002
**************
ENDIF
IF OPCAO==3
**************
PUBLIC DADOS:="003" // pasta 003
**************
ENDIF
Para usar os DBF e NTX:
Código: Selecionar todos
USE &DADOS\CLIENTE ALIAS CLIENTE SHARED
SET INDEX TO &DADOS\CLIENTE1,&DADOS\CLIENTE2
O resto é Normal...
Abraços
Leonardo Machado
Enviado: 31 Jul 2007 16:57
por gvc
set default to &dados
USE CLIENTE ALIAS CLIENTE SHARED
SET INDEX TO CLIENTE1, CLIENTE2
set default to
Enviado: 31 Jul 2007 17:21
por Pablo César
Curto e grosso, mas matou em poucas linhas. Também é válido.
Enviado: 01 Ago 2007 16:58
por Maligno
Só lembrando que, modificar um path apenas para abrir um arquivo de dados, além de ser totalmente desnecessário, é mais uma função sendo executada. Nada grave, claro. Mas o endereçamento explícito é sempre o mais indicado.
Enviado: 01 Ago 2007 20:48
por dbsh
/*
Se decidir usar em pastas, seria conveniente então criar uma funçao do tipo xFilial( nFilial ), para preparar o ambiente para trocar de filial quando for preciso, para poder interagir entre as filiais no caso do seu cliente querer ver os relatorio, baixar duplicatas, etc..., de todas as filiais como um todo
*/
Código: Selecionar todos
Function xFilial( nFilial )
LOCAL aDBF, ErroAnt, xx, Erro
//colocar aqui os DBF que irao ficar separado
aDBF := { "RECEBER", "APAGAR", "COMPRA", "VENDA" }
USE Filial NEW SHAR
LOCA FOR Filial = nFilial //pode usar seek
IF !Found()
Alert("Filial " + LTrim(Str(nFilial)) + " nao cadastrada")
RETU .F.
ENDIF
//pasta F_01 - filial 1
//verifica se os arquivo da filial selecionada joi criado
FOR xx = 1 TO Len( aDBF )
IF !File("F_" + StrZero(nFilial, 2) + "\" + aDBF[ xx ])
RETU .F.
ENDIF
NEXT
ErroAnt := ErroBlock( {|e| Break(e) } )
//abre os arquivos para uso
FOR xx = 1 TO Len( aDBF )
//usar o mesmo alias para nao ter que mudar nas funcoes ja existente
BEGIN SEQU
USE ("F_" + StrZero(nFilial, 2) + "\" + aDBF[ xx ]) ALIAS (aDBF[ xx ]) NEW SHAR
RECOVER USING Erro
Alert("Erro ao aAbrir Arquivo " + aDBF[ xx ] + " na filial " + LTRim(Str(nFilial)) )
END SEQU
NEXT
ErrorBlock ( ErroAnt )
RETU .T. //chegou aqui tudo OK