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.