Página 1 de 1

Dúvida com Tbrowse

Enviado: 03 Out 2014 19:33
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.

Dúvida com Tbrowse

Enviado: 03 Out 2014 19:56
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.

Dúvida com Tbrowse

Enviado: 03 Out 2014 20:10
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

Dúvida com Tbrowse

Enviado: 04 Out 2014 11:22
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

Dúvida com Tbrowse

Enviado: 04 Out 2014 13:42
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.

Dúvida com Tbrowse

Enviado: 04 Out 2014 20:20
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

Dúvida com Tbrowse

Enviado: 05 Out 2014 05:50
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)

Dúvida com Tbrowse

Enviado: 05 Out 2014 09:00
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