Clipper On Line • Ver Tópico - Dbseek campo numérico

Dbseek campo numérico

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Dbseek campo numérico

Mensagempor leandrolinauer » 01 Jun 2012 17:21

Boa tarde a todos.
Estou com um probleminha primário, que talvez seja simples mas não encontrei a luz para ele.

//utilizo um replicador automatico de dados MATRIZ X FILIAL que fiz e nele na linha abaixo funciona perfeitamente quando as chaves primárias dos indices são em modo DATA, CARACTER, já se tratando de campo numério sem formatação não funciona, exemplo:
Campos:="CFOP" ,"N",05,3
//campo numero com 3 casas decimais
Indice "ARQUIVOIDX" indexado pelo campo "CFOP"
// da forma acima se eu abrir o banco de dados e pesquisar por exemplo na linha abaixo, da CERTO, ele encontra o registro.
WCfOp:=0
@ 13,14 Get WCfOp Pict "@R 9.999" Valid(CkCfOp(@wCfOp,"C",13,20,47))
Keyin()
If DbSeek(wCfOp)
   //achou
EndIf


agora na função abaixo não encontra:

(d_ALIAS)->(DbSetOrder(2)) //chave primaria
If !(d_ALIAS)->(DbSeek(xKey)) //erro xkey 1.202
//o registro existe no banco de dados a variavel xkey esta carregada com o valor por exemplo 1.202 e ao pesquisar ele não acha e entra e cria o registro novamente.
EndIf

// agora aqui um exemplo usando uma formatação do campo numérico:

Campos:={{"ORDEM" ,"N",10,0},;

indice "StrZero(ORDEM,10)"
aí a função abaixo da certo, localiza perfeitamente.

(d_ALIAS)->(DbSetOrder(2)) //chave primaria
If !(d_ALIAS)->(DbSeek(xKey)) //nao da erro ele acha o valor da xkey no registro = exemplo: "0000000091"

EndIf

// pergunta: o que pode estar ocorrendo, por acaso o campo numérico sem formatação ele não funciona legal?
sendo que resumidamente:

var:=1.202
DbSeek(var) // resultado FOUND()

(alias)->(DbSeek(var)) // resultado NOT FOUND()

Alguem se candidata a resolver este b.o.zinho.

Grato a todos pela colaboração.
:{
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 375
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Dbseek campo numérico

Mensagempor Imatech » 01 Jun 2012 18:49

Para esse caso: A recomendação é de que o campo do índice fosse CHAR( 4 )

Mas pode-se contornar ( + trabalho nas pesquisas: transformando os numericos em caracter )

CRIACAO DO INDICE ( APARENTEMENTE: CDX )
ORDCREATE( 'TABELA', 'CFOP______', 'STRZERO( TABELA->CFOP * 1000, 4)', { || STRZERO( TABELA->CFOP * 1000, 4) } )

(d_ALIAS)->(DbSetOrder(2)) //chave primaria
If !(d_ALIAS)->(DbSeek( STRZERO( xKey * 1000, 4 ) ) ) /* AGORA FUNCIONA */
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Dbseek campo numérico

Mensagempor leandrolinauer » 02 Jun 2012 18:26

Boa noite Jovemxxx.
Obrigado pela resposta, realmente como vc escreveu funciona, inclusive a mesma função funciona usando com strzero e da certinho, mas porque será que não funciona o dbseek com numerico simples.
Vou ver se consigo contornar, visto que a mudança do indice para strzero(cfop,5,3), me complicaria mudanças em varias partes do sistema, verei a mudança da escrita da programação para ver se contorna o problema, visto que da forma dbseek(var) funciona e (alias)->(dbseek(var)) não funciona, verei o que consigo fazer.

grato
Atenciosamente
Leandro
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 375
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro