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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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