Dúvida com Tbrowse

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida com Tbrowse

Mensagem por porter »

olá pessoal, os dois comandos abaixo, da um refresh no cadastro de mercadorias, monta o Tbrowse, tudo certo, mas eu preciso entrar tambem no cadastro de clientes para selecionar o cliente e fazer a venda, o Tbrowse de cliente monta perfeitamente, mas quando volta para montar o Tbrowse de mercadorias novamente, da esse erro, porque ele procura CLIENTE_NOME e não acha, como faço para contornar esse problema.
Ele procura o CLIENTE_NOME la do cadastro de clientes, mas o refresh abaixo, tem que ser nos campos do cadastro de mercadorias.
Não sei se consegui ser bem claro na minha explicação.
Dentro do Tbrowse de mercadorias eu preciso abrir o Tbrowse de clientes, mas quando volto da o erro.


brw:REFRESHALL() <--- erro aqui Variable does not exist: CLIENTE_NOME
DO WHILE !brw:stabilize() .AND. NEXTKEY() = 0


xHarbour, windows 7, 64 bits

obrigado.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida com Tbrowse

Mensagem por Itamar M. Lins Jr. »

Ola!
Use DbSelectArea() na função de retorno p/ tBrowse ou use alias!
Por exemplo:
CLIENTE_NOME coloque o alias do DB, tipo: cliente->CLIENTE_NOME
Na função que retorna p/ o tBrowse use:
Local cAlias := DbSelectArea(NovaArea)
...
...Antes do return coloque:
DbSelectArea(cAlias)
Return

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Dúvida com Tbrowse

Mensagem por alxsts »

Olá!

Use expressões com o alias operator (->).

Código: Selecionar todos

FUNCTION Teste()

   #include "tbrowse.ch"

   LOCAL nKey

   USE mercadoria SHARED NEW 

   // cria tBrowse oTbMerc para mercadorias

   USE cliente SHARED NEW 

   // cria tBrowse oTbCli para cliente

   Cliente->( oTbCli:goTop() )
 
   WHILE .T.

      Cliente->( oTbCli:forceStable() )

      Mercadoria->( oTbMerc:forceStable()

      nKey := Inkey(0)

      IF oTbCli:applyKey( nKey ) == TBR_EXIT
          EXIT
      ENDIF

      // processamento
   ENDDO

RETURN NIL
[]´s
Alexandre Santos (AlxSts)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida com Tbrowse

Mensagem por porter »

o Problema não está em selecionar a area, pois já estou selecionando e sim remontar o TBrowse, quando volto estou tendo que executar novamente essa procedure, e gostaria de saber se existe diferença entre SELECT e DbSelectArea, obrigado a todos.

Código: Selecionar todos

PROCEDURE Remontar_Campos
      brw:=TBrowseDB(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
      brw:colorspec :=  "&BCB/&AZ , &MR+/&VD , &CYB/&AZ , &PR/&PR , &VDB/&MR , &VM/&AZB"
      brw:headsep:=chr(205)
      FOR i_=1 TO LEN(brw_campos)
          cp_titu:=brw_campos[i_,3]
          cp_masc:=brw_campos[i_,2]
          cp_:=brw_campos[i_,1]
          brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
          brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
      NEXT
Editado pela última vez por Toledo em 05 Out 2014 19:17, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida com Tbrowse

Mensagem por Itamar M. Lins Jr. »

Veja jovem!

Código: Selecionar todos

PROCEDURE Remontar_Campos

alert(alias()) //quem é o DBF que está aberto agora ? quando retorna da tal função ?

brw:=TBrowseDB(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
brw:colorspec := "&BCB/&AZ , &MR+/&VD , &CYB/&AZ , &PR/&PR , &VDB/&MR , &VM/&AZB"
brw:headsep:=chr(205)
FOR i_=1 TO LEN(brw_campos)
cp_titu:=brw_campos[i_,3]
cp_masc:=brw_campos[i_,2]
cp_:=brw_campos[i_,1]
brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
NEXT
Procure no google a diferença de select, select() e DbSelectArea() são bem parecidos...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dúvida com Tbrowse

Mensagem por JoséQuintas »

Se entendi direito...
O TBrowse funciona, mas chama uma função que muda a área atual...

Se é isso, simples, cuide para que sua função retorne à área que estava.

Código: Selecionar todos

FUNCTION Qualquer()
   LOCAL nSelect := Select()
   ...
   SELECT ( nSelect )
   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Dúvida com Tbrowse

Mensagem por Jairo Maia »

Olá Pessoal,

Está me parecendo que o problema está na declaração das variáveis. Quando ele consulta o arquivo clientes, os campos desse arquivo é adicionado na matriz, e ao voltar e dar o :refresh(), as variaveis do arquivo clientes não existe no arquivo produtos.

Acho que ele precisa em ambas funções fazer:
Local brw:=TBrowseDB(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Dúvida com Tbrowse

Mensagem por porter »

bom dia pessoal, é isso mesmo Jairo, além de selecionar a area de trabalho tenho que executar essa rotina abaixo, não sei se é a maneira correta, mas é dessa forma que está dando certo.

Código: Selecionar todos

PROCEDURE Remontar_Campos
   brw:=TBrowseDB(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
   brw:colorspec := "&BCB/&AZ , &MR+/&VD , &CYB/&AZ , &PR/&PR , &VDB/&MR , &VM/&AZB"
   brw:headsep:=chr(205)
   FOR i_=1 TO LEN(brw_campos)
      cp_titu:=brw_campos[i_,3]
      cp_masc:=brw_campos[i_,2]
      cp_:=brw_campos[i_,1]
      brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
      brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
   NEXT
Editado pela última vez por Toledo em 05 Out 2014 19:19, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Responder