Debug do Harbour com SQL ???

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Debug do Harbour com SQL ???

Mensagem por JoséQuintas »

debug.png
E não é que aceitou...
Com aquela funçãozinha que eu tinha criado, estou executando um comando SQL no debug.

Nota:
É que a rotina vai usar vários bancos de dados.
Estou só confirmando qual o banco de dados em uso.
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

Debug do Harbour com SQL ???

Mensagem por JoséQuintas »

debug.png
Como era de se imaginar, também funciona no watchpoint.
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

Debug do Harbour com SQL ???

Mensagem por JoséQuintas »

teste.png

Código: Selecionar todos


#include "directry.ch"
#include "inkey.ch"

PROCEDURE pTESBASE

   LOCAL cEmpresa, aGeralList := {}, cTable, aTableList, oFile, nPos, aDatabaseList := {}, cnSQL := ADOLocal()

   Altd()
   WITH OBJECT cnSQL
      :Execute( "SHOW DATABASES" )
      DO WHILE ! :Eof()
         IF hb_AScan( { "sys", "schema", "josequintas", "mysql" }, { | e | e $ Lower( :String( "Database" ) ) } ) == 0
            AAdd( aDatabaseList, :String( "Database" ) )
         ENDIF
         :MoveNext()
      ENDDO
      :CloseRecordset()

      FOR EACH cEmpresa IN aDatabaseList
         :ExecuteCmd( "USE " + cEmpresa )
         aTableList := :TableList()
         FOR EACH cTable IN aTableList
            IF ( nPos := hb_AScan( aGeralList, { | e | e[ 1 ] == cTable } ) ) == 0
               AAdd( aGeralList, { cTable, {} } )
               nPos := Len( aGeralList )
            ENDIF
            AAdd( aGeralList[ nPos, 2 ], cEmpresa )
         NEXT
      NEXT
   ENDWITH
   FOR EACH oFile IN aGeralList
      IF Len( oFile[ 2 ] ) != Len( aDatabaseList )
         IF Len( oFile[ 2 ] ) < 3
            SayScroll( oFile[ 1 ] + " só tem em " + oFile[ 2 ][ 1 ] + iif( Len( oFIle[ 2 ] ) < 2, "", " " + oFile[ 2 ][ 2 ] ) )
         ELSE
            FOR EACH cEmpresa IN aDatabaseList
               IF hb_ASCan( oFile[ 2 ], cEmpresa ) == 0
                  SayScroll( oFile[ 1 ] + " falta em " + cEmpresa )
                  Inkey(1)
               ENDIF
            NEXT
         ENDIF
      ENDIF
   NEXT
   SayScroll( "Fim" )
   Inkey(0)

   RETURN
Quanto ao teste, em alguns casos melhor mostrar aonde tem, do que aonde falta.

Isso é pra ajudar a fazer uma limpa, ou pra ajustar as atualizações.
Vai ser interessante também criar uma rotina pra comparar os campos das tabelas, e procedures, e functions, e outros.
Nessas horas, só com debug mesmo pra eventuais problemas.

E sempre ficam restos de testes nos databases....
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

Debug do Harbour com SQL ???

Mensagem por JoséQuintas »

É um fonte relaticamente simples, pra quem está acostumado com array.

Crio um array com o nome de cada tabela e uma lista.

Código: Selecionar todos

AAdd( aGeralList, { cTable, {} } )
Nessa lista vou adicionando aonde a tabela aparece. - aGeralList[ nPos ][ 2 ]

Se tem em tudo, o tamanho dessa lista vai ser igual ao tamanho da lista de databases - aDatabaseList

Se estiver diferente, é porque sobra ou falta em algum.

Uso a quantidade (tamanho da lista) pra definir se estaria sobrando ou faltando.
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/
Responder