Página 1 de 1

Campos Tabela TBROWSEDB()

Enviado: 07 Abr 2014 08:33
por jelias
Amiguinhos,

Faço uso do TbrowseDB() em meus sistemas e sempre que preciso mostrar um campo que não está no DBF eu crio o mesmo. Há alguma forma de buscar este campo em outra tabela e disponibilizar na tabela ativa, evitando assim criar mais campo no banco de dados.

- Exemplo: Faço um TbrowseDB() em uma tabela de pedidos de vendas e neste banco contém o campo codcli que é o código do cliente, entretanto se preciso disponibilizar o nome do cliente, atualmente eu crio este campo no DBF. O que gostaria é de buscar esta informação no banco de clientes e apenas apresentar durante o TbrowseDB(), evitando assim criar mais campos.

Saudações,

Júlio.

Campos Tabela TBROWSEDB()

Enviado: 07 Abr 2014 09:05
por Itamar M. Lins Jr.
Tem como, mas isso depende... esse é um dilema do DBF.
Porque em SQL vem da forma que quisermos, eu acho melhor criar o campo nos DBF´s
No seu caso é possível usar codblock no field.
oBro:addcolumn(tbcolumnnew("Nome Cliente" ,{||funcaoretornanomecliente()}))
ou se usar set relation
oBro:addcolumn(tbcolumnnew("Nome Cliente" ,{||cliente->nome}))

Funcaoretornanomecliente()
Local cStr := "Não localizado"
if cl->(DbSeek(codcli))
cStr := cliente->nome
Endif
Return cStr

Obs.: Pelo tamanho dos HDs e velocidade das CPUs acho que não compensa mais isso.

Saudações,
Itamar M. Lins Jr.

Campos Tabela TBROWSEDB()

Enviado: 07 Abr 2014 12:16
por alxsts
Olá!

Nestes casos, tudo fica fácil usando-se as "aliased expressions" disponíveis tanto no Clipper quanto no [x]Harbour. Com isso, você pode especificar várias ações para um alias. O resultado final será sempre o da última expressão.

Para atender a tua necessidade atual, pode usar:

Código: Selecionar todos

oBro:addColumn( tbColumnNew("Nome Cliente", { || Cliente->( DbSeek( CustId), CustName ) } ) )
Se quiser sofisticar, pode usar:

Código: Selecionar todos

oBro:addColumn( tbColumnNew("Nome Cliente", { || If( Empty( Cliente->( DbSeek( CustId ), CustName ) ), "Não cadastrado", CustName ) } ) )
(Editado para ajustar sintaxe do código exemplo)