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 » 16 Jul 2017 17:58

JoséQuintas escreveu:Fiz um teste agora, mas é um controle meu que não existe na GTWVG oficial.
Ainda não coloquei recurso no controle de redimensionar imagem, mas fica igual outras LIBs.

telajpa.png


Parece piada, mas é sério: até criei controles de uso em tela Windows, pra GTWVG, mas eu mesmo não uso.

meu professor, você conseguiu resolver o problema dos textos/imagens que sobrepõem aí no menu e textos?
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

Meu modo de trabalho

Mensagempor JoséQuintas » 16 Jul 2017 23:53

A saída seria usar menu Windows, e deixar a imagem fixa de fundo, igual outras LIBs fazem.
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

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Set 2017 18:47

Faltou dizer:
Não precisa, e NEM DEVEM copiar daqui.
É bom tentar comentar com os desenvolvedores das LIBs, porque eles devem fazer os arquivos mais adequados, os meus são só para meus testes, e podem estar errados.

Mesmo assim, estão todos aqui.

https://github.com/JoseQuintas/AllGui

Os fontes das LIBs são originais, mas os HBP e HBC não vieram com as LIBs, então é só pra teste mesmo.
Pra produção é melhor usar os arquivos originais, porque são eles que vão ser usados para suporte.

Mas fica aí a dica, pra cobrar dos autores de suas LIBs.

E podem criar pra fivewin também, no mesmo estilo.

E numa IDE, bastaria a IDE ter arquivos iguais.....
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

Meu modo de trabalho

Mensagempor microvolution » 31 Jan 2018 18:50

JoséQuintas escreveu:Mas fica aí a dica, pra cobrar dos autores de suas LIBs.

prezado professor, por incrível que pareça, estava num outro tópico onde eu tenho "umas muitas dúvidas" e alguém havia me dado uma pasta (eu perguntando sobre HMG) e que eu não achava... até que o MSDN disse que era referente à HMG-E.

Se o Sr. que é "ninja" está com este montão de "trecos/troços", imagina "euzinho" que estou ainda de fraldas...

Eu, disse no outro tópico, que deveria haver uma união e homogenia entre as LIBs, pois são tantas: HMG, HMGE, OOHG, HWGUI, WVW, VWG, etc... e o que a gente aprende numa - apesar de tudo ser HARBOUR, não é do mesmo jeito na outra...
deveria ser padronizado como são o ABNT e ABNT2, ou ASC e ASCII.

#ficaAdica
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

Meu modo de trabalho

Mensagempor juniorcamilo » 24 Set 2019 07:35

Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 09:51

juniorcamilo escreveu:como pós imagem em modo console?


DrawImage(), e depois o texto por cima.
Mas a imagem some se mover tela, minimizar, etc... por isso só usei em teste.
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

Meu modo de trabalho

Mensagempor juniorcamilo » 24 Set 2019 10:57

estou atrás disso!!!
viewtopic.php?f=4&t=19031#p122172

como será?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 16:37

Vixe.....

HB_FUNC_TRANSLATE( WVG_DRAWTEXT , WAPI_DRAWTEXT )


Nem precisa da GTWVG !!!
No Harbour 3.4 o Viktor transferiu a função, que é da API Windows pra hbwin.

Ta aí uma coisa interessante:
No 3.2, a função está na GTWVG, mas era pura API Windows
No 3.4, o Viktor padronizou e moveu a função pra HBWIN, que contém rotinas do Windows.

Diferença?
É API Windows... nem precisa GTWVG.
IGUAL EM QUALQUER LIB GRÁFICA.

Tão entendendo o que digo sobre padronizar LIBs?
O que era GTWVG... que era API Windows... foi para o lugar certo.
Igual todas as LIBs poderiam fazer, e ficaria muito mais padronizado !!!!
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

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 16:39

/* mappings to hbwin */
HB_FUNC_TRANSLATE( WVG_APPENDMENU , WAPI_APPENDMENU )
HB_FUNC_TRANSLATE( WVG_BRINGWINDOWTOTOP , WAPI_BRINGWINDOWTOTOP )
HB_FUNC_TRANSLATE( WVG_CALLWINDOWPROC , WAPI_CALLWINDOWPROC )
HB_FUNC_TRANSLATE( WVG_CHECKDLGBUTTON , WAPI_CHECKDLGBUTTON )
HB_FUNC_TRANSLATE( WVG_CHECKMENUITEM , WAPI_CHECKMENUITEM )
HB_FUNC_TRANSLATE( WVG_CHECKRADIOBUTTON , WAPI_CHECKRADIOBUTTON )
HB_FUNC_TRANSLATE( WVG_CLIENTTOSCREEN , WAPI_CLIENTTOSCREEN )
HB_FUNC_TRANSLATE( WVG_CREATEMENU , WAPI_CREATEMENU )
HB_FUNC_TRANSLATE( WVG_CREATEPOPUPMENU , WAPI_CREATEPOPUPMENU )
HB_FUNC_TRANSLATE( WVG_CREATEWINDOWEX , WAPI_CREATEWINDOWEX )
HB_FUNC_TRANSLATE( WVG_DEFWINDOWPROC , WAPI_DEFWINDOWPROC )
HB_FUNC_TRANSLATE( WVG_DELETEMENU , WAPI_DELETEMENU )
HB_FUNC_TRANSLATE( WVG_DESTROYMENU , WAPI_DESTROYMENU )
HB_FUNC_TRANSLATE( WVG_DESTROYWINDOW , WAPI_DESTROYWINDOW )
HB_FUNC_TRANSLATE( WVG_DRAWMENUBAR , WAPI_DRAWMENUBAR )
HB_FUNC_TRANSLATE( WVG_DRAWTEXT , WAPI_DRAWTEXT )
HB_FUNC_TRANSLATE( WVG_ENABLEMENUITEM , WAPI_ENABLEMENUITEM )
HB_FUNC_TRANSLATE( WVG_ENABLEWINDOW , WAPI_ENABLEWINDOW )
HB_FUNC_TRANSLATE( WVG_FILLRECT , WAPI_FILLRECT )
HB_FUNC_TRANSLATE( WVG_GETDESKTOPWINDOW , WAPI_GETDESKTOPWINDOW )
HB_FUNC_TRANSLATE( WVG_GETDIALOGBASEUNITS , WAPI_GETDIALOGBASEUNITS )
HB_FUNC_TRANSLATE( WVG_GETDLGITEM , WAPI_GETDLGITEM )
HB_FUNC_TRANSLATE( WVG_GETDLGITEMTEXT , WAPI_GETDLGITEMTEXT )
HB_FUNC_TRANSLATE( WVG_GETFOCUS , WAPI_GETFOCUS )
HB_FUNC_TRANSLATE( WVG_GETSTOCKOBJECT , WAPI_GETSTOCKOBJECT )
HB_FUNC_TRANSLATE( WVG_HINSTANCE , WIN_HINSTANCE )
HB_FUNC_TRANSLATE( WVG_HIWORD , WAPI_HIWORD )
HB_FUNC_TRANSLATE( WVG_INSERTMENU , WAPI_INSERTMENU )
HB_FUNC_TRANSLATE( WVG_ISDLGBUTTONCHECKED , WAPI_ISDLGBUTTONCHECKED )
HB_FUNC_TRANSLATE( WVG_ISICONIC , WAPI_ISICONIC )
HB_FUNC_TRANSLATE( WVG_ISWINDOW , WAPI_ISWINDOW )
HB_FUNC_TRANSLATE( WVG_ISZOOMED , WAPI_ISZOOMED )
HB_FUNC_TRANSLATE( WVG_LOWORD , WAPI_LOWORD )
HB_FUNC_TRANSLATE( WVG_MAKELPARAM , WAPI_MAKELPARAM )
HB_FUNC_TRANSLATE( WVG_MESSAGEBOX , WAPI_MESSAGEBOX )
HB_FUNC_TRANSLATE( WVG_MOVEWINDOW , WAPI_MOVEWINDOW )
HB_FUNC_TRANSLATE( WVG_POSTMESSAGE , WAPI_POSTMESSAGE )
HB_FUNC_TRANSLATE( WVG_SCREENTOCLIENT , WAPI_SCREENTOCLIENT )
HB_FUNC_TRANSLATE( WVG_SENDDLGITEMMESSAGE , WAPI_SENDDLGITEMMESSAGE )
HB_FUNC_TRANSLATE( WVG_SENDMESSAGE , WAPI_SENDMESSAGE )
HB_FUNC_TRANSLATE( WVG_SENDMESSAGETEXT , WAPI_SENDMESSAGE )
HB_FUNC_TRANSLATE( WVG_SETBKCOLOR , WAPI_SETBKCOLOR )
HB_FUNC_TRANSLATE( WVG_SETBKMODE , WAPI_SETBKMODE )
HB_FUNC_TRANSLATE( WVG_SETDLGITEMTEXT , WAPI_SETDLGITEMTEXT )
HB_FUNC_TRANSLATE( WVG_SETFOCUS , WAPI_SETFOCUS )
HB_FUNC_TRANSLATE( WVG_SETFOREGROUNDWINDOW , WAPI_BRINGWINDOWTOTOP )
HB_FUNC_TRANSLATE( WVG_SETPARENT , WAPI_SETPARENT )
HB_FUNC_TRANSLATE( WVG_SETTEXTCOLOR , WAPI_SETTEXTCOLOR )
HB_FUNC_TRANSLATE( WVG_SETWINDOWLONG , WAPI_SETWINDOWLONGPTR )
HB_FUNC_TRANSLATE( WVG_SETWINDOWTEXT , WAPI_SETWINDOWTEXT )
HB_FUNC_TRANSLATE( WVG_SHOWWINDOW , WAPI_SHOWWINDOW )
HB_FUNC_TRANSLATE( WVG_SLEEP , WAPI_SLEEP )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SELECTITEM , WAPI_TREEVIEW_SELECTITEM )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETBKCOLOR , WAPI_TREEVIEW_SETBKCOLOR )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETLINECOLOR , WAPI_TREEVIEW_SETLINECOLOR )
HB_FUNC_TRANSLATE( WVG_TREEVIEW_SETTEXTCOLOR , WAPI_TREEVIEW_SETTEXTCOLOR )
HB_FUNC_TRANSLATE( WVG_UPDATEWINDOW , WAPI_UPDATEWINDOW )
HB_FUNC_TRANSLATE( WVT__MAKEDLGTEMPLATE , __WAPI_DLGTEMPLATE_RAW_NEW )

#ifdef HB_LEGACY_LEVEL5

/* local synonyms (deprecated) */
HB_FUNC_TRANSLATE( WVT_APPENDMENU , WAPI_APPENDMENU )
HB_FUNC_TRANSLATE( WVT_CREATEMENU , WAPI_CREATEMENU )
HB_FUNC_TRANSLATE( WVT_CREATEPOPUPMENU , WAPI_CREATEPOPUPMENU )
HB_FUNC_TRANSLATE( WVT_DELETEMENU , WAPI_DELETEMENU )
HB_FUNC_TRANSLATE( WVT_DESTROYMENU , WAPI_DESTROYMENU )
HB_FUNC_TRANSLATE( WVT_ENABLEMENUITEM , WAPI_ENABLEMENUITEM )
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

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 17:13

hazael escreveu:você pode (sempre pôde) fazer isso


Em parte...
O Viktor padronizou mais, movendo e padronizando as chamadas à API Windows.
Talvez no 3.2 não existam todas essas funções, e precise mais código fonte pra fazer a mesma coisa.

Foi nessa padronização que acabei tendo o recurso do Windows de redimensionar imagem, que faz parte do Windows !!!
Acho que no 3.2 ainda não tem isso, já que não atualizaram a GTWVG com as atualizações do 3.4, e nem a hbwin.
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

Meu modo de trabalho

Mensagempor JoséQuintas » 24 Set 2019 17:15

Mas voltando à pergunta sobre letra maior na GTWVG

Provavelmente a próxima vai ser: e como uso isso?

Se é função da API Windows.... tem manual detalhado na Microsoft, não precisa manual no Harbour, e nem na GTWVG !!!
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

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Out 2019 23:43

Continuando....

Em posts anteriores, de 2016, eu havia comentado de acabar com DBFs, mas parei de mexer por alguns anos.
Faltaram telas em GTWVG.
Agora usando ícones multiresolução, que ficam bons em qualquer resolução de monitor.
E o EXE... que tinha cerca de 2MB na época das postagens, agora tem 6.5MB por conta das imagens.

jpa1.png


jpa2.png
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

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Out 2019 01:18

Então....
Na continuação da migração pra MySQL, comecei a mexer em outras coisas ao mesmo tempo...
Então anulei tudo, e fazer uma coisa de cada vez.

Uma coisa é o seguinte: tenho um único cadastro pra clientes/fornecedores e transportadoras.
clientes/fornecedores usa cdtipo="1", e transportadoras usa cdtipo="3".
Vou separar as transportadoras e acabar com esse cdtipo.

Primeiro passo: confirmar índices
   IndexDbf( "jpcadas", "Cadastros (Cli/Forn/Transp)" )
   IndexInd( "jpcadas1", "cdTipo + cdCodigo" )
   IndexInd( "jpcadas2", "cdTipo + cdNome + cdCodigo" )
   IndexInd( "jpcadas3", "cdTipo + cdCnpj + cdDivisao + cdCodigo" )
   IndexInd( "jpcadas4", "cdTipo + cdApelido + cdCodigo" )
   IndexInd( "telefone", "cdTipo + cdTelefone + cdCodigo" )
   IndexInd( "numlan",   "cdCodigo" )
   IndexInd( "nome",     "cdNome + cdCodigo" )
   IndexInd( "cnpj",     "cdCnpj+cdCodigo" )


Já tenho índices com e sem o cdtipo, e já faço muito uso desses índices sem cdtipo, isso vai facilitar.

Só lembrando:

usando NTX, temos lá trocentos arquivos de índice
SET INDEX TO ntx1, ntx2, ntx3, ntx4, ntx5, ntx6, ntx7, ntx8, ntx9, ntx10, ntx11

usando CDX, é um único arquivo, e os índices são internos
SET INDEX TO jpcadas

Além disso, ao invés de SET ORDER TO 1, SET ORDER TO 2, etc...., podemos usar o nome: OrdSetFocus( "numlan" )
Com isso, vou poder apagar os índices jpcadas1 a 4 tranquilamente (após retirar o uso nos fontes, lógico).
Se usasse SET ORDER por número... isso não seria possível.

Primeiro rotina de criar/atualizar estrutura do arquivo:
STATIC FUNCTION JPTRANSPCreateDbf()

   LOCAL mStruOk := { ;
      { "TPCODIGO",   "C", 6 }, ;
      { "TPNOME",     "C", 50 }, ;
      { "TPAPELIDO",  "C", 20 }, ;
      { "TPCNPJ",     "C", 18 }, ;
      { "TPENDERECO", "C", 40 }, ;
      { "TPNUMERO",   "C", 10 }, ;
      { "TPCOMPL",    "C", 20 }, ;
      { "TPBAIRRO",   "C", 20 }, ;
      { "TPCIDADE",   "C", 21 }, ;
      { "TPUF",       "C", 2 }, ;
      { "TPCEP",      "C", 9 }, ;
      { "TPTELEFONE", "C", 30 }, ;
      { "TPINSEST",   "C", 18 }, ;
      { "TPCONTATO",  "C", 30 }, ;
      { "TPTELEF2",   "C", 15 }, ;
      { "TPTELEF3",   "C", 15 }, ;
      { "TPFAX",      "C", 30 }, ;
      { "TPEMAIL",    "C", 250 }, ;
      { "TPHOMEPAGE", "C", 100 }, ;
      { "TPOBS",      "C", 100 }, ;
      { "TPSTATUS",   "C", 6 }, ;
      { "TPINFINC",   "C", 80 }, ;
      { "TPINFALT",   "C", 80 } }

   SayScroll( "JPTRANSP, verificando atualizações" )

   IF ! ValidaStru( "jptransp", mStruOk )
      MsgStop( "jptransp não disponível!" )
      QUIT
   ENDIF

   RETURN NIL


Depois rotina de reindexar:

   IndexDbf( "jptransp", "Transportadoras" )
   IndexInd( "numlan",   "tpCodigo" )
   IndexInd( "nome",     "tpNome + tpCodigo" )
   IndexInd( "cnpj",     "tpCnpj + tpCodigo" )


Pronto, na próxima atualização do sistema, arquivo será criado automaticamente.
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

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Out 2019 01:47

Agora a transferência.
Já tenho a rotina de atualização automática, então é só acrescentar mais essa.

// ze_update2019.prg
FUNCTION ze_Update2019()

   IF AppVersaoDbfAnt() < 20191011; Update1011(); ENDIF
   IF AppVersaoDbfAnt() < 20191019; Update1019(); ENDIF

   RETURN NIL


E agora criar a Update1019() (19/10) fazendo a transferência de cdtipo="3" para o novo jptransp.

Na próxima vez que o cliente atualizar versão, terá um arquivo novo só com transportadoras.

Agora é alterar os fontes, para ao invés de usar jpcadas, passar a usar jptransp.

Neste ponto não posso liberar pra cliente, só quando terminar a alteração pra usar jptransp ao invés de jpcadas, senão a conversão vai ficar desatualizada.

Terminado isto, já posso liberar pra clientes.

Depois, mexer nos fontes pra eliminar de vez o campo cdtipo.

Começar eliminando o uso dos índices jpcadas1 a jpcadas4.
Primeiro eliminar as pesquisas por esses índices.
Nesta etapa, tanto faz se atualizar ou não nos clientes durante o processo.

Depois, ajustar os fontes de clientes/fornecedores pra não usarem o cdtipo, deixando a remoção definitiva por último.
Mesma coisa: vou poder atualizar nos clientes a qualquer momento.

Por último: eliminar de vez, mas....antes de eliminar o campo, preciso pegar as transportadoras, lembram? cdtipo="3"
Então, cdtipo só vai deixar de existir no arquivo depois, quando realmente não precisar mais.
Uso isto na fase intermediária:

IF AppVersaoDbfAnt() < 20191019
   AAdd( mStruOk, { "CDTIPO", "C", 1 }  )
ENDIF


Ou seja, defino até quando o campo vai existir.
Quem atualizar versão depois desta, após a transferência o campo vai ser eliminado.

Quando terminar por definitivo, altero aqui também:

FUNCTION AppVersaoDbf()

   RETURN 20191014


Esse é o controle de versão de DBF.
Ao alterar o número de versão, obrigatoriamente o aplicativo faz backup de tudo.
Só depois do backup é que o aplicativo vai alterar estruturas, e transferir transportadoras.

Isso já venho usando desde a versão de 2002, desde o Clipper, que já mostrei neste post.
Apenas coloquei no aplicativo pra ele fazer automático, o que muito antigamente eu fazia manualmente.
É criar uma rotina que atualiza, e com o tempo vai melhorando, conforme as necessidades que forem aparecendo.
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

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Out 2019 06:27

A atualização... tudo rotina comum.

STATIC FUNCTION Update1019()

   IF ! AbreArquivos( "jptransp", "jpcadas" )
      QUIT
   ENDIF
   SELECT jpcadas
   SET ORDER TO 0
   GOTO TOP
   DO WHILE ! Eof()
      IF jpcadas->cdTipo != "3"
         SKIP
         LOOP
      ENDIF
      SELECT jptransp
      SEEK jpcadas->cdCodigo
      IF Eof()
         RecAppend()
         REPLACE jptransp->tpCodigo WITH jpcadas->cdCodigo, ;
      ENDIF
      RecLock()
      REPLACE ;
         jptransp->tpNome     WITH jpcadas->cdNome, ;
         jptransp->tpApelido  WITH jpcadas->cdApelido ;
...
         jptransp->tpInfAlt   WITH jpcadas->cdInfAlt
      SELECT jpcadas
      //RecLock()
      //DELETE
      //RecUnlock()
      SKIP
   ENDDO
   CLOSE DATABASES

   RETURN NIL


A checagem é precaução.
Não excluir é precaução.
Durante os testes, posso ficar convertendo toda hora.
Mas terminando as alterações, antes de instalar nos clientes, aí apago de vez.
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

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 17 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