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
Trocar campo MEMO por arquivo TEXTO
Moderador: Moderadores
-
evolver
- Membro Master

- Mensagens: 189
- Registrado em: 28 Ago 2004 01:02
- Localização: Cruz Alta - RS
- Contato:
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.
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.
Sergio "Evolver" Fagundes
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
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.
Um abraço,
Marcelo
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
Marcelo
-
evolver
- Membro Master

- Mensagens: 189
- Registrado em: 28 Ago 2004 01:02
- Localização: Cruz Alta - RS
- Contato:
O detalhe é que o memoedit exige confirmação do CTRL+W para gravar o arquivo e sair.
Tente o seguinte
Quando apertar F2 ele vai dar retorno 27 que é a tecla CTRl+W forçando o fechamento com salvamento.
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
Sergio "Evolver" Fagundes
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
