Página 1 de 1

Conversão campo memo DBT para SMT

Enviado: 23 Mar 2012 16:00
por marrari
Boa tarde.

Estou convertendo um sistema desenvolvido em Gaspro e preciso converter campos memo com extensão DBT para SMT. Como fazer? Tem algum utilitário/programa que faça essa conversão? Ou tem como trabalhar com os campos DBT, visto que dão erro (em se tratando de programas gerados com o Gapro).

Obrigado pela atenção.

Conversão campo memo DBT para SMT

Enviado: 23 Mar 2012 16:45
por Pablo César
O meu melhor conselho: "livre-se dos campos do tipo MEMO". Veja estas recomendações: https://pctoledo.org/forum/viewto ... mos#p72251

Conversão campo memo DBT para SMT

Enviado: 24 Mar 2012 01:03
por Jairo Maia
Olá marrari,

Existe um arquivo que vem junto com o RDD da Six que se chama MEMOCONV.PRG. Você pode compilar, e até mesmo alterar este PRG para fazer a conversão dos arquivos Memos.

Na minha opinião, o que vc deveria fazer mesmo é abandonar esse RDD DBFNSX se pretende usar Harbour ou xHarbour, salvo se você não pretende NUNCA rodar seu sistema em rede.

Harbour ou xHarbour e esse RDD não se "bicam", é problema na certa. Aliás, este fórum está farto de reclamações de [x]HB e esse RDD, e nenhuma solucionada.

PS: Após converter os arquivos Memos, não se esqueça de alterar a função EXTENSAO, e acertar para que os arquivos de textos sejam os SMT, porque para esse RDD no GASPRO é DBT, então precisa também ajustar essa função.

Conversão campo memo DBT para SMT

Enviado: 26 Mar 2012 14:19
por marrari
Colegas Pablo César e Jairo Maia,

Muito obrigado por responderem.

Jairo, quando peguei a dica (tempos atrás) para se usar o RDD DBFNSX, fiz o downolad dos arquivos necessários para se utilizar com o Gaspro. Na época, eram dois arquivos (NSX_NTX.OBJ e DBFNSX.LIB). Sendo assim, não possuo o programa que você mencionou. Onde poderia fazer o download do mesmo?

Quanto a sua observação em não usar esse RDD, vou seguir sua experiência e então fazer testes com outra, visto que o sistema a ser convertido será usado em rede. Compilando com o Exospace, nunca tive problema e a performance é muito melhor que os outros disponíveis no Gaspro. Aliás, dentre esses RDD's, qual você indica então para uso com Harbour: NTX, CDX, MDX ou NDX? No Harbour, optando por um deles, terei melhor performance que o RDD DBFNSX?

Muito obrigado pela atenção.

Conversão campo memo DBT para SMT

Enviado: 26 Mar 2012 16:29
por Pablo César
não possuo o programa que você mencionou. Onde poderia fazer o download do mesmo?
Eu encontrei o pacote SIX3 no site do Maligno: http://pub.buzinello.com/xbase/clipper/ ... _v3.02.zip

O conteúdo do arquivo MEMOCONV.PRG é:

Código: Selecionar todos

/*
ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·
º Source file: MEMOCONV.PRG                                                º
º Description: This is a simple program demonstrating how to convert       º
º              Clipper .DBT's to SIx Driver (SIXCDX) .FPT's or (SIXNSX)    º
º              .SMT's using a simple COPY TO routine.                      º
º Written by : Team SuccessWare                                            º
º Notice     : Copyright 1995 - SuccessWare 90, Inc.                       º
º                                                                          º
º                                                                          º
º  To convert from .DBTs to .FPTs using SIXCDX:                            º
º                                                                          º
º    Compile:  CLIPPER memoconv /n /w /dCDX                                º
º    Link   :  BLINKER FI memoconv @six3                                   º
º                                                                          º
º                                                                          º
º  To convert from .DBTs to .SMTs using SIXNSX:                            º
º                                                                          º
º    Compile:  CLIPPER memoconv /n /w /dNSX                                º
º    Link   :  BLINKER FI memoconv @six3                                   º
º                                                                          º
º                                                                          º
º  NOTE:  To convert from .FPT to .SMT memo files, use FPT2SMT.PRG.)       º
º                                                                          º
ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ
*/

#ifdef CDX
  #include "SIXCDX.CH"
  #define RDDNAME "SIXCDX"
  #define MEMOEXT ".FPT"
#else
  #include "SIXNSX.CH"
  #define RDDNAME "SIXNSX"
  #define MEMOEXT ".SMT"
#endif

FUNC MemoConv( cOldFile, cNewFile )

LOCAL aFile := {}

// Display a message
? "MEMOCONV - .DBT to " + MEMOEXT + " Memo File Converter"
?

// Make sure we got the correct parameters
IF ( PCOUNT() < 2 )
  ? "USAGE:  MEMOCONV <OldFile> <NewFile>"
  ?
  ? "where:  <OldFile> = Name of the database containing the memo"
  ? "                    field to convert."
  ? "        <NewFile> = New file to create."
  ?
  ? "   Ex:  MEMOCONV test test2"
  ?
  ? " NOTE:  Creates a new .DBF and " + MEMOEXT + " file, which must be"
  ?? " used together."
  Return(1)
ENDIF

cOldFile := Upper( AllTrim( cOldFile ))
cNewFile := Upper( AllTrim( cNewFile ))

IF "." $ cOldFile
  cOldFile := Left( cOldFile, at( ".", cOldFile )-1 )
ENDIF

IF "." $ cNewFile
  cNewFile := Left( cNewFile, at( ".", cNewFile )-1 )
ENDIF

IF cOldFile == cNewFile
  Alert( "ERROR: Source and destination;" +;
         "file names MUST be different!")
  Quit
ENDIF

// Check for the original file
IF !File( cOldFile + ".DBF" )
  ? "Cannot find " + cOldFile + "!"
  ?
  Return(2)
ENDIF

// Set the default RDD to the selected SIx Driver flavor
RDDSetDefault( RDDNAME )

// Open the original file (using SIXNTX)
USE (cOldFile) VIA "DBFNTX"

// Show that we're doing something
? "Working"

// Now copy to the new file (with nifty UDF)
COPY TO (cNewFile) FOR ShowDot()

// Look, we made it!
?? "Done!"
?

// Clean up before leaving
CLOSE ALL

// Compare file sizes
aFile := Directory( cOldFile + ".DBT" )
? PadR( "Old " + cOldFile + ".DBT Size",21 ) + ": "
?? Str( aFile[1,2] ) + " bytes"
aFile := Directory( cNewFile + MEMOEXT )
? PadR( "New " + cNewFile + MEMOEXT + " Size",21 ) + ": "
?? Str( aFile[1,2] ) + " bytes"
?

Return(0)

FUNC ShowDot()
  ?? "."
Return (.T.)
E para compilá-lo creio que irá precisar do SIX3.LNK:

Código: Selecionar todos

#ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸
#³ Source file: SIX3.LNK  (for use with Clipper 5.2 ONLY)                  ³Û
#³ Description: SIx 3 library overlay link script for Blinker 1.5          ³Û
#³              and above.                                                 ³Û
#³ Notice     : Copyright 1992-1995 - SuccessWare 90, Inc.                 ³Û
#³                                                                         ³Û
#³ To use this link script from the command line:                          ³Û
#³                                                                         ³Û
#³   > BLINKER FI myapp @six3.lnk                                          ³Û
#³                                                                         ³Û
#³ To use this link script from within your existing link script:          ³Û
#³                                                                         ³Û
#³   #-----------------------------------#                                 ³Û
#³   FILE myapp                                                            ³Û
#³                                                                         ³Û
#³   @six3.lnk                                                             ³Û
#³                                                                         ³Û
#³   BEGINAREA                                                             ³Û
#³     ALLOCATE extend.lib                                                 ³Û
#³   ENDAREA                                                               ³Û
#³                                                                         ³Û
#³   LIB clipper                                                           ³Û
#³   #-----------------------------------#                                 ³Û
#³                                                                         ³Û
#ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´Û
#³                                                                         ³Û
#³  IMPORTANT!!!!                                                          ³Û
#³                                                                         ³Û
#³  The SIXNSX flavor of the SIx Driver REQUIRES a 7k (7068 byte) stack,   ³Û
#³  which is burned into the SIX3.LIB file already.  If you specify your   ³Û
#³  own STACK or PROCEDURE DEPTH setting in your link script file, you     ³Û
#³  MUST insure that it is not less than 7k.  For example:                 ³Û
#³                                                                         ³Û
#³      STACK 7068                                                         ³Û
#³                                                                         ³Û
#³  -or-                                                                   ³Û
#³                                                                         ³Û
#³      BLINKER PROCEDURE DEPTH 70                                         ³Û
#³                                                                         ³Û
#³  If your application is linked with too low of a stack size, you may    ³Û
#³  get 1010 Read Errors while running your program.                       ³Û
#³                                                                         ³Û
#³  The SIXCDX and SIXNTX flavors do not require as high of a stack size,  ³Û
#³  but will also report 1010 Read Errors and/or other odd behavior if an  ³Û
#³  insufficient stack setting is set.                                     ³Û
#³                                                                         ³Û
#ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;Û
#  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


BEGINAREA

  # ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
  # Uncomment the next line ONLY if you do NOT want Mach SIx to be linked in.
  # SEARCH NOMACH6.LIB

  # ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
  # Uncomment the next line ONLY if you do NOT want MEMO support linked in.
  # FILE NOMEMO.OBJ

  # Overlay the SIx 3.0 RDD
  ALLOCATE SIX3.LIB

ENDAREA

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for VariField support.  This MODULE should be uncommented
# if you are using VariFields, but can be commented out (overlayed) if not.
# MODULE vfcore

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for DBF.  These should always be in the root.
MODULE swdbf1

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for MEMO.  Place this in the root for extra speed, but only
# if you have enough free memory.
# MODULE swmemo1

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for CDX.  These should always be in the root.
# ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
MODULE cdxcore

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Mid-level code.  Place these in the root for extra speed, but only if you
# have enough free memory.
# ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
# MODULE cdxcreat
# MODULE cdxdirec
# MODULE cdxfreel

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for NSX.  These should always be in the root.
MODULE nsxcore
MODULE nsxasm1

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Mid-level code.  Place these in the root for extra speed, but only if you
# have enough free memory.
# ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
# MODULE nsxcreat
# MODULE nsxdirec
# MODULE nsxfreel

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for NTX.  This should be in the root for speed.
MODULE ntx1

# ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
# Low-level code for ALL Drivers.  These should always be in the root.
MODULE swutil3

Conversão campo memo DBT para SMT

Enviado: 27 Mar 2012 05:03
por Jairo Maia
Olá Marrari,
marrari escreveu:Quanto a sua observação em não usar esse RDD, vou seguir sua experiência
Eu aconselho, pois ela foi desagradável. Devo dizer que minha experiência com esse RDD é parca, e ocorreu num sistema que herdei ainda em Clipper e já o usava. Em Clipper tudo sempre correu bem, mas ao migrar para o Harbour, não deu certo.
marrari escreveu:qual você indica então para uso com Harbour: NTX, CDX, MDX ou NDX?
Fora o velho e guerreiro DBFNTX, gosto de usar o DBFCDX, porém, é uma opiniao pessoal, e não sei dizer as vantagens sobre o NSX, se você terá melhor performance.

DBFCDX em relação ao DBFNTX, são apontadas algumas vantagens tais como: Índices cerca de 70% menor, Arquivos memo cerca de 30% menor, reindexação por volta de 50% mais rápida, indices seguros, apresentado poucos problemas.

NOTA:
Você precisa levar em consideração, que se você já usa esse RDD com o sistema do GASPRO, creio que a extensão DBT é apenas figurativa, e acho que o formato desses memos é DBFNSX, bastando apenas renomear para SMT. Assim, tomada a decisão em mudar para outro RDD, você terá que converter os SMT para o RDD escolhido.