Clipper On Line • Ver Tópico - Erro de Memória Itens na Grid

Erro de Memória Itens na Grid

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Erro de Memória Itens na Grid

Mensagempor guanabara » 26 Mar 2013 11:17

Bom dia, tenho o código do sistema em anexo que funcionava perfeitamente até fazer uma pesquisa que carrega na grid mais de 2 milhões de itens, daí gera o erro abaixo, alguém tem alguma sugestão de como evitar este erro para que eu possa exportar o arquivo corretamente, pois to tentando desde ontem e nada consegui, minto, rodou uma vez em uma outra máquina aqui da empresa...

Application Internal Error - C:\SGF\Sgf.exe
Terminated at: 2013.03.25 15:23:30
Unrecoverable error 9006: hb_xgrab can't allocate memory
Called from GETWINDOWTEXT(0)
Called from _GETVALUE(195) in source\h_controlmisc.prg
Called from GETPROPERTY(6939) in source\h_controlmisc.prg
Called from BUSQUEDA(314) in D:\SGF1\indeferidos.prg
Called from (b)ADMINISTRADORDETIPOS(145) in D:\SGF1\indeferidos.prg
Called from _DOCONTROLEVENTPROCEDURE(5383) in source\h_windows.prg
Called from EVENTS(1946) in source\h_windows.prg
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5042) in source\h_windows.prg
Called from ADMINISTRADORDETIPOS(246) in D:\SGF1\indeferidos.prg
Called from (b)MAIN(57) in D:\SGF1\main.prg
Called from _DOCONTROLEVENTPROCEDURE(5383) in source\h_windows.prg
Called from EVENTS(1498) in source\h_windows.prg
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(5042) in source\h_windows.prg
Called from MAIN(93) in D:\SGF1\main.prg
------------------------------------------------------------------------

MAIN

#include "hmg.ch"

Function Main

///////////////////////////////////////////////////////////////////////////////
// Inicializacion RDD DBFCDX Nativo
///////////////////////////////////////////////////////////////////////////////

   REQUEST DBFCDX , DBFFPT
   RDDSETDEFAULT( "DBFCDX" )

///////////////////////////////////////////////////////////////////////////////

   SET DATE FRENCH
   SET CENTURY ON
   

 
   
*------------------------------------------------------------------------------*
*                    INICIO DO FORMULARIO DO WINDOWS
*------------------------------------------------------------------------------*
     
   DEFINE WINDOW Principal ;
      AT 0,0 ;
      WIDTH 640 ;
      HEIGHT 480 ;
      TITLE 'Sistema dos Indeferidos - Banco de Dados: 2009 - 2012' ;
      MAIN
     
     
*------------------------------------------------------------------------------*
*                             IMAGEM DE FUNDO
*------------------------------------------------------------------------------*
           
     
      DEFINE IMAGE Fundo
        ROW    0
        COL    0
        WIDTH  1390
        HEIGHT 670
        PICTURE "Fundo.jpg"
        HELPID Nil
        VISIBLE .T.
        STRETCH .T.
        ACTION Nil
    END IMAGE
     
*------------------------------------------------------------------------------*
*                             BARRA DO MENU
*------------------------------------------------------------------------------*
     
      DEFINE MAIN MENU
     
         DEFINE POPUP '&Programas'

            MENUITEM '&Sistema dos Indefiridos'   ACTION AdministradorDeTipos()
            SEPARATOR
            MENUITEM '&Sair'      ACTION EXIT PROGRAM
           
         END POPUP
         
         
         DEFINE POPUP '&Ajuda'
            MENUITEM '&Reindexar Arquivos' ACTION Reindexar()
            SEPARATOR
            MENUITEM 'Sobre' ACTION Ajuda()
         END POPUP
         
         
      END MENU
      
*------------------------------------------------------------------------------*
*                               BARRA DE STATUS
*------------------------------------------------------------------------------*
         
      DEFINE STATUSBAR
         STATUSITEM " Hacker 2013© - V. 1.1 - Banco de Dados: 2009 - 2012 "
         CLOCK
         DATE
      END STATUSBAR
     
     
*------------------------------------------------------------------------------*
*                   FIM DO FORMULARIO DO WINDOWS
*------------------------------------------------------------------------------*     
     
     

       END WINDOW

   MAXIMIZE WINDOW Principal
   ACTIVATE WINDOW Principal


*------------------------------------------------------------------------------*
*                               MENU AJUDA
*------------------------------------------------------------------------------*
   
FUNCTION AJUDA

MsgInfo ('Produzido por' + Chr(13) + Chr(10) + 'Hacker 2013© - V. 1.1', [Sobre] )

*CLOSE ALL
   
*REQUEST DBFCDX
*RDDSETDEFAULT( "DBFCDX" )
*DBUSEAREA(.T.,,"SGF.dbf","dbf",,.f.)
*SET INDEX TO "SGF.cdx"
*dbf->( OrdSetFocus(0) )

*WAIT WINDOW "Aguarde..... Convertendo Arquivos... Podendo Demorar..."  NOWAIT

*DO WHILE .NOT. EOF()
*
*           cAData = NASC
*           cDia   := SUBSTR(cAData, 7, 2)
*           cMes   := SUBSTR(cAData, 5, 2)
*           cAno   := SUBSTR(cAdata, 1, 4)
*           cNData := cDia + cMes + Cano
*           
*           cAData1 = DER
*           cDia1   := SUBSTR(cAData1, 7, 2)
*           cMes1   := SUBSTR(cAData1, 5, 2)
*           cAno1   := SUBSTR(cAdata1, 1, 4)
*           cNData1 := cDia1 + cMes1 + Cano1
*           
*           cAData2 = DTIND
*           cDia2   := SUBSTR(cAData2, 7, 2)
*           cMes2   := SUBSTR(cAData2, 5, 2)
*           cAno2   := SUBSTR(cAdata2, 1, 4)
*           cNData2 := cDia2 + cMes2 + Cano2       
*         
*           REPLACE NASC   WITH  cNData,;
*                   DER   WITH  cNData1,;
*                   DTIND  WITH  cNData2           
*    SKIP     
*ENDDO

*  CLOSE ALL
*  WAIT CLEAR

*MSGBOX ("ARQUIVOS CONVERTIDOS COM SUCESSO")

*MSGBOX(CURDIR())

RETURN

*------------------------------------------------------------------------------*

RETURN // GERAL DO MAIN - NAO APAGAR //



INDEFERIDOS

#include 'hmg.ch'

PROCEDURE AdministradorDeTipos

*------------------------------------------------------------------------------*
*                             FORMULARIO DO WINDOWS
*------------------------------------------------------------------------------*
 
   DEFINE WINDOW Win_1            ;
      AT 43,4               ;
      WIDTH 1350            ;
      HEIGHT 660            ;
      TITLE 'Sistema dos Indefiridos - By Hacker©'      ;
      MODAL            ;
      FONT 'ARIAL' SIZE 9         ;
      NOSIZE
         
*------------------------------------------------------------------------------*
*                             BANCO DE DADOS
*------------------------------------------------------------------------------*   

CLOSE ALL
   
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
DBUSEAREA(.T.,,"SGF.dbf","dbf",,.f.)

If !File("SGF.cdx")

   WAIT WINDOW "Aguarde..... Reindexando Arquivos... Podendo Demorar..."  NOWAIT
   dbf->(OrdCreate("SGF.cdx" , "Muncipio"  , "dbf->mun"  ,{|| dbf->mun } ))
   dbf->(OrdCreate("SGF.cdx" , "UF"        , "dbf->uf"   ,{|| dbf->uf  } ))
   
   WAIT CLEAR
   MsgBox( "Arquivos Reindexados com Sucesso !!!" + CHR(13) + "Continue Trabalhando..." )
   
Endif

SET INDEX TO "SGF.cdx"
dbf->( OrdSetFocus(0) )

Private aPesq:={"MUNICIPIO", "SIGLA - UF"}

*------------------------------------------------------------------------------*
*                               MODO PESQUISA
*------------------------------------------------------------------------------*
   
       DEFINE LABEL Label_ModoPesquisa
         ROW    5
         COL    20
         WIDTH  300
         HEIGHT 15
         VALUE    'Modo Pesquisa    -    Campo Pesquisa'
         FONTBOLD .T.
      END LABEL

*------------------------------------------------------------------------------*
*                      LABEL - TEXTO COMUM DO MUNICIPIO
*------------------------------------------------------------------------------*
   
      DEFINE LABEL Label_Exportando
         ROW   580
         COL   10
         VALUE    'Exportando:'
         WIDTH    70
      END LABEL
 

*------------------------------------------------------------------------------*
*                    COMBOBOX - COMBOPESQ
*------------------------------------------------------------------------------*
DEFINE COMBOBOX ComboMudaPesq
        ROW    25
        COL    20
        WIDTH  90
        HEIGHT 100
        ITEMS aPesq
        VALUE 0
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE MudaPesq(This.Value)
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        HELPID Nil
        TABSTOP .T.
        VISIBLE .T.
        SORT .F.
        ONENTER Nil
        ONDISPLAYCHANGE Nil
        DISPLAYEDIT .F.
        IMAGE Nil
        DROPPEDWIDTH 0
        ONDROPDOWN Nil
        ONCLOSEUP Nil
    END COMBOBOX
     
*------------------------------------------------------------------------------*
*                PROGRESSBAR - BARRA DE PROGRESSO DA EXPORTACAO
*------------------------------------------------------------------------------*
     
   DEFINE PROGRESSBAR BarraProgresso
        ROW    580
        COL    90
        WIDTH  1240
        HEIGHT 20
        RANGEMIN 1
        RANGEMAX 100
        VALUE 0
        TOOLTIP ""
        HELPID Nil
        VISIBLE .T.
        SMOOTH .F.
        VERTICAL .F.
        BACKCOLOR Nil
        FORECOLOR Nil
    END PROGRESSBAR

*------------------------------------------------------------------------------*
*                               BARRA DE STATUS
*------------------------------------------------------------------------------*

      DEFINE STATUSBAR
             STATUSITEM ""
      END STATUSBAR

*------------------------------------------------------------------------------*
*             TEXTBOX - GET PARA INSERIR TEXTO DAS PESQUISAS
*------------------------------------------------------------------------------*

      DEFINE TEXTBOX Text_1
         ROW      25
         COL      130
         WIDTH      600
         *ONENTER      If ( Busqueda() == .T. , ( Win_1.Grid_1.Value := 1 , Win_1.Grid_1.SetFocus ) , Nil )
         ONENTER      (If(WIN_1.BotaoPesq.Enabled, Busqueda(),))
         TOOLTIP      ' Digite aqui o que vai ser pesquisado conforme o Modo de Pesquisa. '
         UPPERCASE   .T.
      END TEXTBOX

*------------------------------------------------------------------------------*
*            BUTTON - BOTAO PARA INICIAR A PESQUISA
*------------------------------------------------------------------------------*

      DEFINE BUTTON BotaoPesq
         ROW   10
         COL   800
         WIDTH   140
         HEIGHT   50
         CAPTION "Pesquisar"
         ACTION If ( Busqueda() == .T. , ( Win_1.Grid_1.Value := 1 , Win_1.Grid_1.SetFocus ) , Nil )
     *   VISIBLE .F.
         TOOLTIP 'Pesquisar'
         FONTSIZE 9
         FONTBOLD .T.
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.
      END BUTTON
     
*------------------------------------------------------------------------------*
*            BUTTON - BOTAO PARA EXPORTAR DADOS
*------------------------------------------------------------------------------*

      DEFINE BUTTON BotaoExportar
         ROW   10
         COL   980
         WIDTH   140
         HEIGHT   50
         CAPTION "Exportar"
         ACTION If ( Exportar() == .T. , ( Win_1.Grid_1.Value := 1 , Win_1.Grid_1.SetFocus ) , Nil )
     *   VISIBLE .F.
         TOOLTIP 'Exportar para Excel'
         FONTSIZE 9
         FONTBOLD .T.
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.       
      END BUTTON     
     
*------------------------------------------------------------------------------*
*            BUTTON - ABRIR PASTA ONDE ESTÃO GRAVADOS OS ARQUIVOS
*------------------------------------------------------------------------------*

      DEFINE BUTTON BotaoPasta
         ROW   10
         COL   1160
         WIDTH   140
         HEIGHT   50
         CAPTION "Arquivos"
         ACTION Pasta()
     *   VISIBLE .F.
         TOOLTIP 'Pasta Arquivos Gravados'
         FONTSIZE 10
         FONTBOLD .T.
         FONTITALIC .F.
         FONTUNDERLINE .F.
         FONTSTRIKEOUT .F.   
      END BUTTON           
     
   
*------------------------------------------------------------------------------*
*             GRID - FORMULARIO COM OS DADOS DA PESQUISA
*------------------------------------------------------------------------------*

      DEFINE GRID Grid_1
         ROW 65
         COL 10
         WIDTH 1325         
         HEIGHT 500               
         HEADERS { 'Beneficio' , 'Nome' ,  'Municipio', 'UF', 'CPF', 'DDD', 'Telefone', 'Data Indeferimento', 'Data Nascimento' }   
         WIDTHS { 80 , 400, 300, 40, 90, 40, 100, 130, 130}         
      END GRID

   END WINDOW              // FIM DA FUNCAO FORMULÁRIO DO WINDOWS WINDOWS //
   
*------------------------------------------------------------------------------*
*                  HABILITAR E DESABILITAR OS BOTOES E MUDAR DE FOCO
*------------------------------------------------------------------------------* 

*Public nVal
 

   Win_1.ComboMudaPesq.SetFocus                                       // POSICIONAR O MOUSE NO COMBO MUDAPESQ      //
   Win_1.StatusBar.Item(1) := ' Selecione o Modo Pesquisa clicando na Seta acima e utilize as opções: Municipio ou SIGLA - UF (AC, AL, AM, AP, BA, CE, DF, ES, GO, MA, MG, MS, MT, PA, PB, PE, PI, PR, RJ, RN, RO, RR, RS, SC, SE, SP, TO). '
   Win_1.BotaoPesq.Enabled       :=.F.                               // DESABILITA O BOTAO    PESQUISA //
   Win_1.Botaoexportar.Enabled   :=.F.                               // DESABILITA O BOTAO EXPORTAR    //
   Win_1.BotaoPasta.Enabled      :=.F.                              // DESABILITA O BOTAO DA PASTA    //
   
*  nVal:=GetProperty("Win_1","ComboMudaPesq","Value")
   
*------------------------------------------------------------------------------*
*                    COMANDOS DO FORMULARIO DO WINDOWS
*------------------------------------------------------------------------------*   
   
   CENTER WINDOW Win_1
   ACTIVATE WINDOW Win_1
   
 
RETURN         // FIM DO PROCEDURE AdministradorDeTipos       //   

*------------------------------------------------------------------------------*
*                               FUNCAO MUDA PESQUISA
*------------------------------------------------------------------------------*

Function MudaPesq(nVal)

Win_1.Grid_1.DeleteAllItems
Win_1.Text_1.SetFocus                                               // POSICIONAR O MOUSE NO COMBO MUDAPESQ      //
Win_1.BotaoPesq.Enabled         :=.T.                               // HABILITA O BOTAO PESQUISA                 //
Win_1.Botaoexportar.Enabled     :=.F.                               // DESABILITA O BOTAO EXPORTAR               //
Win_1.BotaoPasta.Enabled        :=.F.                               // DESABILITA O BOTAO DA PASTA               //
Win_1.Text_1.value              := ""
Win_1.StatusBar.Item(1) := ' Digite aqui o nome do Município ou a Unidade Federativa que deseja pesquisar. '

       
Return Nil

*------------------------------------------------------------------------------*
*                             FUNCAO BUSQUEDADOS
*------------------------------------------------------------------------------*

FUNCTION Busqueda

Public RetVal := .F. , nRecCountB := 0, cIndex := "", nVal := 0
Public cProcura:=GetProperty("WIN_1","text_1","Value")     // DECLARA A VARIAVEL E GRAVA O VALOR NA VARIAVEL  //

nVal:=GetProperty("Win_1","ComboMudaPesq","Value")

dbf->( OrdSetFocus( nVal) )

   If Empty ( Win_1.Text_1.Value )
      Return
   EndIf

   Win_1.Grid_1.DeleteAllItems
   Win_1.StatusBar.Item(1) := ' Aguarde...... Localizando Registros... Podendo Demorar... '
   WAIT WINDOW "Aguarde..... Localizando Registros... Podendo Demorar..."  NOWAIT


   Do Case
   
      Case nVal = 1
     
           cIndex := "DBF->MUN"
           
     
      Case nVal = 2

           cIndex := "DBF->UF"
         
         
   Endcase
       
     
      If DbSeek(AllTrim(Win_1.Text_1.Value))

         RetVal := .T.
   

         Do While Upper(&cIndex) = AllTrim(Win_1.Text_1.Value)
            nRecCountB++
       
            Win_1.Grid_1.AddItem ( { DBF->NB , DBF->NOME, DBF->MUN, DBF->UF, DBF->CPF, DBF->DDD, DBF->TEL, DBF->DTIND, DBF->NASC } )         
           
            Skip
         EndDo

         WAIT CLEAR
         RetVal := .T.
         Win_1.StatusBar.Item(1) := AllTrim(Str(nRecCountB)) + ' - Registros Localizados com Sucesso !!! Para Gravar em Arquivo, Clique no Botão Exportar.'
         MsgInfo( AllTrim(Str(nRecCountB)) + ' - Registros   Localizados   com   Sucesso !!!   ' + Chr(13) +        ' Para Gravar em Arquivo, Clique no Botão Exportar.', [Registros Localizados])
         Win_1.BotaoExportar.Enabled:=.T.
     

      Else
     
          Win_1.StatusBar.Item(1) := ' Registros não Localizados'
         WAIT CLEAR
         MsgStop( ' R e g i s t r o s   n ã o    L o c a l i z a d o s !!! ' + Chr(13) + ;
                  ' Faça uma nova pesquisa para localizar o que deseja.', [Registros não Localizados])
                 
         Win_1.BotaoExportar.Enabled     :=.F.
         Win_1.BotaoPasta.Enabled        :=.F.                              // DESABILITA O BOTAO DA PASTA    //
         
                 
      EndIf

Return

*------------------------------------------------------------------------------*
*                          FUNCAO EXPORTACAO
*------------------------------------------------------------------------------*

Function Exportar()

PUBLIC nRecCountE := 0, AndProgresso := 0, PercProgresso := 0, CentoProgresso := 0
PUBLIC cPastaArq  := GetCurrentFolder() + "\ARQUIVOS", cPastaSgf := GetCurrentFolder()

Win_1.BotaoPasta.Enabled      :=.t.                              // DESABILITA O BOTAO DA PASTA    //

CentoProgresso  := nRecCountB / 100 
AndProgresso    := nRecCountB / 100

 
  Win_1.StatusBar.Item(1) := ' Aguarde...... Exportando ' + AllTrim(Str(nRecCountB)) + ' Registros para o arquivo: ' + cProcura + ".CSV"
  WAIT WINDOW "Aguarde..... Exportando " + AllTrim(Str(nRecCountB)) + ' Registros... Podendo Demorar...' NOWAIT
   
  SET DEFAULT TO "&cPastaArq"

        SET DEVICE TO PRINTER
        SET PRINTER TO (cProcura + ".CSV")   

            @ PROW()  ,000 SAY CHR(34) + "BENEFICIO"          + CHR(34) + ";" ;
                             + CHR(34) + "NOME"               + CHR(34) + ";" ;
                             + CHR(34) + "DATA NASCIMENTO"    + CHR(34) + ";" ;
                             + CHR(34) + "CPF"                + CHR(34) + ";" ;
                             + CHR(34) + "NIT"                + CHR(34) + ";" ;
                             + CHR(34) + "ESPECIE"            + CHR(34) + ";" ;
                             + CHR(34) + "DATA REQUERIMENTO"  + CHR(34) + ";" ;
                             + CHR(34) + "DESPACHO"           + CHR(34) + ";" ;
                             + CHR(34) + "AG.INSS CONECESSAO" + CHR(34) + ";" ;
                             + CHR(34) + "AG.INSS INDEFERIM." + CHR(34) + ";" ;
                             + CHR(34) + "MOTIVO INDEFERIM."  + CHR(34) + ";" ;
                             + CHR(34) + "MOTIVO INDEFERIM.2" + CHR(34) + ";" ;
                             + CHR(34) + "DATA INDEFERIM."    + CHR(34) + ";" ;
                             + CHR(34) + "ENDERECO"           + CHR(34) + ";" ;
                             + CHR(34) + "BAIRRO"             + CHR(34) + ";" ;
                             + CHR(34) + "CEP"                + CHR(34) + ";" ;
                             + CHR(34) + "MUNICIPIO"           + CHR(34) + ";" ;
                             + CHR(34) + "UF"                 + CHR(34) + ";" ;
                             + CHR(34) + "DDD"                + CHR(34) + ";" ;
                             + CHR(34) + "TELEFONE"           + CHR(34)
            @ PROW()+1,000 SAY ""

       
If DbSeek(AllTrim(Win_1.Text_1.Value))

         Do While Upper(&cIndex) = AllTrim(Win_1.Text_1.Value)
         
            nRecCountE++
           
         IF nRecCountE > ANDPROGRESSO         
            
             
             AndProgresso  := CENTOPROGRESSO + NRecCountE
             Win_1.BarraProgresso.value := AndProgresso / NrecCountB * 100
                     
            else
             
         ENDIF
                 
            @ PROW()  ,000 SAY CHR(34) + NB         +   CHR(34) + ";" ;
                             + CHR(34) + NOME       +   CHR(34) + ";" ;
                             + CHR(34) + NASC       +   CHR(34) + ";" ;
                             + CHR(34) + CPF        +   CHR(34) + ";" ;
                             + CHR(34) + NIT        +   CHR(34) + ";" ;
                             + CHR(34) + ESP        +   CHR(34) + ";" ;
                             + CHR(34) + DER        +   CHR(34) + ";" ;
                             + CHR(34) + DESP       +   CHR(34) + ";" ;
                             + CHR(34) + CONC       +   CHR(34) + ";" ;
                             + CHR(34) + IND        +   CHR(34) + ";" ;
                             + CHR(34) + MOTIND     +   CHR(34) + ";" ;
                             + CHR(34) + MOTINDS    +   CHR(34) + ";" ;
                             + CHR(34) + DTIND      +   CHR(34) + ";" ;
                             + CHR(34) + END        +   CHR(34) + ";" ;
                             + CHR(34) + BAIRRO     +   CHR(34) + ";" ;
                             + CHR(34) + CEP        +   CHR(34) + ";" ;
                             + CHR(34) + MUN        +   CHR(34) + ";" ;
                             + CHR(34) + UF         +   CHR(34) + ";" ;
                             + CHR(34) + DDD        +   CHR(34) + ";" ;
                             + CHR(34) + TEL        +   CHR(34)
            @ PROW()+1,000 SAY ""
           
           Skip
           
         EndDo
Endif
 
SET PRINTER TO
 
SET DEFAULT TO "&cPastaSgf"

  WAIT CLEAR
  Win_1.StatusBar.Item(1) := AllTrim(Str(nRecCountE)) + ' - Registros Exportados com sucesso para o arquivo: ' + cProcura + ".CSV" + ' - Para consultá-los clique no Botão "Arquivos".'
  MsgInfo( AllTrim(Str(nRecCountE)) + " - Registros Exportados com sucesso para o arquivo: " + Chr(13) + cProcura + ".CSV" + ' - Para consultá-los clique no Botão "Arquivos".', [Registros Exportados])
  Win_1.BarraProgresso.value := 0
  Win_1.Text_1.SetFocus   // POSICIONAR O MOUSE NO GET TEXT_1            //
 
 
Return

*------------------------------------------------------------------------------*
*                          FUNCAO BOTAO PASTA DE ARQUIVOS
*------------------------------------------------------------------------------*

Function Pasta()

RUN Explorer "&cPastaArq"

Return

*------------------------------------------------------------------------------*
*                          FUNCAO REINDEXAR
*------------------------------------------------------------------------------*

Function REINDEXAR()

CLOSE ALL
   
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
DBUSEAREA(.T.,,"SGF.dbf","dbf",,.f.)

   WAIT WINDOW "Aguarde..... Reindexando Arquivos... Podendo Demorar..."  NOWAIT
   dbf->(OrdCreate("SGF.cdx" , "Muncipio"  , "dbf->mun"  ,{|| dbf->mun } ))
   dbf->(OrdCreate("SGF.cdx" , "UF"        , "dbf->nb"   ,{|| dbf->uf  } ))
   WAIT CLEAR
   MsgBox( "Arquivos Reindexados com Sucesso !!!" + CHR(13) + "Continue Trabalhando...", [Arquivos Reindexados] )

CLOSE ALL
   
Return
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes

Erro de Memória Itens na Grid

Mensagempor guanabara » 29 Mar 2013 11:54

Revolvido, inseri o código abaixo para que na grid só carregasse até apenas 10 mil itens, pois a função do programa é para exportação e não edição, e para exportação independente da quantidade de registros não apresenta erro nenhum de memória pois não carrega a grid. Até a próxima...

 If NrecCountB < 1000
         Win_1.Grid_1.AddItem ( { DBF->NB , DBF->NOME, DBF->MUN, DBF->UF, DBF->CPF, DBF->DDD, DBF->TEL, DBF->DTIND, DBF->NASC } )         
         Endif
guanabara
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 49
Data de registro: 03 Mar 2013 17:33
Cidade/Estado: Aracatuba-SP
Curtiu: 35 vezes
Mens.Curtidas: 2 vezes




Retornar para MiniGui

Quem está online

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