Página 1 de 1
dbseek ñ filtra !
Enviado: 24 Out 2006 08:25
por ederxc
pessoal é o seguinte estou criando um sistema de lançamento de notas fiscais mas neste lançamento tenho que indexar meus arquivos por numero de nota fiscal e data de emissão para ñ ocorrer erro na hr de cadastrar nosta com mesmo numero ja tentei das seguintes formas .. mas ñ consigo filtrar !
if dbseek(vforn).and.(vdatemi) // primeiro tentativa
if dbseek(vforn,vdatemi) //segunda tentativa
if dbseek(vforn)
vdatemi1=datemi
if vdatemi=vdatemi1 //terceira tentativa
obs: todos as variaveis estão indexadas !
caso alguem precise de mais alguns detalhe para poder me ajudar poste aqui .. VLW
Enviado: 24 Out 2006 08:51
por MARCELOG
Prá garantir a inexistência de duplicidade de números não conheço outra maneira de fazê-lo, que não em arquivo separado (dbf, txt, etc.).
Tem um tópico beleza no site do Anderson (
www.caclipperwebsite.com) a respeito de número único com auxílio de txt, explicando didaticamente os procedimentos a serem adotados.
Nesse fórum também tem muito material a respeito, utilize a busca no topo desta página (veja "número único", ou algo parecido).
A função dessek() não é utilizada para filtro e, do jeito que você a está utilizando não vai funcionar.
Se você usa índices cdx, veja a função ordscope(), talvez seja o que você está procurando.
Caso contrário, veja dbsetfilter(), também pode ajudar, mas é lento em rede.
Há outras saídas para filtro, inclusive arquivo temporário de dados e índices, array´s e tbrowse que podem resolver o seu problema.
Aqui nesse fórum, essa questão é debatida com frequência, dê uma pesquisada (digite "filtro" no buscador).
Contudo, se precisar de ajuda, tamos aí.
Detalhe mais a dúvida, tente ser objetivo, dando a dimensão do problema de forma suscinta.
MarceloG
(O conhecimento do homem pertence a humanidade - liga não, tô inspirado hoje)
Enviado: 24 Out 2006 09:59
por gvc
supondo que sua estrutura seja assim:
num_nf, C, 6
dt_emissao, D, 8
seu arquivo de indice deve ser criado assim:
index on num_nf + dtos(dt_emissao) to [arquivo de indice]
o campo número da nf deve ser caracter, senão vc terá que transformar para caracter.
e a pesquisa devera ser:
dbseek(var_num_nf + dtos(var_dat_emissao))
----------------------
supondo que sua estrutura seja assim:
num_nf, N, 6
dt_emissao, D, 8
seu arquivo de indice deve ser criado assim:
index on str(num_nf, 6) + dtos(dt_emissao) to [arquivo de indice]
e a pesquisa devera ser:
dbseek(str(var_num_nf, 6) + dtos(var_dat_emissao))
espero ter ajudado.
boa sorte.
Enviado: 24 Out 2006 10:25
por ederxc
Opa entendi ... esta tudo mais claro agora !! testarei e logo volto com o resultado e apenas uma pergunta ... Por que minhas variavel NF tem de ser caracter e ñ numerica

?
Enviado: 24 Out 2006 13:02
por gvc
Quando vc monta uma chave de indice que usa mais de um campo, vc deve transformar tudo para caracter.
Se forem dois campos numericos, a chave seria a soma dos dois número, o que não é o que queremos.
Assim, transformando seu número da NF para caracter e DTOS para transformar sua data em caracter no formato ANSI (AAAAMMDD) vc tem ordenado pelo número da NF e dentro disso, pela data.
Repare que se vc usar DTOC será devolvido uma string DD/MM/AA, o que será um erro na ordenação.
Enviado: 24 Out 2006 13:32
por ederxc
Então GVC !!! Teste concluido com exito .... e muito obrigado pela explicação !!!
Enviado: 24 Out 2006 15:54
por gvc
Conte conosco, sempre que puder-mos ajudar.
Enviado: 24 Out 2006 22:32
por rochinha
Amiguinho
Só pra completar verifique na sessão
código fonte uma função para Autonumeração:
Com ela não tem como acontecer numeração repetida.
https://pctoledo.org/forum/viewtopic.php?t=1750
@braços :?)
Amigo rosinha !
Enviado: 25 Out 2006 06:29
por ederxc
Gostaria eu de estar neste nivel , ams a varios comandos que ñ entendo naquela função .. eu chego la !
mas pelo o que eu entendi o Sr. esta me dizendo para criar uma variavel que conte altomatico a cada lançamento; alem do numero de nota fiscal para fazer a difernciação das notas fiscais :{
Enviado: 25 Out 2006 13:38
por rochinha
Amiguinho
Voce não vai anterar a função e sim usa-la para obter o resultado que é simples, veja:
IDCliente := PsqControle( "CLIENTES" )
Onde:
IDCliente é um campo no seu arquivo de CLIENTES que vc armazena o codigo do mesmo e por isto vc também passa o nome da tabela para a função pois ela irá criar uma variavel chamada CLIENTES e armazenar o codigo mais recente para IDCliente.
Outro exemplo:
NUM_NF := PsqControle( "NOTAS" )
Onde:
NUM_NF é um campo com o numero de seu nota fiscal mais recente e que esta em seu arquivo NOTAS.DBF.
Voce vê que não existe segredo e sim a facilidade e com isto voce não tera problemas em implementar ao seu código e até pode retirar o vinculo com data pois não existira de forma alguma o mesmo numero de nota em várias datas ou vice versa.
:)Pos
@braços : ? )
Enviado: 25 Out 2006 13:42
por ederxc
:)Pos
Sr. rosinha
Enviado: 25 Out 2006 15:54
por ederxc
Agora entendi melhor o que o Sr. quis dizer ... Claro que nunca havera mesmo numero de nf para mesmo fornecedor .... desta forma posso usar o arquivo codigo do meu *.dbf fornecedor [/img]