alguma dica por favor

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

alguma dica por favor

Mensagem por pena »

Boa noite, eu tinha no meu sistema, um campo no cliente, onde dizia se o tipo de cliente era, "C"-Cliente "F'-Fornecedor "T"-Transporte e assim por diante, porem estou mudando a forma, pq assim, teria que cadastrar 3x caso o mesmo fosse cliente, fornecedor e transporte ao mesmo tempo, portanto na hora de gravar pensei em fazer + ou - assim.

Código: Selecionar todos

oClientes:Tipo          := if(Frm_Clientes.chCliente.Value,"C",' ')+if(Frm_Clientes.chFornecedor.Value,"F",' ')+if(Frm_Clientes.chTransporte.Value,"T",' ')
mas isto pensando bem acho que pode ocorrer falhas, precisava de algo mais dinamico, não sei bem, mas estava pensando em limpar sempre o oClientes:Tipo antes,seria uma solução, mas to bem confuso quanto a isso mas acho que funcionaria.
Alguem poderia trocar uma ideia.
:))
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

alguma dica por favor

Mensagem por JoséQuintas »

Fazia o mesmo, com códigos diferentes.

Depois unifiquei a codificação, seja qual for o tipo, não existe código repetido. Facilita DEMAIS.

Deixei clientes/fornecedores com tipo=1, e transportadoras com tipo=3

Com código único, é pegar o código na movimentação e pesquisar, sem se importar do que se trata.

Quanto ao tipo, talvez 1 ou 3 campos com sim ou não, em tela e arquivo.
"SNN" significando cliente=sim, fornecedor=não, transportadora=não
Ou mais prático, 3 campos.

Nota:
No meu caso são telas diferentes, uma pra cada tipo de cadastro.
Mesmo assim, o código é único pra todos.
O mesmo pra entrada/saída de estoque, contas a pagar/receber, fiscal entrada/saída, etc.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

alguma dica por favor

Mensagem por Eolo »

Uma forma é, usando DBF, ter campos separados para cada condição, os quais vão conter “X” ou “ “ (ou .T. e .F., o que seja):

(nome, cliente, funcionário, fornecedor)
NOME=”José”, CLI=”X”, FUNC=” “, FORN=”X”
NOME=”Maria”, CLI=”X”, FUNC=X” “, FORN=” ”
NOME=”João”, CLI=” ”, FUNC=”X“, FORN=” ”
etc.

É só criar um índice para cada campo, com a cláusula FOR:
1. index on nome tag geral...
2. index on nome tag cliente for cli=”X”...
3. index on nome tag funcionario for func=”X”…
4. index on nome tag fornecedor for forn=”X”…

Dependendo do SET ORDER, o browse vai mostrar:
1. todos os nomes
2. os clientes José e Maria
3. os funcionários João e Maria
4. só o fornecedor José
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

alguma dica por favor

Mensagem por asimoes »

Uma idéia seria criar um campo chamado tipo caracter com tamanho 3

Que poderia receber os 3 tipos : CFT ou CF ou C ou F ou T .. várias combinações depois seria testar o campo;

If tabela->Tipo $ "CF"
if tabela->Tipo $ "CFT"
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder