Clipper On Line • Ver Tópico - Ajuda em Indice NTX

Ajuda em Indice NTX

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Ajuda em Indice NTX

Mensagempor a.lima.silva » 02 Jun 2021 20:12

Caros, não entendo nada de Clipper, por isso se eu falar algum absurdo, desculpem.

Preciso acessar uma tabela DBF com a estrutura abaixo :

Uso Delphi e o componente VKDBF (https://sourceforge.net/projects/vkdbf/) escrito por um Russo.

Consigo abrir a tabela normalmente e acessar qualquer operação, o problema é que as operações não são indexadas, de forma que outros aplicativos feitos em clipper não conseguem ver dados inseridos, a não ser que eu reindexe por um utilitário feito em clipper.

Consigo carregar alguns indices da tabela, mas alguns possuem expressões que não carregam, por exemplo XPREVR3.NTX > AjustaCod(cod_ref)+DTOS(dt_emissao)+tipo_lanc

Ocorre um erro informando que AJUSTACOD não é um field valido. Suponho que AjustaCod seja algum tipo de função.

Alguma luz por favor ?

Obrigado

Antonio Carlos

Name Type Length Prec Offset Extended Type
---------- ---- ------ ---- -------- ---------------
N_DOCUM C 10 0 1
HISTORICO C 25 0 11
COD_REF N 7 1 36
DT_EMISSAO D 8 0 43
DT_VENC D 8 0 51
VALOR N 15 2 59
N_LANC C 8 0 74
COD_CC C 7 0 82
SITUACAO C 2 0 89
LOCAL C 1 0 91
BCO_LOCAL C 3 0 92
TIPO_LANC C 2 0 95
COD_GER C 4 0 97
COD_CON C 4 0 101
SE_LOTE L 1 0 105
SE_DUPLIC L 1 0 106
NO_BANCO C 13 0 107
COD_VEND N 7 1 120
REC_TRAV L 1 0 127
SE_ENVIA C 1 0 128
JUROS N 13 2 129
DESCONTO N 13 2 142
a.lima.silva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 02 Jun 2021 19:56
Cidade/Estado: niteroi rj
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Ajuda em Indice NTX

Mensagempor JoséQuintas » 02 Jun 2021 20:31

Você está certo, é uma função, mas infelizmente não vai ter opção de atualizar o índice pelo Delphi.
Só se tiver os fontes do aplicativo em Clipper, e tentar usar alguma coisa alternativa.
Ou, num caminho mais longo, tentar substituir NTX, DBF, e até o próprio Clipper.

Possibilidades:

- Alterar pra Harbour
- Alterar pra DBF/CDX
- Tentar algo compatível com ADS Local (Advantage Database Server), ou até algum ODBC de Foxpro/Visual Foxpro.
- A vantagem do ADS seria poder usar comandos SQL encima dos DBFs

Como eu disse, um caminho mais longo, que depende de aprendizado, mas pelo menos poderia fazer gradativo.

Harbour é um compilador 32/64 bits, que é muito compatível com o Clipper, só testando mesmo pra saber se pode compilar direto os fontes, sem qualquer alteração, ou com poucas alterações.

ADS é pra usar uma base cliente/servidor PAGA, mas que tem opção de usar SEM servidor e GRÁTIS, podendo usar compatível com DBF/CDX e comandos SQL

DBFCDX é uma "versão mais nova" do DBFNTX, mais eficiente, e poderíamos dizer, que é compatível com FOXPRO/VISUAL FOXPRO.
É mais nova que DBFNTX, mas mesmo assim é de dezenas de anos atrás. A questão seria pra ter uma maior compatibilidade com ODBCs de outras linguagens de programação, como por exemplo, ODBC de FOXPRO ou ADS, permitindo atualização simultânea de tudo.

Seja qual for a opção, precisa trabalho encima dos fontes originais.

Ou isso, ou converter o aplicativo inteiro de uma vez pra Delphi.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ajuda em Indice NTX

Mensagempor a.lima.silva » 03 Jun 2021 13:43

Oi Jose Quintas, obrigado pelo retorno.

Então usando o componente VKDBFNTX, os índices que consigo abrir eles indexam normalmente e são vistos sem problemas pelos aplicativos feito em clipper ele trata os NTX com perfeição.

Acho que o programador que criou esse componente era um profundo conhecedor do clipper pois foi escrito do zero.

Não tenho os fontes desse sistema.

Tenho uma ideia do que seja a função, que seria converter o valor númerico de 1 ponto flutuante para string.

Quando você confirmou se tratar de uma função verifiquei que DTOS também é e é reconhecido.

Abri o código do componente e achei a função DTOS e várias outras
(CompareText(S, 'UPPER') = 0) or
(CompareText(S, 'LOWER') = 0) or
(CompareText(S, 'ANSIUPPER') = 0) or
(CompareText(S, 'ANSILOWER') = 0) or
(CompareText(S, 'SUBSTRING') = 0) or
(CompareText(S, 'SUBSTR') = 0) or
(CompareText(S, 'STUFF') = 0) or
(CompareText(S, 'STRTRAN') = 0) or
(CompareText(S, 'ALLTRIM') = 0) or
(CompareText(S, 'TRIM') = 0) or
(CompareText(S, 'TRIMLEFT') = 0) or
(CompareText(S, 'LTRIM') = 0) or
(CompareText(S, 'TRIMRIGHT') = 0) or
(CompareText(S, 'RTRIM') = 0) or
(CompareText(S, 'PADR') = 0) or
(CompareText(S, 'PADL') = 0) or
(CompareText(S, 'PADC') = 0) or
(CompareText(S, 'DTOS') = 0) or
(CompareText(S, 'DTTOS') = 0) or
(CompareText(S, 'STR') = 0) or
(CompareText(S, 'VAL') = 0) or
(CompareText(S, 'YEAR') = 0) or
(CompareText(S, 'MONTH') = 0) or
(CompareText(S, 'DAY') = 0) or
(CompareText(S, 'HOUR') = 0) or
(CompareText(S, 'MINUTE') = 0) or
(CompareText(S, 'SECOND') = 0) or
(CompareText(S, 'GETDATE') = 0) or
(CompareText(S, 'DATE') = 0) or
(CompareText(S, 'TIME') = 0) or
(CompareText(S, 'IF') = 0) or
(CompareText(S, 'IIF') = 0) or
(CompareText(S, 'LEFT') = 0) or
(CompareText(S, 'RIGHT') = 0) or
(CompareText(S, 'SPACE') = 0) or
(CompareText(S, 'STRZERO') = 0) or
(CompareText(S, 'DESCEND') = 0) or
(CompareText(S, 'SUM') = 0) or
(CompareText(S, 'MIN') = 0) or
(CompareText(S, 'MAX') = 0) or
(CompareText(S, 'AVG') = 0) or
(CompareText(S, 'COUNT') = 0);

Vou tentar escrever a funcão no componente e ver.

Está sendo feito um novo sistema em Delphi de tres camadas trafegando JSON.
a.lima.silva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 02 Jun 2021 19:56
Cidade/Estado: niteroi rj
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Ajuda em Indice NTX

Mensagempor JoséQuintas » 03 Jun 2021 15:54

O problema é descobrir o que faz AjustaCod().

De repente pode ser trocado por uma expressão que use essas funções padrão, e assim se torne compatível.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ajuda em Indice NTX

Mensagempor a.lima.silva » 03 Jun 2021 16:28

Caro José, resolvi a situação e posto aqui para outros que possam precisar.

Como falei, não tenho acesso ao Código Fonte do Aplicativo em Clipper.

Mas tenho acesso ao código fonte do componente VKDBF (https://sourceforge.net/projects/vkdbf/) escrito por Vladimir Karpov que devia entender muito de clipper.

Quando você me disse que AjustaCod(cod_ref) era uma função verifiquei que em outros indices que tinham DTOS() não havia ocorria em erro.

Vasculhando o código do componente descobri a função DTOS que transforma uma data para string.

Abri o arquivo de indice no notepadd++ e verifiquei o conteúdo vide imagem abaixo

Depois foi escrever a função abaixo.

No parser havia uma parte que identificava as funções

(CompareText(S, 'DTOS') = 0) or

Bastou criar essa chamada

(CompareText(S, 'AJUSTACOD') = 0) or

e dentro da parte de tratamento que basicamente era de estivesse null preencher com ' 0.0'

Consegui implementar a rotina de inserção e alteração na tabela, através do aplicativo Delphi, ela indexou normalmente e o erro DBFNTX/1210 que acontecia dentro do aplicativo clipper ao realizar buscas sumiu completamente.

Agradeço a ajuda.

function AjustaCod(value: Double): AnsiString;
const
lSize : integer = 7;
var
aux, numero, k : string;
lTamanho, I : integer;
begin
aux := FormatFloat('###,#0.0',value);
aux := ReplaceStr(aux,'.','');
numero := ReplaceStr(aux,',','.');
lTamanho := Length(numero);
case lTamanho = lSize of
True : Result := numero;
False : begin
k := EmptyStr;
for I := 1 to lSize - lTamanho do
k := k + ' ';
Result := k + numero;
end;
end;
end;
Anexos
indice.png
a.lima.silva
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 02 Jun 2021 19:56
Cidade/Estado: niteroi rj
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Ajuda em Indice NTX

Mensagempor microvolution » 18 Nov 2021 09:33

opa... bom dia A.LIMA.SILVA, seja bem vindo(a) ao fórum PCTOLEDO!
Estou no mesmo dilema que V.Sa.
Estou querendo apenas criar um app mobile para facilitar o meu cliente, onde os(as) vendedores(as) dessa loja, possam realizar as vendas, sem a intervenção de um computador, bastando apenas, o smartphone com o app instalado.
Acontece, que meu sistema está todo usando ainda, infelizmente, e, não pretendo mudar para algum SGDB SQL, DBFNTX.
Com isso, me indicaram que se fizer um servidor em 3 camadas usando o componente VKDBF, o delphi faria um CRUD normalmente como se fosse o próprio clipper/harbour.
Pergunto, você conseguiu desvendar esse "troço"?
o meu app, terá, dentre todas as funcionalidades, 3 principais:
- usar a câmera como um leitor de código de barras EAN13 (não é o QRCODE que o cliente usa);
- acessar as tabelas DBF/NTX e fazer um CRUD;
- acessar uma impressora da rede e imprimir.

Bom, pelo que percebi, temos algo em comum de interesse. Se quiser pra que ambos nos ajudemos, me chame aqui no PV do fórum ou me mande um email MICROVOLUTION@HOTMAIL.COM ou se sentir à vontade, pode me chamar no meu canal do telegram: https://t.me/microvolution e eu lhe passo o meu zap/telegram.
Sucesso!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Ajuda em Indice NTX

Mensagempor Itamar M. Lins Jr. » 18 Nov 2021 09:58

Olá!
Estou querendo apenas criar um app mobile para facilitar o meu cliente, onde os(as) vendedores(as) dessa loja, possam realizar as vendas, sem a intervenção de um computador, bastando apenas, o smartphone com o app instalado.

Isso vc faz até com CLIPPER ou BAT do DOS 6X.

Use CGI, desenha suas telas em HTML e use CGI(Harbour/Clipper) para gravar nos DBFs.
Estude GET e POST do HTML.
Vai bater cabeça querendo entender o BROWSE dos ITENS (pesquisa) uma coisa que vc já sabe como é. Mas não vai aprender fácil ai no seu Delphi...

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Ajuda em Indice NTX

Mensagempor vailton » 24 Dez 2021 08:43

Olá,

- usar a câmera como um leitor de código de barras EAN13 (não é o QRCODE que o cliente usa);


Um ponto importante a lembrar é que a câmera da maioria dos celulares apresenta uma certa lentidão para capturar os dados de um barcode ou qrcode. Muitas vezes não é tão eficiente quanto um leitor de mão ou similar. Vale a pena estudar isto para evitar maiores frutrações.
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Avatar de usuário

vailton
Colaborador

Colaborador
 
Mensagens: 378
Data de registro: 17 Nov 2005 18:08
Cidade/Estado: Brasil
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Google [Bot] e 2 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