Preencher RICHEDIT com dados do dbf
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Preencher RICHEDIT com dados do dbf
Caros tenho um banco de dados de visita para clientes, nele o vendedor diz o q
fez no cliente e etc... a estrutura do dbf eh:
visita01:=Space(250) ateh visita10:=Space(250)
Como eu faco para preencher o RICHEDIT com os dados do dbf ?
Marcos Roberto.
@ 19,334 RICHEDIT oRichedit1 TEXT vRichedit1 SIZE 967,293 STYLE ES_MULTILINE
+ES_WANTRETURN +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL
fez no cliente e etc... a estrutura do dbf eh:
visita01:=Space(250) ateh visita10:=Space(250)
Como eu faco para preencher o RICHEDIT com os dados do dbf ?
Marcos Roberto.
@ 19,334 RICHEDIT oRichedit1 TEXT vRichedit1 SIZE 967,293 STYLE ES_MULTILINE
+ES_WANTRETURN +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL
Marcos Roberto
NetService Software
NetService Software
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: Preencher RICHEDIT com dados do dbf
Ola!
Alias depois analizando é mais economico usar da forma como esta ai em cima mas ser for da sua maneira é:
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
vCl21 := cl->observacao //Campo Memo.
@ 005,335 say "Observação:" Size 80,20 Transparent
@ 075,330 Get oCl21 Var vCl21 size 320,100 STYLE ES_MULTILINE +ES_AUTOVSCROLL +WS_VSCROLL +ES_WANTRETURN ;
TOOLTIP "Observação sobre o cliente."
//ou
@ 19,334 RICHEDIT oCl21 TEXT vCl21 SIZE 967,293 STYLE ES_MULTILINE+;
ES_WANTRETURN +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL
Código: Selecionar todos
xTexto := fieldObs01+FieldObs02+...
// até a 10. Seu DBF vai ficar enorme, porque cada uma tem 250 caracteres. Com o campo memo vai ficar menor e com limite de obervação maior.
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Preencher RICHEDIT com dados do dbf
Primeiro Obrigado pela dica, mas eu nao optei pelo campo memo pela falta de confianca nele, jah tive experiencias negativas com esse campo. Ele nao eh de conficanca 
Marcos Roberto.
Marcos Roberto.
Marcos Roberto
NetService Software
NetService Software
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Preencher RICHEDIT com dados do dbf
Pq quando tento gravar o campo RICHEDIT a var estah vindo vazia?
Estou usando assim:
Estou usando assim:
Código: Selecionar todos
@ 8,319 RICHEDIT oDescrVisita TEXT vDescrVisita SIZE 692,269 ;
STYLE ES_MULTILINE +ES_WANTRETURN +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL ;
FONT HFont():Add( 'Courier New',0,-13,400,,,)
@ 715,550 BUTTON oButton7 CAPTION "Salvar Visita" ON CLICK {||SalvarVisita()} SIZE 150,30 STYLE WS_TABSTOP
Static Function SalvarVisita()
Local Areant:=Select()
Select 68
Do while .t.
If travarqivo(5)
dbappend()
Replace CodVis with LastRec()+1
Replace CodCli with Clientes->Codigo
Replace NomCli with Clientes->Nome
Replace DataVis with Date()
Replace Cod_Vend with Clientes->CodVend
Replace Nom_Vend with Clientes->NomVend
Replace Visita01 with SubStr(vDescrVisita,1,250)
Replace Visita02 with SubStr(vDescrVisita,251,250)
Replace Visita03 with SubStr(vDescrVisita,501,250)
Replace Visita04 with SubStr(vDescrVisita,751,250)
Replace Visita05 with SubStr(vDescrVisita,1001,250)
Replace Visita06 with SubStr(vDescrVisita,1251,250)
Replace Visita07 with SubStr(vDescrVisita,1501,250)
Replace Visita08 with SubStr(vDescrVisita,1751,250)
Replace Visita09 with SubStr(vDescrVisita,2001,250)
Replace Visita10 with SubStr(vDescrVisita,1251,250)
DbUnlock()
MsgInfo("Visita salva com sucesso!!!")
Else
Loop
Endif
Exit
Enddo
Return .T.
Marcos Roberto
NetService Software
NetService Software
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Preencher RICHEDIT com dados do dbf
Deu certo com a dica do Fernando segue a dica abaixo:
oDescrVisita:GetText()
vDescrVisita := oDescrVisita:GetText()
Marcos Roberto.
oDescrVisita:GetText()
vDescrVisita := oDescrVisita:GetText()
Marcos Roberto.
Marcos Roberto
NetService Software
NetService Software
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Re: Preencher RICHEDIT com dados do dbf
pra ficar melhor ainda, vc poderia criar um outro DBF com
cod_cli
cod_vis
linha C 5 (00001, 00002, 00003) seuqincial para saber qual a posicao da linha
visita C 250
assim vc otimiza mais e ainda pode escrever quantas linhas quiser ...
cod_cli
cod_vis
linha C 5 (00001, 00002, 00003) seuqincial para saber qual a posicao da linha
visita C 250
assim vc otimiza mais e ainda pode escrever quantas linhas quiser ...
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Re: Preencher RICHEDIT com dados do dbf
Olá,
Porque você não grava em um arquivo externo, texto identificado assim cccaaaammdd.txt onde ccc = código do cliente, aaaa = ano do cadastro, mm = mes do cadastro e dd = dia do cadastro.
Usa o fileseek para localizar o arquivo e memoread para ler o arquivo. A vantagem é que você vai ter somente os arquivos onde houverem observações.
Ex.
No seu dbf deve ter o código do cliente que é único:
cCod:=DBF->Cod_Cli
Localiza o arquivo:
No final você gera o arquivo ou sobrepoe o existente.
Eu aconselho fortemente a não usar campo memo.
[]´s
Porque você não grava em um arquivo externo, texto identificado assim cccaaaammdd.txt onde ccc = código do cliente, aaaa = ano do cadastro, mm = mes do cadastro e dd = dia do cadastro.
Usa o fileseek para localizar o arquivo e memoread para ler o arquivo. A vantagem é que você vai ter somente os arquivos onde houverem observações.
Ex.
No seu dbf deve ter o código do cliente que é único:
cCod:=DBF->Cod_Cli
Localiza o arquivo:
Código: Selecionar todos
cFile:=FileSeek(cCod*.txt)
cObsCli:=Space(250)
if !empty(cFile)
cObsCli:=Memoread(cFile)
Endif
@ 8,319 RICHEDIT oDescrVisita TEXT cObsCli SIZE 692,269 ;
STYLE ES_MULTILINE +ES_WANTRETURN +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL ;
FONT HFont():Add( 'Courier New',0,-13,400,,,)
.
.
.
Eu aconselho fortemente a não usar campo memo.
[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Re: Preencher RICHEDIT com dados do dbf
Eu tb sempre soube que campos memo davam problemas, mas na verdade nunca usei. Pra tirar a prova dos 9 fiz o seguinte: implementei um campo memo no meu sistema ontem para pode testar e ver se isso é verdade ou apenas lenda urbana...
estou usando dbf/cdx e o arquivo memo é um FPT...
já está em produçäo... assim que tiver os feedbacks vou postanto aqui
abcs
estou usando dbf/cdx e o arquivo memo é um FPT...
já está em produçäo... assim que tiver os feedbacks vou postanto aqui
abcs
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Re: Preencher RICHEDIT com dados do dbf
Detectei um contra tempo que näo chega a ser um problema:
Estou com meus arquivos DBFs e meu FPT na pasta, se eu pegar apena os DBFs do meu cliente (näo o FPT) e copiar para a minha pasta de desenvolvimento, o xharbour acusa erro de índice corrompido quando tento ler o campo memo, ou seja, eu tenho que ter sempre o FPT correspondente ao DBF que estava sendo usado.
Só consegui fazer funcionar novamente o sistema apagando a coluna do campo memo e criando ela novamente, ai foi regenerado o meu FPT.
Acredito näo ser um grande problema, pois basta apenas tomarmos o cuidado de copiar o FPT juntamento com os DBFs
Continuarei testanto... espero näo perder o cliente por causa desse campo memo rsrsrs
Estou com meus arquivos DBFs e meu FPT na pasta, se eu pegar apena os DBFs do meu cliente (näo o FPT) e copiar para a minha pasta de desenvolvimento, o xharbour acusa erro de índice corrompido quando tento ler o campo memo, ou seja, eu tenho que ter sempre o FPT correspondente ao DBF que estava sendo usado.
Só consegui fazer funcionar novamente o sistema apagando a coluna do campo memo e criando ela novamente, ai foi regenerado o meu FPT.
Acredito näo ser um grande problema, pois basta apenas tomarmos o cuidado de copiar o FPT juntamento com os DBFs
Continuarei testanto... espero näo perder o cliente por causa desse campo memo rsrsrs
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
