Três empresas num sistema só !

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Alessandr0sp
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 28 Jul 2007 21:45
Localização: Dom Pedrito - RS

Três empresas num sistema só !

Mensagem 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".
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Alessandr0sp
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 28 Jul 2007 21:45
Localização: Dom Pedrito - RS

Mensagem 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 !
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

filial

Mensagem 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.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Alessandr0sp
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 28 Jul 2007 21:45
Localização: Dom Pedrito - RS

Mensagem 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)) ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eu sempre faço abertura explícita, indicando o caminho do arquivo. Nunca mudo diretório. Não acho prático.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

set default to &dados
USE CLIENTE ALIAS CLIENTE SHARED
SET INDEX TO CLIENTE1, CLIENTE2

set default to
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Curto e grosso, mas matou em poucas linhas. Também é válido.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Mensagem 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
Responder