Página 1 de 1
Preencher RICHEDIT com dados do dbf
Enviado: 14 Mai 2009 16:56
por marcos.gurupi
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
Re: Preencher RICHEDIT com dados do dbf
Enviado: 14 Mai 2009 22:13
por Itamar M. Lins Jr.
Ola!
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
Alias depois analizando é mais economico usar da forma como esta ai em cima mas ser for da sua maneira é:
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.
Saudações,
Itamar M. Lins Jr.
Re: Preencher RICHEDIT com dados do dbf
Enviado: 15 Mai 2009 11:14
por marcos.gurupi
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.
Preencher RICHEDIT com dados do dbf
Enviado: 20 Mai 2009 15:07
por marcos.gurupi
Pq quando tento gravar o campo RICHEDIT a var estah vindo vazia?
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.
Re: Preencher RICHEDIT com dados do dbf
Enviado: 20 Mai 2009 15:27
por marcos.gurupi
Deu certo com a dica do Fernando segue a dica abaixo:
oDescrVisita:GetText()
vDescrVisita := oDescrVisita:GetText()
Marcos Roberto.
Re: Preencher RICHEDIT com dados do dbf
Enviado: 25 Mai 2009 14:00
por Luciano Bonfim
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 ...
Re: Preencher RICHEDIT com dados do dbf
Enviado: 28 Mai 2009 10:18
por asimoes
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:
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,,,)
.
.
.
No final você gera o arquivo ou sobrepoe o existente.
Eu aconselho fortemente a não usar campo memo.
[]´s
Re: Preencher RICHEDIT com dados do dbf
Enviado: 28 Mai 2009 10:37
por Luciano Bonfim
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
Re: Preencher RICHEDIT com dados do dbf
Enviado: 28 Mai 2009 18:56
por Luciano Bonfim
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