tela de venda com browse e dados da venda aparecendo na tela
Moderador: Moderadores
tela de venda com browse e dados da venda aparecendo na tela
Boa tarde .
Estou tentado fazer uma rotina de venda com os dados da venda e os itens, um dbf pros dados da venda e outro pros itens.
Gostaria de montar uma tela que qdo entrasse numa venda ele ja me mostrasse um browse com os itens referente a auqela venda, se é uma venda que ainda não tem itens, mostrar o browse vazio.
Ao teclar F5 por exemplo alternar entre os dados da venda e o browse e vice versa
Obrigado
Clipper 5.2 E
dbfcdx
Blinker 7
Estou tentado fazer uma rotina de venda com os dados da venda e os itens, um dbf pros dados da venda e outro pros itens.
Gostaria de montar uma tela que qdo entrasse numa venda ele ja me mostrasse um browse com os itens referente a auqela venda, se é uma venda que ainda não tem itens, mostrar o browse vazio.
Ao teclar F5 por exemplo alternar entre os dados da venda e o browse e vice versa
Obrigado
Clipper 5.2 E
dbfcdx
Blinker 7
Boa tarde Grings.
Ja tinha visto aquele exmplo mas não é bem isso que preciso
La teclando TAB allterna entre dois browses o que eu quero e + ou - isso
Cliente
Endereco
Cidade__________________estado
etc
____________________________________________________________
item da venda 1 ---------------------------valor unit---------------valor total
item da venda 2 ---------------------------valor unit---------------valor total
item da venda 3---------------------------valor unit----------------valor total
____________________________________________________________
E qdo eu entrar na tela ele ja mostra a tela com os dados do cliente e
o browse com os itens.
Se a venda ainda não tiver itens mostrar o browse vazio
Se estiver iniciando uma venda naquele momento mostrar os @ says e o browse vazio
Grande abraço
Ja tinha visto aquele exmplo mas não é bem isso que preciso
La teclando TAB allterna entre dois browses o que eu quero e + ou - isso
Cliente
Endereco
Cidade__________________estado
etc
____________________________________________________________
item da venda 1 ---------------------------valor unit---------------valor total
item da venda 2 ---------------------------valor unit---------------valor total
item da venda 3---------------------------valor unit----------------valor total
____________________________________________________________
E qdo eu entrar na tela ele ja mostra a tela com os dados do cliente e
o browse com os itens.
Se a venda ainda não tiver itens mostrar o browse vazio
Se estiver iniciando uma venda naquele momento mostrar os @ says e o browse vazio
Grande abraço
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Voce tem um arquivo de controle de pedidos, né?
Tem um arquivo que contem os itens de cada pedido, né?
O arquivo de pedidos tem um campo que define o codigo do pedido, certo?
O arquivo de itens tem um campo identico para fazer o vinculo, certo?
Abra os dois arquivos
Selecione o arquivo de pedidos e coloque na tela os dados do cliente e do pedido, colocando numa variavel o codigo do pedido.
Selecione o arquivo de itens.
de um SET FILTER em itens usando como critica o campo que contem o codigo de pedido em itens que sejam iguais ao codigo do pedido na variavel que vc armazenou.
Acione o seu browse, que pode ser tBrowse ou dBedit e vera os dados dos itens do pedido em si.
Exemplo:
function MeuPedido( modo )
use controle new shared // arquivo de controle de numero de pedidos
use pedidos new shared
use itens new shared
sele pedido
if modo = "NOVO"
go bottom
skip
endif
cCliente := pedidos->CliNome
nPedido := pedidos->PedNumero
if modo = "NOVO"
sele controle
nPedido := controle->numero + 1
endif
@ 0,0 say "Cliente: "+cCliente
@ 1,0 say "Pedido: "+strzero(nPedido,5)
sele itens
set filter to itens->PedNumero = nPedido
go top
dbEdit( 5,0,79,24, "SuaFuncao" )
...
SuaFuncao - é a função que irá acrescentar, deletar ou modificar o registro em itens e salva-lo.
@braços :?)
Voce tem um arquivo de controle de pedidos, né?
Tem um arquivo que contem os itens de cada pedido, né?
O arquivo de pedidos tem um campo que define o codigo do pedido, certo?
O arquivo de itens tem um campo identico para fazer o vinculo, certo?
Abra os dois arquivos
Selecione o arquivo de pedidos e coloque na tela os dados do cliente e do pedido, colocando numa variavel o codigo do pedido.
Selecione o arquivo de itens.
de um SET FILTER em itens usando como critica o campo que contem o codigo de pedido em itens que sejam iguais ao codigo do pedido na variavel que vc armazenou.
Acione o seu browse, que pode ser tBrowse ou dBedit e vera os dados dos itens do pedido em si.
Exemplo:
function MeuPedido( modo )
use controle new shared // arquivo de controle de numero de pedidos
use pedidos new shared
use itens new shared
sele pedido
if modo = "NOVO"
go bottom
skip
endif
cCliente := pedidos->CliNome
nPedido := pedidos->PedNumero
if modo = "NOVO"
sele controle
nPedido := controle->numero + 1
endif
@ 0,0 say "Cliente: "+cCliente
@ 1,0 say "Pedido: "+strzero(nPedido,5)
sele itens
set filter to itens->PedNumero = nPedido
go top
dbEdit( 5,0,79,24, "SuaFuncao" )
...
SuaFuncao - é a função que irá acrescentar, deletar ou modificar o registro em itens e salva-lo.
@braços :?)
browse
eu não aconselho usar o set filter como o rochinha mostrou por q fica muito lento
crie um indice ao inves de usar o set filter
guarde o numero do pedido em uma variavel
e crie o indice da seguinte forma
index on campo to nome_indice for num_ped = variavel
go top
no mais eu faço igual o exemplo do rochinha
té +
crie um indice ao inves de usar o set filter
guarde o numero do pedido em uma variavel
e crie o indice da seguinte forma
index on campo to nome_indice for num_ped = variavel
go top
no mais eu faço igual o exemplo do rochinha
té +
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
A ideia do nosso colega de se usar 2 dbf´s, um para o cabeçalho do pedido, outro para os itens, relacionando-os, é acertada, uso isso em meu sistema e garanto que funciona, (com sub-indice) como disse nosso amigo Hauch. Porem toda alteração que vc fizer depois de sub-indexar, não estara presente no indice principal ! Cuidado
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Caros, eu jah testei todas as duas opções mas como eu trabalho com dbf e indice aberto a opção d indice temporário n deu muito certo, entaum fiz o seguinte:
Quando o vendedor vai inciar o pedido ele pega o a de itens e cria um arq. temporário no proprio hd do terminal, ou seja, um arq. de itens temporário quando o vendedor incluir o item ele na verdade tah incluindo no arq. temporário, pq c caso ele abandonar a venda simplesmente eu fechou o arq. temp. c caso ele fechar eu apenas gravo o temporário no arq. de itens verdadeiro; entaum para eu mostrar este arq de item temporário eu visualizo ele a cada inclusão de item e volto pra rotina de codigo do produto. Acho q me fiz entender certo?
Marcos Roberto
Quando o vendedor vai inciar o pedido ele pega o a de itens e cria um arq. temporário no proprio hd do terminal, ou seja, um arq. de itens temporário quando o vendedor incluir o item ele na verdade tah incluindo no arq. temporário, pq c caso ele abandonar a venda simplesmente eu fechou o arq. temp. c caso ele fechar eu apenas gravo o temporário no arq. de itens verdadeiro; entaum para eu mostrar este arq de item temporário eu visualizo ele a cada inclusão de item e volto pra rotina de codigo do produto. Acho q me fiz entender certo?
Marcos Roberto
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
O exemplo passado foi desenhado de forma didática levando-se em consideração que o usuário possa estar começando a usar o Clipper e qual seria o arroz-com-feijão.
A explicação também não levou em consideração o tipo de arquivo de indice utilizado pelo usuário, pois existem várias formas de filtragems.
Eu mesmo utilizei por anos a SUBNTX, para indices .NTX, milhões de vezes mais rápida do que usar INDEX ON...CONDICAO.
No caso de usar .CDX existe na versão 5.3 do Clipper as funções SetScope() que também são muito eficazes nas filtragens com a diferença de não criar e nem usar arquivos extras.
Portanto para fazer a filtragem do itens de um pedido é necessários ter um indice com chave para o compo do codigo do pedido e usar o filtro por escopo.
@ 1,0 say "Pedido: "+strzero(nPedido,5)
sele itens
SetScope(0,nPedido)
SetScope(1,nPedido)
go top
dbEdit( 5,0,79,24, "SuaFuncao" )
...
Deve-se levar em consideração a forma em que foi utilizada a chave de indexação, se indexou um campo numero de forma direta use o escopo de forma direta ou se indexou usando funções use funcões `também no escopo:
index on dtos(data) to ...
...
SetScope(0,dtos(Variavel))
SetScope(1,dtos(Variavel))
index on strzero(pedido,5) to ...
...
SetScope(0,strzero(variavel,5))
SetScope(1,strzero(variavel,5))
@braços :?)
O exemplo passado foi desenhado de forma didática levando-se em consideração que o usuário possa estar começando a usar o Clipper e qual seria o arroz-com-feijão.
A explicação também não levou em consideração o tipo de arquivo de indice utilizado pelo usuário, pois existem várias formas de filtragems.
Eu mesmo utilizei por anos a SUBNTX, para indices .NTX, milhões de vezes mais rápida do que usar INDEX ON...CONDICAO.
No caso de usar .CDX existe na versão 5.3 do Clipper as funções SetScope() que também são muito eficazes nas filtragens com a diferença de não criar e nem usar arquivos extras.
Portanto para fazer a filtragem do itens de um pedido é necessários ter um indice com chave para o compo do codigo do pedido e usar o filtro por escopo.
@ 1,0 say "Pedido: "+strzero(nPedido,5)
sele itens
SetScope(0,nPedido)
SetScope(1,nPedido)
go top
dbEdit( 5,0,79,24, "SuaFuncao" )
...
Deve-se levar em consideração a forma em que foi utilizada a chave de indexação, se indexou um campo numero de forma direta use o escopo de forma direta ou se indexou usando funções use funcões `também no escopo:
index on dtos(data) to ...
...
SetScope(0,dtos(Variavel))
SetScope(1,dtos(Variavel))
index on strzero(pedido,5) to ...
...
SetScope(0,strzero(variavel,5))
SetScope(1,strzero(variavel,5))
@braços :?)
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP

