Página 2 de 2

Ajuda com Minigui + SQL SERVER 2012

Enviado: 12 Nov 2019 16:39
por JoséQuintas
Minha rotina de log anterior

Código: Selecionar todos

PROCEDURE pAdminLog

   LOCAL cDbf, cnMySql := ADOClass():New( AppConexao() )

   IF AppConexao() == NIL
      IF ! AbreArquivos( "jpreguso" )
         RETURN
      ENDIF
   ELSE
      cnMySql:cSql := "SELECT * FROM JPREGUSO ORDER BY RUINFINC DESC LIMIT 5000"
      cDbf := cnMySql:SqlToDbf()
      USE ( cDbf ) ALIAS jpreguso
   ENDIF
   SELECT jpreguso
   SET ORDER TO 0
   GOTO TOP
   SKIP -15
   FazBrowse( { ;
      { "HORÁRIO",   { || Substr( jpreguso->ruInfInc, 1, 26 ) } }, ;
      { "DESCRIÇÃO", { || jpreguso->ruTexto } }, ;
      { "ARQUIVO",   { || jpreguso->ruArquivo } }, ;
      { "CÓDIGO",    { || jpreguso->ruCodigo } }, ;
      { "INFINC",    { || jpreguso->ruInfInc } } } )
   CLOSE DATABASES

   RETURN
rotina atual com ADO

Código: Selecionar todos

PROCEDURE pAdminLog

   LOCAL oTBrowse, cnMySql := ADOClass():New( AppConexao() )

   IF AppConexao() == NIL
      RETURN
   ENDIF
   WITH OBJECT cnMySql
      :cSql := "SELECT * FROM JPREGUSO ORDER BY IDREGUSO DESC LIMIT 50000"
      :Execute()
      oTBrowse := { ;
         { "HORARIO",   { || :String( "RUINFINC", 26 ) } }, ;
         { "DESCRIÇÃO", { || :String( "RUTEXTO", 100 ) } }, ;
         { "ARQUIVO",   { || :String( "RUARQUIVO", 15 ) } }, ;
         { "CÓDIGO",    { || :String( "RUCODIGO", 9 ) } }, ;
         { "RUINFINC",  { || :String( "RUINFINC", 80 ) } } }
      BrowseADO( cnMySql, oTBrowse, "RUTEXTO" )
      :CloseRecordset()
   ENDWITH

   RETURN
Reduziu de uns 10 segundos para 1 segundo...
É que ficou tão instantâneo, que aumentei de 5.000 pra 50.000 registros, como dá pra ver na rotina.
Por isso tá demorando 1 segundo kkkk