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 JoséQuintas » 25 Mai 2020 14:31

Ah sim, devem se perguntar: porque tive que usar o arquivo de PEDIDOS?

Tenho financeiro com número de pedido ZERO, e tenho nota fiscal com número de pedido ZERO.
Se relacionar os dois diretamente, pelo número de pedido, os zerados vão estar relacionados.
A saída que usei foi essa: não existe pedido ZERO, então ao relacionar com pedido, deixa de existir nota fiscal relacionada.

Como eu comentei antes, sou principiante, é meu primeiro ano de uso de MySQL pra valer.
Tenho muito que aprender, mas com certeza já sei que usando DBF + MySQL vou ficar limitado.
Então... é terminar usando o que já aprendi, e depois ver o que vou poder melhorar.

Já quem acha que já sei muito....
Lembram que já comentei: é usar o básico, e ficar forte no básico, com o básico forte, a gente se vira pra fazer o resto.
Praticamente até agora só tenho usado o básico.
Seria o equivalente do DBF pra fazer SEEK e SET RELATION e nada mais.

Acho que a parte que mencionei no início seria igual em DBF.
Algo do tipo:

SELECT 0
USE NOTAS INDEX NPEDIDOS
SELECT 0
USE PEDIDOS INDEX FPEDIDOS
SET RELATION TO PEDIDOS->IDPEDIDO INTO NOTAS
SELECT 0
USE FINANCEIRO
SET RELATION TO FINANCEIRO->PEDIDO INTO PEDIDOS; TO FINANCEIRO->FICADASTRO INTO CADASTRO


É até interessante isso: apesar de filtros parecidos, o que no DBF é a parte mais lenta, no MySQL é a parte mais rápida.

Mas então... estou usando bastante o básico, e ficando craque no básico.
É como se eu estivesse num "treinamento intensivo" do básico.
Depois... quando tudo estiver em MySQL... aí vou poder aprender e usar mais coisas.

O importante é: estou aprendendo, estou convertendo, está em uso nos clientes, está funcionando perfeito, os DBFs estão deixando de ser usados.
Se vou terminar este mês, este ano, ano que vém, no outro ano,.... tanto faz... estou indo sempre em frente.
Acho que deste ano não passa.

Lembrando:
já eliminei o uso de estoque.dbf e notafiscal.dbf, agora é o financeiro.dbf.
Mas conforme altero rotinas, aproveito pra eliminar o uso de outros DBFs também, como na rotina acima, que eliminei o uso do cadastro.dbf.
E em relatórios, que pegam informação de tudo que é lugar ao mesmo tempo.
Por isso acho que deste ano não vai passar, mesmo fazendo tudo devagar.
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 » 26 Mai 2020 11:46

Só pra corrigir: o comando SQL anterior deu erro.

É que coloquei pra pegar JPCADASTRO.CDCNPJ, mas não indiquei essa tabela como parte do comando, por isso deu erro de não encontrar o campo.

O MySQL poderia pegar automaticamente?
Sim, mas como o cadastro tem muitos registros, faltou indicar o relacionamento, pra ele saber qual registro pegar.
Ainda bem que ele exige isso, senão iria pegar todos os cadastros.
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 » 29 Mai 2020 13:43

Eba !!!!
Menos um.

sql.png


Terminei de eliminar o uso de DBF do financeiro, o JPFINAN.DBF.

Nesse cliente, como dá pra ver na imagem, baixando de 500MB pra 400MB em DBF.
estoque, financeiro, e outros, agora somente em MySQL.

E o jpfinan.dbf?
Se venho fazendo gravação dupla DBF + MySQL, e está funcionando com as informações do MySQL... esse DBF virou lixo.
Vou apenas manter por mais um tempo, só por precaução, mas já pode ir pro lixo.
O DBF deixou de ser atualizado, não usa pra mais nada mesmo.

Os próximos são pedidos e produtos de pedido, que representam 350MB dos 400MB restantes em DBF.
Lembrando que eles já estão em gravação dupla há tempos, e já alterei muitos fontes pra não usarem mais os DBFs desses dois.

Recomendo a gravação dupla pra todos.
Mudar de DBF pra MySQL... aos poucos.... sem o cliente perceber... é fantástico...
Erros acontecem, mas são poucos a cada mudança, e fica fácil resolver.

No meu caso continua sendo ADO puro.
Se por um acaso trocar de linguagem de programação - NÃO é essa a intenção - tá tudo no jeito.
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 » 11 Jun 2020 10:01

Tava olhando aonde falta alterar o uso do produtos de pedidos: JPITPED.
Procurei por jpitped-> nos fontes.

falta1.png


falta2.png


falat3.png


Lembrando que no meio disso tem a gravação dupla, que se trata apenas de apagar.
A conversão ainda vai ser mantida, apenas pra transferir pra MySQL quem ainda não transferiu.
Tá quase lá....
Mas com certeza, as partes mais "complicadas" ficaram para o final.
Restam praticamente 8 (oito) fontes.

Nota: omiti pelo menos uma página, porque é o mesmo fonte JPPEDIDO.
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 » 14 Jun 2020 10:44

Acho que ficou aceitável, com minha classe.

FUNCTION ClonarPedido( nIdPedido )

   LOCAL nIdItPed, cField
   LOCAL cnSQL := ADOCLass():New( AppConexao() )

   IF nIdPedido == 0
      RETURN NIL
   ENDIF
   IF ! MsgYesNo( "Criar um novo pedido igual ao atual?" )
      RETURN NIL
   ENDIF
   WITH OBJECT cnSQL
      :cSQL := "SELECT JPPEDIDO.*, JPITPED.*" + ;
         " FROM JPPEDIDO" + ;
         " LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " WHERE IDPEDIDO = " + NumberSQL( nIdPedido )
      :Execute()
      :QueryCreate()
      :QueryAdd( "PDCONF", "N" )
      :QueryAdd( "PDDATEMI", Date() )
      :QueryAdd( "PDINFINC", LogInfo() )
      FOR EACH cField IN { "PDFILIAL", "PDTRANSA", "PDCADASTRO", "PDVENDEDOR", "PDTRANSP", "PDFORPAG" }
         :QueryAdd( cField, StrZero( :Number( cField ), 6 ) )
      NEXT
      FOR EACH cField IN { "PDPEDCLI" }
         :QueryAdd( cField, StrZero( :Number( cField ), 9 ) )
      NEXT
      FOR EACH cField IN { "PDCONTATO", "PDDIFCAL", "PDEMAIL", "PDOBS", "PDLEIS" }
         :QueryAdd( cField, :String( cField ) )
      NEXT
      FOR EACH cField IN { "PDPERDES", "PDPERADI", "PDVALCUS", "PDVALPRO", "PDVALNOT", "PDVALFRE", ;
         "PDVALSEG", "PDVALOUT", "PDVALEXT", "PDVALDES", "PDVALADI", "PDVALADU", "PDVALIOF", "PDIIBAS", ;
         "PDIIVAL", "PDIPIBAS", "PDICMVAL", "PDFCPVAL", "PDSUBBAS", "PDSUBVAL", "PDDIFVALI", "PDDIFVALF", ;
         "PDISSBAS", "PDISSVAL", "PDIPIVAL", "PDICMBAS", "PDPISBAS", "PDPISVAL", "PDCOFBAS", "PDCOFVAL", ;
         "PDICSBAS", "PDICSVAL", "PDIMPVAL" }
         :QueryAdd( cField, :Number( cField ) )
      NEXT
      nIdPedido := :QueryExecuteInsert( "JPPEDIDO" )
      :QueryAdd( "IDPEDIDO", StrZero( nIdPedido, 6 ) )
      jppedido->( :DBFQueryExecuteInsert( "JPPEDIDO" ) )
      DO WHILE ! :Eof()
         :QueryCreate()
         :QueryAdd( "IPPEDIDO", StrZero( nIdPedido, 6 ) )
         :QueryAdd( "IPINFINC", LogInfo() )
         FOR EACH cField IN { "IPFILIAL", "IPPRODUTO", "IPTRIBUT" }
            :QueryAdd( cField, StrZero( :Number( cField ), 6 ) )
         NEXT
         FOR EACH cField IN { "IPPEDCOM", "IPCFOP", "IPLEIS", "IPORIMER", "IPIPIICM", "IPIPICST", ;
            "IPIPIENQ", "IPICMCST", "IPDIFCAL", "IPPISCST", "IPPISENQ", "IPCOFCST", "IPCOFENQ" }
            :QueryAdd( cField, :String( cField ) )
         NEXT
         FOR EACH cField IN { "IPPRECUS", "IPPREPED", "IPQTDE", "IPVALCUS", "IPGARANTIA", "IPPRENOT", ;
            "IPVALADI", "IPVALFRE", "IPVALSEG", "IPVALOUT", "IPVALEXT", "IPVALADU", "IPVALIOF", "IPVALDES", ;
            "IPVALPRO", "IPVALNOT", "IPIIBAS", "IPIIALI", "IPIPIBAS", "IPIPIALI", "IPIPIVAL", "IPICMBAS", ;
            "IPICMALI", "IPICMRED", "IPICMVAL", "IPFCPALI", "IPFCPVAL", "IPICSBAS", "IPICSALI", "IPICSVAL", ;
            "IPSUBIVA", "IPSUBBAS", "IPSUBRED", "IPSUBALI", "IPSUBVAL", "IPDIFBAS", "IPDIFALIF", "IPDIFALIU", ;
            "IPDIFALII", "IPDIFVALI", "IPDIFVALF", "IPPISBAS", "IPPISALI", "IPPISVAL", "IPCOFBAS", "IPCOFALI", ;
            "IPCOFVAL", "IPISSBAS", "IPISSALI", "IPISSVAL", "IPIMPALI", "IPIMPVAL" }
            :QueryAdd( cField, :Number( cField ) )
         NEXT
         nIdItPed := :QueryExecuteInsert( "JPITPED" )
         :QueryAdd( "IDITPED", StrZero( nIdItPed, 6 ) )
         jpitped->( :DbfQueryExecuteInsert( "JPITPED" ) )
         :MoveNext()
      ENDDO
      :CloseRecordset()
   ENDWITH
   SubPedidoClass():CalculaValores( nIdPedido )

   RETURN NIL


Acabei separando em blocos.
Detalhe deste:
      FOR EACH cField IN { "PDFILIAL", "PDTRANSA", "PDCADASTRO", "PDVENDEDOR", "PDTRANSP", "PDFORPAG" }
         :QueryAdd( cField, StrZero( :Number( cField ), 6 ) )
      NEXT


Esses campos, no DBF são tipo caractere, e no MySQL são tipo numérico.
Depois, quando eliminar o DBF, talvez troque por INSERT ... ( SELECT )
Mas não vai ser muita vantagem, porque vai precisar indicar os campos do mesmo jeito.

Ou talvez seja, se eu cadastrar como uma Stored Procedure, porque aí não precisa nenhum fonte no aplicativo !!!
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 » 14 Jun 2020 12:40

Uia.
Estou trabalhando na tela de pedidos.
É um bom exemplo pra comparar DBF com SQL.

telaped.png


Tem informação até demais:

- JPPEDIDO: pedidos
- JPITPED: produtos do pedido
- JPITEM: descrição dos produtos
- JPVENDEDOR: nome do vendedor
- JPCADASTRO: dados do cliente
- JPFORPAG: descrição da forma de pagamento
- JPTRANSA: descrição da transação
- JPNOTFIS: dados de nota fiscal, se existir

Em DBF, 8 arquivos + 8 índices, selecionar área, índice, pesquisar, do while nos produtos de pedido pesquisando os nomes dos produtos, etc.
Em SQL, um único comando

Em SQL fica complicado?
Depende do ponto de vista.
Se comparar com um único SEEK, parece complicado.
Se comparar com no mínimo 8 SEEKs, aí parece muito mais simples

      :cSQL := "SELECT JPPEDIDO.*, JPITPED.*, JPCADASTRO.CDVENDEDOR, JPCADASTRO.CDNOME, JPCADASTRO.CDUF," + ;
      " JPCADASTRO.CDCNPJ, JPCADASTRO.CDENDENT, JPITEM.IEDESCRI, JPFORPAG.FPDESCRI, " + ;
      " JPNOTFIS.NFFILIAL, JPNOTFIS.NFNOTFIS, JPNOTFIS.NFDATEMI, JPTRANSA.TRDESCRI," + ;
      " JPVENDEDOR.VDDESCRI" + ;
      " FROM JPPEDIDO" + ;
      " LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
      " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
      " LEFT JOIN JPITEM ON JPITEM.IDPRODUTO = JPITPED.IPPRODUTO" + ;
      " LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
      " LEFT JOIN JPTRANSA ON JPTRANSA.IDTRANSA = JPPEDIDO.PDTRANSA" + ;
      " LEFT JOIN JPVENDEDOR ON JPVENDEDOR.IDVENDEDOR = JPPEDIDO.PDVENDEDOR" + ;
      " LEFT JOIN JPFORPAG ON JPFORPAG.IDFORPAG = JPPEDIDO.PDFORPAG" + ;
      " WHERE IDPEDIDO = " + NumberSQL( nIdPedido )


Aproveitar pra explicar, porque acaba sendo relativamente simples.

os campos que eu quero
      :cSQL := "SELECT JPPEDIDO.*, JPITPED.*, JPCADASTRO.CDVENDEDOR, JPCADASTRO.CDNOME, JPCADASTRO.CDUF," + ;
      " JPCADASTRO.CDCNPJ, JPCADASTRO.CDENDENT, JPITEM.IEDESCRI, JPFORPAG.FPDESCRI, " + ;
      " JPNOTFIS.NFFILIAL, JPNOTFIS.NFNOTFIS, JPNOTFIS.NFDATEMI, JPTRANSA.TRDESCRI," + ;
      " JPVENDEDOR.VDDESCRI" + ;


qual a tabela base e filtro, que neste caso só usa a tabela base

      " FROM JPPEDIDO" + ;
     ..
      " WHERE IDPEDIDO = " + NumberSQL( nIdPedido )


e os relacionamentos, como se fosse uma linha pra cada SEEK em cada tabela

      " LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
      " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
      " LEFT JOIN JPITEM ON JPITEM.IDPRODUTO = JPITPED.IPPRODUTO" + ;
      " LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
      " LEFT JOIN JPTRANSA ON JPTRANSA.IDTRANSA = JPPEDIDO.PDTRANSA" + ;
      " LEFT JOIN JPVENDEDOR ON JPVENDEDOR.IDVENDEDOR = JPPEDIDO.PDVENDEDOR" + ;
      " LEFT JOIN JPFORPAG ON JPFORPAG.IDFORPAG = JPPEDIDO.PDFORPAG" + ;


É só fazer os SAYs... e o TBrowse.
No caso dos produtos, já é feito o relacionamento de cada produto JPITPED com JPITEM.

Uma única consulta, e tá tudo na mão.
NADA de abrir arquivo, índice, etc. etc. etc.
NADA de pasta compartilhada, antivírus enchendo o saco, terminal fuçando arquivo, nada disso.
Vai uma mensagem pro servidor, volta uma mensagem com a informação.

Também é um bom exemplo pra mostrar o seguinte:
Eu poderia ter feito igual DBF, pesquisando uma coisa de cada vez?
Sim poderia.
Mas...

Se usar SQL igual DBF:

- pesquisar pedido
- pesquisar cliente
- pesquisar vendedor
- pesquisar transação
- pesquisar forma de pagamento
- pesquisar produtos de pedido
- fazer várias pesquisas de cada produto pra pegar descrição

Porque enviar/receber tanta mensagem, se uma única resolve?

Agora duas coisas interessantes:

- passar pra SQL ANTES de passar pra tela GUI/gráfica, pode facilitar muito.

- Isso acima é recurso de SQL, que NÃO encontramos em DBF.

E convém lembrar: SQL é recurso do servidor. Se está usando ADO ou SQLMIX ou outro, tanto faz.
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 » 14 Jun 2020 12:59

Tem mais uma coisa interessante:

Como uso nomes de campos diferentes em cada tabela, posso fazer esse JPPEDIDO.*, JPITPED.*
Se tivesse nome repetido, por exemplo CODCLI nos dois, aí já não daria pra fazer isso.

É por isso que a migração de DBF pra SQL pode ser diferente pra cada pessoa, porque cada um tem suas tabelas, e seu estilo de fazer as coisas.
De repente pode até valer a pena dar uma geral nos arquivos, e até nos fontes, preparando tudo antes de ir em frente.

De repente, o ideal pode ser mesmo do jeito que eu fiz.
Fui fazendo um arquivo por vez, e confirmando o que poderia facilitar em cada um.
E depois a gravação dupla, que já deu uma visão maior sobre tudo de uma vez.

Como eu disse: estou aprendendo conforme vou fazendo. Devagar meu uso/conhecimento de SQL foi/continua melhorando.

Até que comecei bem devagar, mas com o tempo, conforme fui me sentindo mais "confortável", com as coisas "se encaixando", fui acelerando um pouco mais.
Tô quase lá....

Certo? errado? sei lá.. escolhi esse caminho, gostei dele, e estou seguindo.
Por enquanto basta que funcione, da melhor maneira que eu puder fazer.
Depois... aí fica pra depois....
Aliás... desde o começo pensei assim... algumas coisas que fiz antes até já mudei depois kkkkk
Mas fazer o que? é assim mesmo, é ir fazendo e aprendendo, e fazendo e aprendendo....
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 asimoes » 14 Jun 2020 18:52

Quintas,

A sua tela iria ficar bunitinha na hwgui ou minigui
â–º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: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 14 Jun 2020 21:09

asimoes escreveu:Quintas,
A sua tela iria ficar bunitinha na hwgui ou minigui


restadbf.png


Olhe lá: 116MB do JPFINAN já não é usado.
Agora 163MB e 175MB de pedidos/produtos sendo eliminados.
Vai sobrar muito pouco em DBF.

Mexer com visual agora pode atrapalhar.
Mas depois... vai ser só visual pra brincar.

Aliás... tá na hora de apagar esse JPFINAN que não serve pra mais nada....
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 Vlademiro » 14 Jun 2020 21:16

Tem que avaliar bem se compensa trocar o código Harbour por store procedure. O servidor pode ficar lento. O ideal é testar muito, e com bases realmente grandes.

Outra coisa. Esse código não é redundante?
  FOR EACH cField IN { "PDPEDCLI" }
         :QueryAdd( cField, StrZero( :Number( cField ), 9 ) )
      NEXT



Não precisa do loop.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 14 Jun 2020 22:07

Vlademiro escreveu:Outra coisa. Esse código não é redundante?


Pois é, preparei pra adicionar mais campos, mas acabei usando um só, e não precisava mais do FOR/EACH.
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 » 15 Jun 2020 09:06

Fiz umas correções de última hora, mas...
Instalado em cliente e em funcionamento.
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 » 16 Jun 2020 13:09

jpitped.png


Uia....
48 linhas de fonte usando produtos de pedido: jpitped->
E isso inclui as conversões.
Vou apagar jpitped a qualquer momento....

jpitped2.png
jpitped2.png (10.38 KiB) Visualizado 49883 vezes


Acho que nem precisa dizer, mas se estou mexendo em produtos de pedido, acabo mexendo em pedidos também....
pedidos vai ser o próximo, e já está meio caminho andado.

Os DBFs estão acabando.....
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 » 17 Jun 2020 13:52

UIA

jpa.png


DBF tá sendo eliminado....
Falta pouco...
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 » 17 Jun 2020 15:55

jppedido.png


O uso de JPPEDIDO tá parecendo o uso de JPITPED há 5 dias atrás.
195 ocorrências.

O chato é que estou tendo que alterar até, por exemplo, a geração de SPED Fiscal/Contribuições, sendo que nenhum cliente usa isso.
Mas ou faço isso ou apago tudo, e não quero apagar.

jppedido2.png


Nessa parte, por exemplo, só aí já elimina umas 50 ocorrências.
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 20 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