Clipper On Line • Ver Tópico - Meu modo de trabalho

Meu modo de trabalho

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Meu modo de trabalho

Mensagempor microvolution » 13 Ago 2016 18:52

prezado professor boa noite!
não entendi o complemento do seu post, onde vc diz: "tchau" várias vezes :%
o que significa as expressões no seu comentário?
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: 1007
Data de registro: 02 Set 2011 22:17
Curtiu: 58 vezes
Mens.Curtidas: 10 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 13 Ago 2016 18:56

É que começa o rumo pra acabar com o uso daquilo.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor microvolution » 14 Ago 2016 11:05

continuei sem entender "nadica de nada" :'(
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: 1007
Data de registro: 02 Set 2011 22:17
Curtiu: 58 vezes
Mens.Curtidas: 10 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 14 Ago 2016 22:50

Pra mim eu tinha respondido algo mais aqui, mas não apareceu.
Mas vamos lá:

Não lembro aonde instalei ou não MySQL, por isso o aplicativo tem muitos IFs.
Cada arquivo pode ser DBF ou tabela no MySQL ou hbnetio.
E alguns arquivos são no meu servidor MySQL, remoto para o cliente.

É essa salada que vai ter fim, dos IFs.
Comecei o rumo a trabalhar somente com MySQL no cliente, sem MySQL remoto, sem DBF e sem hbnetio.
Os DBFs vão começar a "sumir".
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 16 Ago 2016 02:54

As alterações pra isso (parciais dos fontes):

   SayScroll( "Verificando atualizações" )
   SAllMySql()
   SAllDbf()
   ConvGeral()


primeira etapa, criar/garantir bases mysql:

FUNCTION SAllMySql()

   LOCAL cnMySql := ADOClass():New( AppcnMySqlLocal() )

   IF AppcnMySqlLocal() == NIL
      RETURN NIL
   ENDIF
   SayScroll( "Verificando tabelas MySql" )
   // JPREGUSO antes de todos
   cnMySql:ExecuteCmd( JPREGUSOCreateMySql() ) // primeiro ref log
   cnMySql:ExecuteCmd( JPCONFICreateMySql() )  // segundo  ref configuração
   cnMySql:ExecuteCmd( JPBARRACreateMySql() )


segunda etapa, criar/garantir bases DBF, incluindo conversões/atualização de estruturas:

FUNCTION SAllDbf()

   IF AppDatabase() != DATABASE_DBF
      RETURN NIL
   ENDIF
   SayScroll( "Verificando DBFs" )
   // JPREGUSO antes de todos
   JPREGUSOCreateDbf()
   JPCONFICreateDbf()


terceira etapa, conversões adicionais, que podem ser DBF ou MySQL.

FUNCTION Conv2016()

   SayScroll()
   SayScroll( "Verificando atualizações 2016" )

   IF AppcnMySqlLocal() == NIL
      JPREGUSOCreateDbf()
      JPBARRACreateDbf()
      JPCOTACACreateDbf()
      JPDECRETCreateDbf()
      JPIBPTCreateDbf()
      JPLICMOVCreateDbf()
      JPORDBARCreateDbf()
      JPORDSERCreateDbf()
      JPPROMIXCreateDbf()
      JPVVDEMCreateDbf()
      JPVVFINCreateDbf()
   ELSE
      IF File( "JPREGUSO.DBF" )
         CopyDbfToMySql( "JPREGUSO", .T. )
         fErase( "JPREGUSO.DBF" )
      ENDIF
      IF File( "JPBARRA.DBF" )
         JPBARRACreateDbf()
         CopyDbfToMySql( "JPBARRA", .T. )
         fErase( "JPBARRA.DBF" )
      ENDIF


Simplificando, a cada nova versão, os DBFs vão sumindo e virando MySQL.
Isso vai acontecer quando o cliente atualizar, seja quando for.

Essa parte de atualizar automático não é novidade, uso há muito tempo.
A parte nova é mesmo eliminar de vez alguns DBFs.

Instalou MySQL, criou base de dados, configurou usuário/senha, o aplicativo faz o resto.

Nenhum cliente usa todos os módulos do aplicativo, inclusive alguns só eu mesmo, ou meu servidor.
Então, esses módulos continuam sendo os que estão deixando de ter opção em DBF.

E pra não amontoar muita conversão antiga, o que faço de vez em quando, é guardar o EXE de determinada versão antes de remover as conversões.
Tenho jpa2002.exe, jpa2004.exe, jpa2010.exe, jpa2013.exe, e jpa2015.exe
Se alguém tiver uma versão do aplicativo de 10 anos atrás, é ir executando uma versão dessas de cada vez, até chegar na atual.
Nem sei se alguém ainda tem alguma versão tão antiga, mas não custa nada deixar os EXEs guardados.
Vai automático de Clipper até Harbour + MySQL, só trocando versão.

O ano do EXE é ano que fiz a cópia, não tem nada a ver com quais conversões estão contidas no EXE.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 03 Set 2016 19:04

A evolução do meu uso de comandos SQL.

Antes lembrar que pra inclusão ou alteração, é assim, e quase sempre é com muito mais campos:

INSERT INTO CLIENTES ( CODIGO, NOME, ENDERECO ) VALUES ( 1, "JUCA", "RUA CHICO BENTO" )
UPDATE CLIENTES SET NOME="JUCA", ENDERECO="RUA CHICO BENTO" WHERE CODIGO=1


No início, e quanto mais campos pior:

[INSERT INTO CLIENTES ( CODIGO, NOME, ENDERECO ) VALUES ( ] + Ltrim( Str( nCodigo ) ) + [, "] + cNome + [", "] + cEndereco + ["]
[UPDATE CLIENTES SET NOME="] + cNome + [", ENDERECO="] + cEndereco + [" WHERE CODIGO=] + Ltrim( Str( nCodigo ) )


Com funções de conversão, melhorou, evita alguns erros:

"INSERT INTO CLIENTES ( CODIGO, NOME, ENDERECO ) VALUES ( " + NumberSql( nCodigo ) + ", " + StringSql( cNome ) + ", " + StringSql( cEndereco )
"UPDATE CLIENTES SET NOME=" + StringSql( Nome ) + ", ENDERECO=" + StringSql( cEndereco ) + " WHERE CODIGO=" + NumberSql( nCodigo )


Agora com uma classe, dá pra "enxergar" direito:

:QueryCreate()
:QueryAdd( "CODIGO", nCodigo )
:QueryAdd( "NOME", cNome )
:QueryAdd( "ENDERECO", cEndereco )
:QueryExecuteInsert( "CLIENTES" )

:QueryCreate()
:QueryAdd( "NOME", cNome )
:QueryAdd( "ENDERECO", cEndereco )
:QueryExecuteUpdate( "CLIENTES", "CODIGO=" + NumberSql( nCodigo ) )


Apenas estou procurando encontrar a melhor forma de evitar erros de digitação, ou de facilitar entender o fonte.
Nos primeiros, quando tem muitos campos, é complicado enxergar se a ordem está correta, ou quais os campos estão sendo atualizados e com quais valores.
Agora ficou bem visível isso.
Quase ficou igual o replace, que usa campo e valor.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 08 Set 2016 15:22

Não sei se foi pra melhor, mas organizei um pouco diferente:

#include "jpa.ch"

FUNCTION ConverteGeral()

   SayScroll()
   SayScroll( "Verificando se há ajustes adicionais" )
   DelTempFiles()
   IF AppDatabase() != DATABASE_DBF
      RETURN NIL
   ENDIF
   ConverteCriaMySql()
   ConverteCriaDbf()
   Converte20160101() // arquivos opcionais dbf/mysql
   IF AppVersaoDbfAnt() < 20160829; Converte20160829();   ENDIF // bancario renomeado
   IF AppVersaoDbfAnt() < 20160829; Converte20160830();   ENDIF // nome cidades mogi mirim e embu das artes
   IF AppVersaoDbfAnt() < 20160829; Converte20160831();   ENDIF // antigos imgcopy
   IF AppVersaoDbfAnt() < 20160829; Converte20160901();   ENDIF // aumento de campo em jpreguso
   IF AppVersaoDbfAnt() < 20160905; Converte20160905();   ENDIF // JPEMISSOR eliminado
   IF AppVersaoDbfAnt() < 20160907; Converte20160907();   ENDIF // jpnfbase
   IF AppVersaoDbfAnt() < 20160908; Converte20160908();   ENDIF // jpedicfg
   IF AppVersaoDbfAnt() < 20130601; RemoveSenhasDesativadas();     ENDIF
   IF File( "rastrea.dbf" ) ;  fErase( "rastrea.dbf" ) ;  ENDIF
   IF File( "rastrea.cdx" ) ;  fErase( "rastrea.cdx" ) ;  ENDIF
   IF File( "jplicmov.dbf" ) ; fErase( "jplicmov.dbf" ) ; ENDIF
   IF File( "jplicmov.cdx" ) ; fErase( "jplicmov.cdx" ) ; ENDIF

   RETURN NIL


1 - Se for acesso via hbnetio, não tem direto a fazer atualização, mudança de estruturas, etc., entra direto no aplicativo.
2 - Cria as estruturas de MySQL, se precisar
3 - Cria/Atualiza as estruturas de DBF, se precisar
4 - Faz outras atualizações nas bases de dados

A última atualização foi esta:

FUNCTION Converte20160908()

   LOCAL lEof, cnMySql := AdoClass():New( AppcnMySqlLocal() )

   IF File( "jpedicfg.cdx" )
      fErase( "jpedicfg.cdx" )
   ENDIF
   IF AppcnMySqlLocal() != NIL
      cnMySql:ExecuteCmd( "ALTER TABLE JPEDICFG MODIFY EDDESEDI VARCHAR(50) NOT NULL DEFAULT ''" )
   ENDIF
   IF File( "jpedicfg.dbf" )
      SayScroll( "Somente em MySQL - JPEDICFG" )
      JPEDICFGCreateDbf()
      USE jpedicfg
      lEof := ( LastRec() < 5 )
      USE
      IF ! lEof
         CopyDbfToMySql( "JPEDICFG", .T. )
      ENDIF
      fErase( "jpedicfg.dbf" )
   ENDIF

   RETURN NIL

STATIC FUNCTION JPEDICFGCreateDbf()

   LOCAL mStruOk

   SayScroll( "JPEDICFG, verificando atualizações" )
   mStruOk := { ;
      { "EDNUMLAN",  "C", 6 }, ;
      { "EDTIPO",    "C", 6 }, ;
      { "EDCODJPA",  "C", 6 }, ;
      { "EDCODEDI1", "C", 20 }, ;
      { "EDCODEDI2", "C", 20 }, ;
      { "EDDESEDI",  "C", 30 }, ;
      { "EDINFINC",  "C", 80 }, ;
      { "EDINFALT",  "C", 80 } }
   IF ! ValidaStru( "JPEDICFG", mStruOk )
      MsgStop( "JPEDICFG não disponível!" )
      QUIT
   ENDIF

   RETURN NIL


Se tem MySQL, aumenta o campo ref. descrição.
Se tem conteúdo acima de 5 registros nesse arquivo de conversão JPEDICFG, transfere pra MySQL.
A partir desta versão, esse DBF não existe mais.
Quem não usou até agora, só usa se instalar MySQL.

Assim que instalar essa versão em todos os clientes, vou poder apagar a conversão.
O único lado ruim dessas coisas, de remover conversão, é que se algum dia precisar de um backup antigo, pode não vai funcionar mais.
Mas não sei em qual situação isso seria necessário.

Em breve vão acabar os "arquivinhos" de uso exclusivo.
Vai precisar de outro esquema de atualização pros demais.
Talvez eu acabe usando um simultâneo, gravando DBF + MySQL ao mesmo tempo.

A minha intenção é o cliente e eu podermos continuar trocando o programa todo dia e toda hora, sempre que precisar.
Então não dá pra esperar alterar 300 programas que mexem com clientes, por exemplo, pra poder trocar versão.
Acho que a gravação simultânea vai ser a melhor opção.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 09 Set 2016 17:22

Troquei no cliente ontem à noite.

Hoje foi só um erro que precisou ser corrigido: esqueci de colocar a string entre aspas no comando MySql.

Ontem uma determinada tarefa usava DBF, e hoje usa MySQL.

Ainda bem, tem sido assim minhas mudanças de DBF pra MySQL.
Se tiver algum erro, é um erro básico, de rápida solução.

Dados pra rastreamento, só esse cliente usa.
Configuração pra importação de XML, vários clientes usam, mas todos eles tem servidor MySQL instalado.
Com isso, essas opções continuam existindo no aplicativo, mas só estarão disponíveis se existir servidor MySQL.
São bases relativamente pequenas, mas de uso contínuo.

Continuo com uma única versão do aplicativo.
Continuo com bases de dados em DBF e em MySQL, o que tem em DBF não tem em MySQL.
Mas alguns arquivos que eu tinha alterado antes pra opcionais, continuam assim, podem ser DBF ou MySQL.
Como exemplo, o que registra tudo que acontece no aplicativo. Está em MySQL aonde tem MySQL, e em DBF aonde não tem MySQL.

É bom trabalhar assim, fazer tranquilo, sem pressão.
O lado ruim é que não estou cobrando isso de ninguém, os clientes vão passar de DBF pra MySQL sem custo nenhum.
Sempre esqueço dessa parte.....
.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor rosalvo rosa » 12 Set 2016 17:41

Boa tarde José Quintas.

Poderia disponibilizar o arquivo Jpa.ch ?

Trabalho com HB30 e não tenho na minha pasta Include.

Desde já agradeço

Abraço

Rosalvo
Avatar de usuário

rosalvo rosa
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 148
Data de registro: 10 Jan 2006 18:21
Cidade/Estado: Curitiba - PR
Curtiu: 1 vez
Mens.Curtidas: 1 vez

Meu modo de trabalho

Mensagempor JoséQuintas » 12 Set 2016 18:18

Se isso se refere à classe Sefaz, deixei por esquecimento.
É que uso nos fontes do meu aplicativo, mesmo nem todos precisando do que tem lá dentro.

A título de curiosidade, no momento tem isto:

/*
PROGRAMA...: JPA.CH - HEADER DA JPA
CRIACAO....: 2010.03.22.0900 - JOSE
*/

#xtranslate MemoWrit( ... )  => ChangeMemoWritTohb_MemoWrit( ... )
#xtranslate TempFile( ... )  => ChangeTempFileToMyTempFile( ... )
#xtranslate Descend( ... ] ) => ChangeDescendToMyDescend( ... )
#xtranslate Xtoc( ... )      => ChangeXtocToToString( ... )

#ifndef AD_STATE_CLOSED
   #define AD_STATE_CLOSED  0
#endif
#define DATABASE_DBF      1
#define DATABASE_HBNETIO  2
#define MYSQL_MAX_CMDINSERT   500000
#define MYSQL_MAX_RECBACKUP   25000

#define DOW_DOMINGO   1
#define DOW_SEGUNDA   2
#define DOW_TERCA     3
#define DOW_QUARTA    4
#define DOW_QUINTA    5
#define DOW_SEXTA     6
#define DOW_SABADO    7

#define AUX_BANCO   "BANCO." // bancos
#define AUX_CADCTL  "CADCTL" // Contábil para Cadastro
#define AUX_CARCOR  "CARCOR" // códigos de carta de correção
#define AUX_CCUSTO  "CCUSTO" // centros de custo
#define AUX_CFOP    "CFOP.." // CFOP
#define AUX_CLIGRU  "CLIGRU" // Cliente - Grupos
#define AUX_CNAE    "CNAE.." // CNAE
#define AUX_CTAADM  "CTAADM" // contas administrativas
#define AUX_DEMDOC  "DEMDOC" // documentos do demonstrativo
#define AUX_EDICFG  "EDICFG" // configuracao de edi
#define AUX_FILIAL  "FILIAL" // filiais
#define AUX_FINANC  "FINANC" // financeiras
#define AUX_FINOPE  "FINOPE" // financeiro - operações
#define AUX_FINPOR  "FINPOR" // financeiro - portadores
#define AUX_ICMCST  "ICMCST" // ICMS CST
#define AUX_IPICST  "IPICST" // IPI CST
#define AUX_IPIENQ  "IPIENQ" // IPI Enquadramento
#define AUX_LICTIP  "LICTIP" // Tipo de licença
#define AUX_LICOBJ  "LICOBJ" // Tipo de objeto
#define AUX_MEIAUT  "MEIAUT" // Meio pelo qual foi feita a autorização
#define AUX_MIDIA   "MIDIA." // Midia, forma por onde chegou o cliente
#define AUX_MODFIS  "MODFIS" // Modelo de documento fiscal
#define AUX_MOTIVO  "MOTIVO" // Motivo de cancelamento
#define AUX_ORDCLI  "ORDCLI" // ordem de serviço - status de cliente
#define AUX_ORDSTA  "ORDSTA" // ordem de serviço - status geral
#define AUX_ORDTEC  "ORDTEC" // ordem de serviço - status técnico
#define AUX_ORIMER  "ORIMER" // origem da mercadoria
#define AUX_OSAPAR  "OSAPAR" // ordem de serviço - aparelho
#define AUX_PISCST  "PISCST" // PIS CST
#define AUX_PISENQ  "PISENQ" // PIS Enquadramento
#define AUX_PPRECO  "PPRECO" // percentuais de tabelas de preço
#define AUX_PROGRU  "PROGRU" // Produto Grupo
#define AUX_PRODEP  "PRODEP" // Produto Departamento
#define AUX_PROSEC  "PROSEC" // Produto Seção
#define AUX_PROLOC  "PROLOC" // Produto Localização
#define AUX_PROUNI  "PROUNI" // Produto unidade
#define AUX_QUAASS  "QUAASS" // Qualificação do Assinante
#define AUX_TABAUX  "TABAUX" // Tabelas Auxiliares
#define AUX_TARSTA  "TARSTA" // Tarefas Status
#define AUX_TARTIP  "TARTIP" // Tarefas Tipos
#define AUX_TRICAD  "TRICAD" // Tributação de Cadastros
#define AUX_TRIEMP  "TRIEMP" // Tributação de empresa
#define AUX_TRIPRO  "TRIPRO" // Tributação de produtos
#define AUX_TRIUF   "TRIUF." // Tributação de UFs

#define AUX_CXATIP   "CXATIP"   // Tipo de lançamento no caixa

#define AUX_ECIVIL   "ECIVIL"   // Estado Civil
#define AUX_REAJUS   "REAJUS"   // Tipo de Reajuste
#define AUX_TIPIMO   "TIPIMO"   // Tipo de Imóvel
#define AUX_TIPCTR   "TIPCTR"   // Tipo de Contrato

#define HLCAIXA_MONE_CHEQUE      1
#define HLCAIXA_MONE_DINHEIRO    2
#define HLCAIXA_MONE_CARTAO      3
#define HLCAIXA_MONE_DOLAR       4
#define HLCAIXA_MONE_VALE        5

#define HLCAIXA_DB_ENTRADA       1
#define HLCAIXA_DB_SAIDA         2
#define HLCAIXA_DB_EXTRACAIXA    3

#define HLCAIXA_TIPO_RECIBO               1
#define HLCAIXA_TIPO_RECIBO_ALUGUEL       2
#define HLCAIXA_TIPO_RECIBO_LUZ           3
#define HLCAIXA_TIPO_RECIBO_AGUA          4
#define HLCAIXA_TIPO_RECIBO_PREDIAL       5
#define HLCAIXA_TIPO_RECIBO_CONDOMINIO    6
#define HLCAIXA_TIPO_RECIBO_TELEFONE      7
#define HLCAIXA_TIPO_RECIBO_CONTRATOS     8
#define HLCAIXA_TIPO_DIVERSOS_ENTRADA     9
#define HLCAIXA_TIPO_RECIBO_FIANCA       10
#define HLCAIXA_TIPO_RECIBO_TAXALIXO     11
#define HLCAIXA_TIPO_RECIBO_ADICDIVS     11
#define HLCAIXA_TIPO_RECIBO_IRRF         12
#define HLCAIXA_TIPO_BOLETO_AVULSO       13
#define HLCAIXA_TIPO_HAVER               15
#define HLCAIXA_TIPO_RECIBO_DESCDIVS     17
#define HLCAIXA_TIPO_EXTRATOS            20
#define HLCAIXA_TIPO_ADIANTAMENTO        21
#define HLCAIXA_TIPO_DIVERSOS_SAIDA      22
#define HLCAIXA_TIPO_CHEQUE_DEPOSITO     23
#define HLCAIXA_TIPO_DEVE                26
#define HLCAIXA_TIPO_RETIRADACC          27
#define HLCAIXA_TIPO_BOLETO              28

#define RECIBO10_ENTRADA 1
#define RECIBO10_SAIDA   2
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 12 Set 2016 18:23

Pensando bem, vou alterar o HBP do meu aplicativo e remover o #include de todos os fontes.

-ijpa.ch
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Meu modo de trabalho

Mensagempor Poka » 12 Set 2016 19:43

Olá Quintas,
É bom saber como os outros trabalham, para ver se estamos fazendo certo, se podemos melhorar, enfim sempre é um aprendizado a mais.

Sobre mudar de dbf para SQL , no meu caso Firebird.

Tenho um sistema grande, com muitas linhas, incluindo compras, almoxarifado, estoque de matéria prima, estoque de acabados, contas a pagar, contas a receber, produção, custo, emissão de notas, pedidos, etc.

Decidi por fazer o sistema inteiro , para depois mudar de uma vez. A parte de passar os dados do dbf para firebird já esta tudo pronto, vou fazendo por partes agora, sempre atualizando os dados no novo, checando os relatórios, mostrando para cada setor como vai ficar, até terminar, queria terminar esse ano, mas com certeza não vai dar.
Quando mudar vai ser assim, encerra no dia com dbf e no outro inicia com firebird.
Vamos ver o que vai dar

um abraço

Poka
Avatar de usuário

Poka
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 385
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

Meu modo de trabalho

Mensagempor rosalvo rosa » 13 Set 2016 08:37

Bom dia!

Na verdade estou precisando do arquivo jpa.ch para uso em uma função com Mouse, e aqui eu preciso dele mesmo.

Obrigado.

Rosalvo
Avatar de usuário

rosalvo rosa
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 148
Data de registro: 10 Jan 2006 18:21
Cidade/Estado: Curitiba - PR
Curtiu: 1 vez
Mens.Curtidas: 1 vez

Meu modo de trabalho

Mensagempor asimoes » 13 Set 2016 08:48

Quintas,

Você tá usando -ijpa.ch tem como incluir mais de 1 .ch com este comando?

Eu utilizo:

-u+hbcompat.ch
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4208
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 294 vezes
Mens.Curtidas: 210 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 13 Set 2016 11:39

Fui usar e não aceitou o -i
Não entendi, devo ter me confundido com isso.

Sobre o jpa.ch
O meu atual é esse que postei.
Não está confundindo? ou será que é um jpa.ch meu antigo?

Faça o seguinte, dependendo da rotina: compile usando -w3 -es2
Vai mostrar quais palavras que estão faltando no #define.

Por exemplo, retirando jpa.ch do meu programa principal:

d:\CDROM\FONTES\INTEGRA>hbmk2 jpa.hbp
hbmk2: Processing environment options: -comp=msvc
Harbour 3.4.0dev (b4aaa05) (2016-09-06 07:30)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'jpa.prg'...
100
jpa.prg:125: warning W0001  Ambiguous reference 'DATABASE_DBF'
200
No code generated.
hbmk2 [jpa]: Error: Running Harbour compiler (built-in). 1


Esse DATABASE_DBF está definido no jpa.ch, ao retirar #include "jpa.ch" reclamou que falta isso.

Não faço idéia do que pode precisar, deve ser de um jpa.ch anterior talvez.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11927
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 763 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: RamonXHB e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro