Exportando DBF (exemplo)

Esta rotina faz parte de um sistema beta para acesso a tabela DBF com driver DBFCDX, enfim vamos falar  do módulo e não do sistema em si, o módulo faz a exportação da estrutura de uma tabela aberta e também de todos os seus registros, apartir de uma lista com os campos (fields) da tabela, vamos clicando e colando na grade ao lado a estrutura da nova tabela, podemos colocar campos em branco e também modificar nome atual de um campo para um novo nome, após todo este preenchimento, você apenas clica sobre o botão para exportar e o módulo gera a nova tabela com a nova estrutura e os dados da tabela anterior, abaixo o código fonte do botão exportar.

Espero que seja útil para vocês, ou pelo menos que dê para olhar o código e daí aproveitar algo nos programa que vocês estiverem fazendo.


#include "hmg.ch"

declare window export

Function export_button_export_action
LOCAL cFile, aStructCreate := {}, aStructExport := {}

   cFile := ALLTRIM( GETPROPERTY("export","text_file","VALUE") )

   IF EMPTY(cFile)
      SETPROPERTY("export","text_file","SETFOCUS")
   ENDIF

   IF FILE(cFile)
      MSGSTOP("File found, change file  name!"+CHR(13)+CHR(10)+cFile,"DBF Editor")
      SETPROPERTY("export","text_file","SETFOCUS")
   ENDIF      

   nItemCount := GETPROPERTY("export","grid_export","ItemCount")

   FOR nAux := 1 TO nItemCount
      aExport := GETPROPERTY("export","grid_export","ITEM", nAux )
      AADD( aStructCreate, { aExport[2], aExport[3], VAL(aExport[4]), VAL(aExport[5]) } )
      AADD( aStructExport, aExport[1] )
   NEXT

   DBCREATE( cFile, aStructCreate ) 

   DBUSEAREA(.t.,,cFile,"temp",.f.)

   SELECT dbf

   DBGOTOP()

   SETPROPERTY("export","progressbar_export","rangemax",LASTREC())

   WHILE !EOF()
      SELECT temp
      temp->( DBAPPEND() )

      FOR nAux := 1 TO LEN(aStructExport)
         IF !EMPTY(aStructExport[nAux]) .AND. !EMPTY(aStructCreate[nAux,1])
            SELECT dbf
            xVar := dbf->&(aStructExport[nAux])
            SELECT temp
            REPLACE temp->&(aStructCreate[nAux,1]) WITH xVar
            temp->( DBCOMMIT() )
         ENDIF
      NEXT   

      SELECT dbf
      SETPROPERTY("export","progressbar_export","VALUE",RECNO())
      DBSKIP(+1)
   ENDDO

   SELECT temp

   temp->( DBCLOSEAREA() )

   MSGINFO("Table Struct anda Data exported!","DBF Editor")   

   DOMETHOD( "export","RELEASE" )

Return Nil

Esse código possui dependência do restante de um sistema, foi postado aqui a pedido de visitantes para fins apenas de estudo, (modelo) então é óbvio que não pode apenas ser compilado, pois não irá funcionar. Porém espero que sirva como base para algum projeto que você esteja fazendo.

Ate+

Esta entrada foi publicada em Harbour MiniGUI, Programação. Adicione o link permanente aos seus favoritos.

Uma resposta para Exportando DBF (exemplo)

  1. Qatan disse:

    Daniel, onde faço o download deste interessante utilitário?

    Obrigado.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s