Página 1 de 1
Trocar campo MEMO por arquivo TEXTO
Enviado: 16 Mar 2005 11:02
por Zima
Olá,
Estava fazendo uma pesquisa aqui no fórum, mas não encontrei a solução.
Gostaria de trocar um campo MEMO (OBSERVAÇÃO), que tenho em um banco de dados (CLIENTES.DBF), por um arquivo texto ... É possível isso dentro do CLIPPER ?
Por exemplo: gravar um texto para determinado cliente e depois salvar em um arquivo texto. Mais tarde o usuário vai querer alterar esse texto ... vai no cliente, abre esse arquivo, modifica o texto e salva novamente ...
Sds,
Zima
Enviado: 16 Mar 2005 16:14
por evolver
Isso depende muito Zima.
Se for um arquivo separado por cliente funciona perfeito é só gravar o arquivo com um nome relativo por exemplo ao código do cliente (tipo cl000001.txt) usando o memowrit(). Depois pra ler usa o memoread().
Se for um único TXT para todos os clientes ai a coisa aperta pois tu vai ter que criar algo similar ao modo que é usado internamente ao clipper para ler arquivos memo. Para cada registro ele guarda internamente (não vísivel) a posição dentro do arquivo onde se encontra o texto para ele.
Enviado: 17 Mar 2005 10:33
por Zima
Olá Sergio,
Valeu mesmo pela dica. Agora vou ver se me livro dessa campo MEMO !
Estou trabalhando com sua primeira hipótese (1 arquivo por cliente).
Funcionou quse perfeitamente, a não ser por um detalhe que ainda não consegui entender: preciso teclar duas vezes CTRL+W para gravar no arquivo e sair da tela de edição do arquivo TXT. Veja abaixo minha rotina, e se notar onde devo alterar para resolver esse problema (teclar apenas uma vez CTRL+W), te agradeço.
Código: Selecionar todos
SAVE SCREEN
SET COLOR TO
@ 24,00 CLEAR
@ 23,01 SAY REPLICATE(CHR(205),78)
@ 10,01 SAY REPLICATE(CHR(205),78)
FOR j=8 TO 22
@ j,79 SAY CHR(186)
NEXT j
SET COLOR TO W+/RB
@ 24,50 SAY "<Ctrl>+W: Grava <Esc> Aborta"
SET COLOR TO BG+
@ 07,01 SAY " Código Filial Nome do Cliente CNPJ/CPF"
DO Aviso WITH 23,"Dados Complementares do Cliente"
SET COLOR TO
cString = MEMOREAD("Teste.txt")
KEYBOARD CHR(30)
SET CURSOR ON
MEMOWRIT("Teste.txt",MEMOEDIT(cString,11,02,22,77,.T.,"Mfunc"))
SET CURSOR OFF
RESTORE SCREEN
FUNCTION Mfunc
***************************************************************************
* Sintaxe...: Mfunc(modo,lin,col)
* Objetivo..: Auxiliar a edição de campos memo, mostrando a linha e a coluna
* onde está posicionado o cursor através da função MEMOEDIT().
* Parâmetros: modo: o modo de operação da função MEMOEDIT()
* lin : a linha onde est posicionado o cursor
* col : a coluna onde est posicionado o cursor
***************************************************************************
PARAMETERS modo, lin, col
ret_val = 0
IF modo = 0
* idle
SET COLOR TO W+
@ 24,00 SAY "Linha:"+STR(lin,3)
@ 24,10 SAY "Coluna:"+STR(col,3)
SET COLOR TO
ENDIF
RETURN ret_val
Um abraço,
Marcelo
Enviado: 17 Mar 2005 13:19
por evolver
O detalhe é que o memoedit exige confirmação do CTRL+W para gravar o arquivo e sair.
Tente o seguinte
Código: Selecionar todos
FUNCTION Mfunc
PARAMETERS modo, lin, col
ret_val = 0
// alterado aqui
if lastkey() = K_F2
return 27
endif
//fim da alteração
IF modo = 0
* idle
SET COLOR TO W+
@ 24,00 SAY "Linha:"+STR(lin,3)
@ 24,10 SAY "Coluna:"+STR(col,3)
SET COLOR TO
ENDIF
RETURN ret_val
Quando apertar F2 ele vai dar retorno 27 que é a tecla CTRl+W forçando o fechamento com salvamento.