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

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

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
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

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

Mensagem por sygecom »

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
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

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

Mensagem por alaminojunior »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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 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/
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

Ola Amigos,

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

Código: Selecionar todos

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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

Código: Selecionar todos

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

Código: Selecionar todos

SEEK "TACAR" , REFERE->CODIGO+TAMATR->PCS+TAMATR->TURMA+TAMATR->GRAU+STR(TABOLE->DISCIPLINA,3)
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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.

Código: Selecionar todos


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 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/
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

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:

Código: Selecionar todos

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: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem por JoséQuintas »

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 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/
claudiochaves
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 28 Jul 2017 15:48
Localização: campinas/sp

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

Mensagem por claudiochaves »

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
Responder