Página 1 de 1

Exemplo programa vendas

Enviado: 14 Mar 2007 08:23
por UKclipper
Olá, pessoal!

Alguém aí teria o exemplo de uma tela de vendas com exibição dos itens do pedido tipo TBrowse ou DBEDIT()?

Valeu!

Enviado: 15 Mar 2007 13:42
por sygecom
Amiguinho......

Qual sua duvida ?? o problema esta na logica ??? se quiser posso colcoar varios exemplos aqui....mas me diga para que seguimento vc quer ??

Abraços

Enviado: 15 Mar 2007 16:28
por UKclipper
Amigo Sygecom,

Pra dizer a verdade eu desenvolvi um sistema em Clipper que tem uma tela de vendas na qual o usuário digita o número do pedido, a data, o nome do cliente, etc. Após serem digitados esses dados, o sistema abre em uma área da mesma tela um DBEDIT() contendo os itens do pedido, caso o pedido já tenha sido cadastrado.

O que acontece é que, no momento que os itens do pedido são trazidos de uma outra tabela usando "SET FILTER TO PEDIDO = nPEDIDO" o usuário tem que esperar de dois a 5 minutos para os itens serem carregados! Daí eu gostaria de ver como outras pessoas fariam uma tela de vendas para ver onde estou errando, porque, mesmo que o volume de dados seja grande, não poderia demorar tanto. Já vi sistemas como o SICADII (em clipper) da Star Soft que carregam com uma velocidade até que boa.

Se você puder me enviar algum exemplo desse tipo, aqui pelo Fórum mesmo, ou via e-mail. fico muito grato!

Valeu!

Enviado: 15 Mar 2007 16:44
por sygecom
Tche, dependendo dah sua quantidade de registro o SET FILTER nao e uma boa opçao.....eu uso o DBFCDX e uso O ORDSCOPE e tenho um bom desempenho inclusive em rede....de uma pesquisa no forum que vc vai achar varias alternativa.......e volto e lhe afirmar que se esta com lentidao e pq o SET FILTER esta trancando tudo....

Abraços

Enviado: 15 Mar 2007 17:25
por Clipper
Sem dúvida o SET FILTER é uma pedrada nos o...Eu nunca usei ele por causa da lentidão. Eu faço da forma como explico abaixo.

Eu crio um DBF para cada venda, quando ela é fechada envio os dados para um outro arquivo e excluo o arquivo.

Exemplo :

PEDIDO = 008461
ARQUIVO = PV008461.DBF

Dessa forma não preciso usar filtro nenhum.

Até logo.

Marcelo

Enviado: 16 Mar 2007 15:35
por ederxc
Amigos para tudo que é pesquisa no dbf costumno usar o DBSEEK()

talves vcs ñ usem o DBSEEK() por ter que ficar criando indice , mas na minha opnião ele funciona muito bem


****Meu amigo no seu caso eu faria assim :



function pesq()
use vendas

index on (CLIENT,30)+dtos(data)+str(PEDIDO) TO xpesq
use index xpesq

chave=(cCLIENT,30)+dtos(data)+str(nPEDIDO)
if dbseek(chave)
dbedit()
elseif
alert(´resgistro nao cadastrado´)
endif
return


seria uma coisa +/- assim !

Enviado: 19 Mar 2007 07:51
por UKclipper
Gente, vocês não vão acreditar!
Resolvi o problema mais ou menos assim:

// AQUI EM CIMA TEM A TABELA COM INDICE.

LOCATE FOR STR(PEDIDO) = STR(nPEDIDO)
IF FOUND()
DO WHILE STR(PEDIDO) = STR(nPEDIDO)
// AQUI FAÇO O QUE TENHO QUE FAZER.
ENDDO
ENDIF

// NO CASO DO DBEDIT DA TELA VENDAS

LOCATE FOR STR(PEDIDO) = STR(nPEDIDO)
IF FOUND()
DBEDIT()
ENDIF

AS DICAS DE VOCÊS FORAM BASTANTE ÚTEIS.

VALEU!

Enviado: 19 Mar 2007 07:59
por Maligno
UKclipper escreveu:Resolvi o problema mais ou menos assim:
LOCATE FOR STR(PEDIDO) = STR(nPEDIDO)
Apesar de ter resolvido seu problema, considere usar no futuro o recurso de montagem de escopo. Tanto SET FILTER quanto LOCATE fazem varredura registro a registro e em algumas situações isso impõe uma lentidão muito grande no sistema. Em arquivos pequenos isso não acontece. É exatamente aí que entra o recurso de ESCOPO. Através dele você pode "diminuir" o tamanho de um banco de dados, tornando o uso de um SET FILTER praticamente instantâneo. Pesquise no fórum sobre a LIB SIX, que contém esse recurso, além de muitos outros.

[]'s
Maligno
http://www.buzinello.com/prg