dbseek ñ filtra !

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

dbseek ñ filtra !

Mensagem 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
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem 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)
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem 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.
"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}
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem 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 ????
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem 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.
"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}
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Então GVC !!! Teste concluido com exito .... e muito obrigado pela explicação !!!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Conte conosco, sempre que puder-mos ajudar.
"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}
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem 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 :?)
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Amigo rosinha !

Mensagem 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 :{
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem 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 : ? )
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

:)Pos
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Sr. rosinha

Mensagem 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]
Responder