Clipper On Line • Ver Tópico - Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 13 Ago 2019 13:53

pauloa1 escreveu:Claudio!

Já te adianto que se usar BD e continuar usando comandos como seek, replace etc... algumas rotinas vão ficar ainda mais lentas.
Aos poucos você deve ir mudando pra comandos em SQL.
Mas depois de conseguir isso, o salto em velocidade etc.. é gigante.

Paulo


Oi Paulo, com certeza. Tem que mudar a mentalidade, dbf é de um jeito sql é outro. Minha maior duvida com relação a isto são os procedimentos de multiplos registros, ainda não sei como farei. Tenho rotinas de calculo que pego um registro, faço o calculo e em seguida o replace. Terei que estudar como fazer via update, mas tudo na vida tem solução. Eu chego lá.

Obrigado pela dica, grande abraço
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor sygecom » 19 Ago 2019 19:16

Claudio,
A primeira atitude de mudar para SQL já está ótimo, com o tempo vai ver que foi uma ótima escolha, mesmo com algumas complexidade com você citou.

Qualquer coisa posta como usa em DBF que tentamos ajudar transformando em SQL.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 09 Dez 2019 10:33

Obrigado Leonardo, vou postar sim. Estou tendo que fazer uns ajustes no meus códigos para ficar mais "clean", assim que melhorar eles peço ajuda. abraços
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 12:54

Só lembrando:

Usar DBF fica preso à RDD em uso: DBF/NTX, DBF/CDX, SIX/CDX, software simultâneo, etc.

Usar por comandos SQL não fica preso a nada.
Pode executar comandos SQL no mesmo aplicativo usando SQLRDD ou outra LIB/componente.
Isso permite uma migração de qualquer parte do aplicativo a qualquer momento.

Lógico... o pessoal pode conseguir complicar e impedir isso... nunca se sabe.

Mas o fato de poder fazer parcialmente pode facilitar muito a migração.
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor alaminojunior » 09 Dez 2019 13:26

JoséQuintas escreveu:Mas o fato de poder fazer parcialmente pode facilitar muito a migração.


Esse foi O motivo de ter aderido ao SQLRDD, que aliás devo muito ao Leonardo Sygecom.
Uso até hoje, pois certas partes do sistema ainda usam a boa e velha sintaxe DBF.
No nosso carro chefe aqui 90% usa as funções SQLRDD para acesso ao banco e o restante ainda está em comandos e funções DBF.
Nesse caso, necessita de alguns cuidados, mas tudo muito tranquilo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1689
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 27 vezes
Mens.Curtidas: 11 vezes

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 13:58

alaminojunior escreveu:Esse foi O motivo de ter aderido ao SQLRDD, que aliás devo muito ao Leonardo Sygecom.Uso até hoje, pois certas partes do sistema ainda usam a boa e velha sintaxe DBF.


Não entendeu. Estou dizendo sobre a migração pra SAIR do SQLRDD, e não sobre a migração pra entrar nele.
Se apenas executa comandos SQL, tanto faz a RDD.

Aqui gostei da gravação dupla DBF+MySQL - tem pouco fonte que grava, e muito fonte que faz leitura.
Altera-se rápido pra gravar, e depois é só ir eliminando leitura de DBF.
Para os poucos usados, altera direto pra MySQL e pronto.
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 09 Dez 2019 14:51

Ola Amigos,

Estou fazendo isto, migrando aos poucos para sql, assim ganho outros recursos e integrações.
Tenho por exemplo este codigo:

select("TABOLE")
SEEK REFERE->CODIGO
WHILE ! EOF()
   IF TABOLE->REFERENCIA=REFERE->CODIGO            
      SELECT("TASITP")
      SEEK TABOLE->SIT_AR
      IF ! EOF()
         IF TASITP->CALCULO$"XS"
            SELECT("TAMATR")
            SEEK STR(TABOLE->ALUNO,6)+TABOLE->REFERENCIA+STR(TABOLE->ITEM,3)
            IF ! EOF()
               SELECT("TASIF")
               SEEK TAMATR->SIT_FIN
               IF TASIF->ESCOLHE="S"
                  SELECT("TAVAG")
                  SEEK TAMATR->REFERENCIA+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU
                  IF TAVAG->ESCOLHE="S"
                     SELECT("TABOLE")
                     REGLOCK()
                     ********
                     IF TASITP->CALCULO="S"
                        SEEK "TACAR" , REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
                        IF ! EOF()   
                           SELECT("TABOLE")
                           *' Calculo 1
                              IF TACAR->R_NOTA = "S"
                                 _DIV := 3
                                 VR_SOMA:=MH(TABOLE->N_1)+MH(TABOLE->N_2)+MH(TABOLE->N_3)+MH(TABOLE->N_4)
                                 TABOLE->MEDIA_AR:=AR14B_NOTA( STR( CHK_DIV( VR_SOMA , _DIV ) ,5,2 ) )
                                 IF VAL(TABOLE->MEDIA_AR) > 5.9
                                    TABOLE->SIT_AR := "1"
                                 ELSE
                                    TABOLE->SIT_AR := "2"
                                 ENDIF
                              ENDIF            
                           *' Calculo 2
                              IF TACAR->R_FALTA = "S"
                                 TABOLE->F_T := STR(MH(TABOLE->F_1)+MH(TABOLE->F_2)+MH(TABOLE->F_3)+MH(TABOLE->F_4),3)
                                 VR_FREQ := VAL(TABOLE->F_T)*100
                                 IF VR_FREQ <> 0
                                    IF ( 100 - CHK_DIV(VR_FREQ,TACAR->TACAR) )>0
                                       TABOLE->FREQ:=100 - ( CHK_DIV( VR_FREQ,TACAR->TACAR) )
                                    ELSE
                                       TABOLE->FREQ:=0.00
                                    ENDIF
                                 ELSE
                                    TABOLE->FREQ:=100.00
                                 ENDIF
                                 if TABOLE->FREQ >= 75
                                    IF TABOLE->SIT_AR <> "2"
                                       TABOLE->SIT_AR := "1"
                                    ENDIF
                                 Else
                                    TABOLE->SIT_AR := "2"
                                 Endif
                              ENDIF
                              TABOLE->SIT_PR:=TABOLE->SIT_AR
                        ENDIF   
                     ELSE
                        IF MH(TABOLE->REC) > MH(TABOLE->MEDIA_AR)
                           TABOLE->MEDIA_PR := TABOLE->REC
                        ELSE
                           TABOLE->MEDIA_PR := TABOLE->MEDIA_AR
                        ENDIF
                        IF VAL(TABOLE->MEDIA_PR) > 5.9
                           TABOLE->SIT_PR := "1"
                        ELSE
                           TABOLE->SIT_PR := "3"
                        ENDIF
                     ENDIF
                     SELECT("TABOLE")
                     UNLOCK
                  ENDIF
               ENDIF
            ENDIF
         ENDIF
      ENDIF
   ENDIF
   SELECT("TABOLE")
   SKIP+1
ENDDO


No caso percorro cada registro da TABOLE, e localizo em outras tabelas os registros que contem as informações para então voltar para TABOLE e fazer as contas.
Se fosse em sql, para fazer um update na minha tabela TABOLE ela teria que conter os dados das outras tabelas ou seria tudo feito usando do inner join?

Agradeço as dicas para entendimento do melhor rumo, abraços.
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 15:30

Codigozinho do carvalho.... rs
Primeiro é reduzir esse fonte que tem muito fonte, e perde tempo à toa.
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 15:39

Assim fica mais visível o que está atualizando, apesar de ter mais fonte:

select("TABOLE")
SEEK REFERE->CODIGO
DO WHILE TABOLE->REFERENCIA=REFERE->CODIGO .AND. ! Eof()
   SELECT("TASITP")
   SEEK TABOLE->SIT_AR
   IF Eof()
      SELECT tabole
      SKIP
      LOOP
   ENDIF
   IF ! TASITP->CALCULO$"XS"
      SELECT tabole
      SKIP
      LOOP
   ENDIF
   SELECT("TAMATR")
   SEEK Str(TABOLE->ALUNO,6)+TABOLE->REFERENCIA+STR(TABOLE->ITEM,3)
   IF Eof()
      SELECT tabole
      SKIP
      LOOP
   ENDIF
   SELECT("TASIF")
   SEEK TAMATR->SIT_FIN
   IF ! TASIF->ESCOLHE="S"
      SELECT tabole
      SKIP
      LOOP
   ENDIF
   SELECT("TAVAG")
   SEEK TAMATR->REFERENCIA+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU
   IF ! TAVAG->ESCOLHE="S"
      SELECT tabole
      SKIP
      LOOP
   ENDIF
   SELECT("TABOLE")
   REGLOCK()
   IF TASITP->CALCULO="S"
      SEEK "TACAR" , REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
      IF ! Eof()
         SELECT("TABOLE")
         *' Calculo 1
         IF TACAR->R_NOTA = "S"
            _DIV := 3
            VR_SOMA:=MH(TABOLE->N_1)+MH(TABOLE->N_2)+MH(TABOLE->N_3)+MH(TABOLE->N_4)
            TABOLE->MEDIA_AR:=AR14B_NOTA( Str( CHK_DIV( VR_SOMA , _DIV ) ,5,2 ) )
            IF Val(TABOLE->MEDIA_AR) > 5.9
               TABOLE->SIT_AR := "1"
            ELSE
               TABOLE->SIT_AR := "2"
            ENDIF
         ENDIF
         *' Calculo 2
         IF TACAR->R_FALTA = "S"
            TABOLE->F_T := Str(MH(TABOLE->F_1)+MH(TABOLE->F_2)+MH(TABOLE->F_3)+MH(TABOLE->F_4),3)
            VR_FREQ := Val(TABOLE->F_T)*100
            IF VR_FREQ <> 0
               IF ( 100 - CHK_DIV(VR_FREQ,TACAR->TACAR) )>0
                  TABOLE->FREQ:=100 - ( CHK_DIV( VR_FREQ,TACAR->TACAR) )
               ELSE
                  TABOLE->FREQ:=0.00
               ENDIF
            ELSE
               TABOLE->FREQ:=100.00
            ENDIF
            IF TABOLE->FREQ >= 75
               IF TABOLE->SIT_AR <> "2"
                  TABOLE->SIT_AR := "1"
               ENDIF
            ELSE
               TABOLE->SIT_AR := "2"
            ENDIF
         ENDIF
         TABOLE->SIT_PR:=TABOLE->SIT_AR
      ENDIF
   ELSE
      IF MH(TABOLE->REC) > MH(TABOLE->MEDIA_AR)
         TABOLE->MEDIA_PR := TABOLE->REC
      ELSE
         TABOLE->MEDIA_PR := TABOLE->MEDIA_AR
      ENDIF
      IF Val(TABOLE->MEDIA_PR) > 5.9
         TABOLE->SIT_PR := "1"
      ELSE
         TABOLE->SIT_PR := "3"
      ENDIF
   ENDIF
   SELECT("TABOLE")
   UNLOCK
   SELECT("TABOLE")
   SKIP
ENDDO


Apesar que chega nesta parte e..... algo estranho aparece...

SEEK "TACAR" , REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 16:02

Em último caso, elimina arquivos abertos, pega o que interessa, e faz o update de cada campo....
Faltam informações, além do troço ser doido.


SELECT
ALUNO, REFERENCIA, ITEM, DISCIPLINA, N_1, N_2, N_3, N_4, MEDIA_AR, MEDIA_PR,
SIT_AR, F_1, F_2, F_3, F_4, REC, F_T, FREQ
TASITP.CALCULO AS TASITP_CALCULO,
TAMATR.SIT_FIN AS TAMATR_SITFIN,
TASIF.ESCOLHE AS TASIF_ESCOLHE,
TAVAG.ESCOLHE AS TAVAG_ESCOLHE
FROM TABOLE
INNER JOIN TASITP ON TABOLE.SIT_AR = TAITP.???
INNER JOIN TAMATR ON TABOLE.ALUNO = TAMATR.??? AND TABOLE.REFERENCIA = TAMATR.??? AND TABOLE.ITEM = TAMATR.???
INNER JOIN TASIF ON TAMATR.SIT_FIN=TASIF.???
INNER JOIN TAVAG ON TAMATR.REFERENCIA = TAVAG.??? AND TAMATR.PCS=TAVAG.??? AND TAMATR.TURMA=TAVAG.??? AND TAMATR.GRAU=TAVAG.???
WHERE
TASITP.CALCULO IN ( 'X', 'S' )
AND TASIF.ESCOLHE = 'S'
AND TAVAG.ESCOLHE = 'S'

DO WHILE ! Eof()
   REGLOCK()
   IF TASITP_CALCULO="S"
      SEEK "TACAR" , REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
      IF ! Eof()
         SELECT("TABOLE")
         *' Calculo 1
         IF TACAR->R_NOTA = "S"
            _DIV := 3
            VR_SOMA:=MH(TABOLE->N_1)+MH(TABOLE->N_2)+MH(TABOLE->N_3)+MH(TABOLE->N_4)
            TABOLE->MEDIA_AR:=AR14B_NOTA( Str( CHK_DIV( VR_SOMA , _DIV ) ,5,2 ) )
            IF Val(TABOLE->MEDIA_AR) > 5.9
               TABOLE->SIT_AR := "1"
            ELSE
               TABOLE->SIT_AR := "2"
            ENDIF
         ENDIF
         *' Calculo 2
         IF TACAR->R_FALTA = "S"
            TABOLE->F_T := Str(MH(TABOLE->F_1)+MH(TABOLE->F_2)+MH(TABOLE->F_3)+MH(TABOLE->F_4),3)
            VR_FREQ := Val(TABOLE->F_T)*100
            IF VR_FREQ <> 0
               IF ( 100 - CHK_DIV(VR_FREQ,TACAR->TACAR) )>0
                  TABOLE->FREQ:=100 - ( CHK_DIV( VR_FREQ,TACAR->TACAR) )
               ELSE
                  TABOLE->FREQ:=0.00
               ENDIF
            ELSE
               TABOLE->FREQ:=100.00
            ENDIF
            IF TABOLE->FREQ >= 75
               IF TABOLE->SIT_AR <> "2"
                  TABOLE->SIT_AR := "1"
               ENDIF
            ELSE
               TABOLE->SIT_AR := "2"
            ENDIF
         ENDIF
         TABOLE->SIT_PR:=TABOLE->SIT_AR
      ENDIF
   ELSE
      IF MH(TABOLE->REC) > MH(TABOLE->MEDIA_AR)
         TABOLE->MEDIA_PR := TABOLE->REC
      ELSE
         TABOLE->MEDIA_PR := TABOLE->MEDIA_AR
      ENDIF
      IF Val(TABOLE->MEDIA_PR) > 5.9
         TABOLE->SIT_PR := "1"
      ELSE
         TABOLE->SIT_PR := "3"
      ENDIF
   ENDIF
  MoveNext()
ENDDO
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 09 Dez 2019 16:37

Ola Quintas,

Obrigado pela contribuição. Eu fiz daquela forma para poupar codigo, é bom saber que poupar codigo nem sempre poupa processamento. Vou implementar algumas mudanças.

O código é bem antigo, da epóca do carvalho....kkkkk

Aquele trecho que pareceu estranho, o código esta copiado errado, trecho é assim:

Select("TACAR" )
seek REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 09 Dez 2019 16:47

Ola,

Estava vendo a sugestão do Quintas, vou precisar mudar o conceito no caso desta rotina e de outras que tenho.
Com o dbf a consulta e update podem ser concomitantes. No caso em SQL, primeiro terei de carregar o que vou trabalhar e depois fazer um update.
Já percebi que tenho que analisar cada rotina para migrar para uso do SQL.

Agradeço a ajuda, abraços
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 16:57

claudiochaves escreveu:Obrigado pela contribuição. Eu fiz daquela forma para poupar codigo, é bom saber que poupar codigo nem sempre poupa processamento


Não é questão de processamento.
No editor de texto, pra cada IF gigante... precisa às vezes ficar paginando fonte pra encontrar o ELSE ou ENDIF.
Com a alteração, no IF pequeno já fica visível que tem registro sendo pulado.

Se vai demorar mais ou não... isso nem importa...
É importante o fonte ficar fácil pra fazer manutenção.
Até pra converter pra comando SQL... acaba facilitando também..

claudiochaves escreveu:Estava vendo a sugestão do Quintas, vou precisar mudar o conceito no caso desta rotina e de outras que tenho.
Com o dbf a consulta e update podem ser concomitantes. No caso em SQL, primeiro terei de carregar o que vou trabalhar e depois fazer um update.
Já percebi que tenho que analisar cada rotina para migrar para uso do SQL.


Pra cada situação uma solução.
Começa reduzindo pra comando SQL, e com o tempo talvez até encontre uma forma de atualizar tudo num único comando.

Lembrando:
Ainda sou principiante, estou começando a usar esse "algo mais". provavelmente dá pra criar uma função ou algo parecido pra fazer essa atualização num único comando.
Vou pesquisando conforme preciso de algum "algo mais".
E por enquanto, como estou na gravação duplicada de DBF+MySQL, mais limitado.

Importante:
Mesmo que esse SELECT esteja pegando informações de várias tabelas, vai ser muuuuuuito mais rápido do que trabalhar com DBF.
No DBF, vai trabalhar com a ficha COMPLETA do aluno, enquanto nesse comando vai usar somente os campos que interessam.
Isso faz muuuuuuita diferença na rede, por isso é mais rápido do que trabalhar registro a registro com DBF.
Se considerar que nem precisa dos nomes dos alunos, endereço, etc.... só esses campos a menos já vai dar alguns megabytes de informação a menos pela rede.
E junte a isso os registros que estão sendo filtrados... menos informação ainda do que em DBF.

É nisso que vai começar a enxergar a vantagem do SQL !!!
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor JoséQuintas » 09 Dez 2019 17:15

claudiochaves escreveu:No caso em SQL, primeiro terei de carregar o que vou trabalhar e depois fazer um update


Não.
Pode usar um comando pra atualizar direto, sempre que necessário.
Também pode criar funções NO MYSQL, junto ao banco de dados, e usar nos comandos.

É que sua rotina é muito específica, cabe a você quebrar a cabeça pra encontrar a melhor saída.
Pode fazer essa como quebra-galho, até encontrar a que atualize tudo de uma vez pelo próprio comando.
Conforme for aprendendo mais, vai revisando o que fez antes.
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

Alguém usa SQLRDD com Xharbour 1.2.3 free com sucesso?

Mensagempor claudiochaves » 09 Dez 2019 17:19

JoséQuintas escreveu:Não é questão de processamento.
No editor de texto, pra cada IF gigante... precisa às vezes ficar paginando fonte pra encontrar o ELSE ou ENDIF.
Com a alteração, no IF pequeno já fica visível que tem registro sendo pulado.

Se vai demorar mais ou não... isso nem importa...
É importante o fonte ficar fácil pra fazer manutenção.
Até pra converter pra comando SQL... acaba facilitando também..


Grande verdade, manutenção fica horrível mesmo. Agora que uso o notepad++ facilitou , mas antes era dificil.

JoséQuintas escreveu:Pra cada situação uma solução.
Começa reduzindo pra comando SQL, e com o tempo talvez até encontre uma forma de atualizar tudo num único comando.

Lembrando:
Ainda sou principiante, estou começando a usar esse "algo mais". provavelmente dá pra criar uma função ou algo parecido pra fazer essa atualização num único comando.
Vou pesquisando conforme preciso de algum "algo mais".
E por enquanto, como estou na gravação duplicada de DBF+MySQL, mais limitado.

Importante:
Mesmo que esse SELECT esteja pegando informações de várias tabelas, vai ser muuuuuuito mais rápido do que trabalhar com DBF.
No DBF, vai trabalhar com a ficha COMPLETA do aluno, enquanto nesse comando vai usar somente os campos que interessam.
Isso faz muuuuuuita diferença na rede, por isso é mais rápido do que trabalhar registro a registro com DBF.
Se considerar que nem precisa dos nomes dos alunos, endereço, etc.... só esses campos a menos já vai dar alguns megabytes de informação a menos pela rede.
E junte a isso os registros que estão sendo filtrados... menos informação ainda do que em DBF.

É nisso que vai começar a enxergar a vantagem do SQL !!!


Não tinha pensado nestes pontos. Como é importante esta troca de experiencias. Realmente trafegar somente as colunas que interessam diminui consumo e ganha velocidade de processamento.
Algumas tabelas que não sofrem mudanças, servem somente para consulta, eu faço um cache local e gerencio este cache, renovando quando tem alteração. Com este recurso ganhei muita performance.
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Anterior Próximo



Retornar para Banco de Dados

Quem está online

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