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