dbseek ñ filtra !
Moderador: Moderadores
dbseek ñ filtra !
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
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
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
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)
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)
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.
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.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
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.
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.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
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 :?)
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 :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Amigo rosinha !
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 :{
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 :{
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
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 : ? )
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 : ? )
Editado pela última vez por rochinha em 25 Out 2006 13:50, em um total de 1 vez.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Sr. rosinha
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]
