Meu modo de trabalho
Moderador: Moderadores
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Meu modo de trabalho
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?
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 - 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!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
É que começa o rumo pra acabar com o uso daquilo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Meu modo de trabalho
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 - 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!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
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".
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
As alterações pra isso (parciais dos fontes):
primeira etapa, criar/garantir bases mysql:
segunda etapa, criar/garantir bases DBF, incluindo conversões/atualização de estruturas:
terceira etapa, conversões adicionais, que podem ser DBF ou MySQL.
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.
Código: Selecionar todos
SayScroll( "Verificando atualizações" )
SAllMySql()
SAllDbf()
ConvGeral()
Código: Selecionar todos
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() )
Código: Selecionar todos
FUNCTION SAllDbf()
IF AppDatabase() != DATABASE_DBF
RETURN NIL
ENDIF
SayScroll( "Verificando DBFs" )
// JPREGUSO antes de todos
JPREGUSOCreateDbf()
JPCONFICreateDbf()
Código: Selecionar todos
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
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
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:
No início, e quanto mais campos pior:
Com funções de conversão, melhorou, evita alguns erros:
Agora com uma classe, dá pra "enxergar" direito:
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.
Antes lembrar que pra inclusão ou alteração, é assim, e quase sempre é com muito mais campos:
Código: Selecionar todos
INSERT INTO CLIENTES ( CODIGO, NOME, ENDERECO ) VALUES ( 1, "JUCA", "RUA CHICO BENTO" )
UPDATE CLIENTES SET NOME="JUCA", ENDERECO="RUA CHICO BENTO" WHERE CODIGO=1
Código: Selecionar todos
[INSERT INTO CLIENTES ( CODIGO, NOME, ENDERECO ) VALUES ( ] + Ltrim( Str( nCodigo ) ) + [, "] + cNome + [", "] + cEndereco + ["]
[UPDATE CLIENTES SET NOME="] + cNome + [", ENDERECO="] + cEndereco + [" WHERE CODIGO=] + Ltrim( Str( nCodigo ) )
Código: Selecionar todos
"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 )
Código: Selecionar todos
:QueryCreate()
:QueryAdd( "CODIGO", nCodigo )
:QueryAdd( "NOME", cNome )
:QueryAdd( "ENDERECO", cEndereco )
:QueryExecuteInsert( "CLIENTES" )
:QueryCreate()
:QueryAdd( "NOME", cNome )
:QueryAdd( "ENDERECO", cEndereco )
:QueryExecuteUpdate( "CLIENTES", "CODIGO=" + NumberSql( nCodigo ) )
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
Não sei se foi pra melhor, mas organizei um pouco diferente:
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:
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.
Código: Selecionar todos
#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
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:
Código: Selecionar todos
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 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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
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.....
.
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rosalvo rosa
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 10 Jan 2006 19:21
- Localização: Curitiba - PR
Meu modo de trabalho
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
Poderia disponibilizar o arquivo Jpa.ch ?
Trabalho com HB30 e não tenho na minha pasta Include.
Desde já agradeço
Abraço
Rosalvo
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
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:
É 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:
Código: Selecionar todos
/*
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
Pensando bem, vou alterar o HBP do meu aplicativo e remover o #include de todos os fontes.
Código: Selecionar todos
-ijpa.ch
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Meu modo de trabalho
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
É 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
- rosalvo rosa
- Usuário Nível 3

- Mensagens: 156
- Registrado em: 10 Jan 2006 19:21
- Localização: Curitiba - PR
Meu modo de trabalho
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
Na verdade estou precisando do arquivo jpa.ch para uso em uma função com Mouse, e aqui eu preciso dele mesmo.
Obrigado.
Rosalvo
Meu modo de trabalho
Quintas,
Você tá usando -ijpa.ch tem como incluir mais de 1 .ch com este comando?
Eu utilizo:
-u+hbcompat.ch
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Meu modo de trabalho
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:
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.
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:
Código: Selecionar todos
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
Não faço idéia do que pode precisar, deve ser de um jpa.ch anterior talvez.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/

