Alguém sabe me dizer se tem como não exibir um determinado campo num Tbrowse usando ADO?
Preciso incluir esse campo no select, porque vou usá-lo para algumas funções.
Mas preciso que o campo não apareça no Tbrowse.
É possível suprimi-lo do Tbrowse? Como faço isso?
Tbrowse com ADO: não exibir um campo
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Tbrowse com ADO: não exibir um campo
O array do tbrowse contém título e conteúdo, de cada coluna que vai ser mostrada.
Está usando aquela rotina automática, que acrescenta TODOS os campos.
Altere pra rotina receber o array por parâmetro, e só criar o array se o parâmetro estiver vazio.
Apenas exemplo de como se faz isso:
Está usando aquela rotina automática, que acrescenta TODOS os campos.
Altere pra rotina receber o array por parâmetro, e só criar o array se o parâmetro estiver vazio.
Apenas exemplo de como se faz isso:
Código: Selecionar todos
FUNCTION teste( p1, p2, p3 )
IF p1 == NIL
// rotina atual de criar o array p1
endif
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Tbrowse com ADO: não exibir um campo
Desculpe, mas não te entendi bem.
Sim, estou usando o padrão que venho usando, herdado deste post: https://pctoledo.org/forum/viewto ... se+com+ado.
Nesse post eu até já tinha questionado algo parecido, e vc respondeu
Voltei a pesquisar esse post agora, e continuo não entendendo.
Entendi que o browse pode passar os campos como parâmetros e daí eu poderia tratar os campos. Mas não entendi como fazer isso.
Poderia me explicar mais detalhadamente, por favor?
Sim, estou usando o padrão que venho usando, herdado deste post: https://pctoledo.org/forum/viewto ... se+com+ado.
Nesse post eu até já tinha questionado algo parecido, e vc respondeu
Eu não entendi e deixei pra lá na época.Caso não tenha percebido, o browse deste post é pra isso.
Voltei a pesquisar esse post agora, e continuo não entendendo.
Entendi que o browse pode passar os campos como parâmetros e daí eu poderia tratar os campos. Mas não entendi como fazer isso.
Poderia me explicar mais detalhadamente, por favor?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Tbrowse com ADO: não exibir um campo
O array tratado no browse é um array multidimensional, tem titulo e conteúdo.
Se as colunas vão tratar DBF, ADO, ou Array, precisam rotinas adequadas.
O detalhe importante aqui é que trata-se de título e conteúdo.
Pra facilitar, em DBF o default é todo conteúdo do DBF.
No caso da sua rotina, que vém usando, é todo conteúdo do retorno do ADO.
Tem aí um FOR/NEXT que pega a lista de campos do ADO pra criar esse array, essa lista de títulos e conteúdos.
Então, o que precisa fazer é alterar a rotina pra poder receber a lista como parâmetro, e só criar a lista completa quando o parâmetro for vazio.
Lembrando que a lista do tbrowse usa certas conversões durante a montagem.
Eu adotei passar sempre um array desse jeito, e criar o array do tbrowse a partir daí.
Acaba tendo vantagens, porque pode criar formatações diferentes da automática.
Exemplos:
Vai poder fazer o browse com informações formatadas diferentes do gravado, apenas parte das informações, ou até informação que nem existe na tabela original.
Isso deixa tudo bem flexível.
Código: Selecionar todos
aList := { ;
{ "CODIGO", { || tabela->Codigo } }, ;
{ "NOME", { || tabela->Campo } }, ;
{ "ENDERECO", { || tabela->Endereco } } }
O detalhe importante aqui é que trata-se de título e conteúdo.
Pra facilitar, em DBF o default é todo conteúdo do DBF.
No caso da sua rotina, que vém usando, é todo conteúdo do retorno do ADO.
Tem aí um FOR/NEXT que pega a lista de campos do ADO pra criar esse array, essa lista de títulos e conteúdos.
Então, o que precisa fazer é alterar a rotina pra poder receber a lista como parâmetro, e só criar a lista completa quando o parâmetro for vazio.
Lembrando que a lista do tbrowse usa certas conversões durante a montagem.
Eu adotei passar sempre um array desse jeito, e criar o array do tbrowse a partir daí.
Acaba tendo vantagens, porque pode criar formatações diferentes da automática.
Exemplos:
Código: Selecionar todos
aList := { ;
{ "CODIGO", { || Str( tabela->Codigo, 6 ) }, ;
{ "CODIGO", { || Transform( tabela->Codigo, "@E 999,999" ) } }, ;
{ "CODIGO", { || Str( tabela->Codigo / 1000, 7, 3 ) } }, ;
{ "NOME", { || Pad( tabela->texto, 1, 15 ) } } , ;
{ "STATUS", { || iif( tabela->Valor < 0, "NEGATIVO", "POSITIVO" ) } } }
Isso deixa tudo bem flexível.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
- JoséQuintas
- Administrador

- Mensagens: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Tbrowse com ADO: não exibir um campo
Aproveitando e mostrando o link que indicou.
Tá exatamente como mostrei aqui.
A lista em OTBrowse é o que vai mostrar, não é obrigatório que seja igual ao SELECT.
Mas lógico... o que usa na lista precisa existir, no SELECT ou em algum lugar.
Pronto, agora só vai mostrar o nome, não importa que o SELECT tem mais coisas.
Código: Selecionar todos
oConexao := ConexaoMySql()
oConexao:Open()
oTemporario := oConexao:Execute( "SELECT CODIGO, NOME, ENDERECO FROM CLIENTES ORDER BY NOME" )
oTBrowse := { ;
{ "CODIGO", { || Pad( oTemporario:Fields( "CODIGO" ):Value, 10 ) } }, ;
{ "NOME", { || Pad( oTemporario:Fields( "NOME" ):Value, 30 ) } }, ;
{ "ENDERECO", { || Pad( oTemporario:Fields( "ENDERECO" ):Value, 30 ) } } }
BrowseADO( oTemporario, oTBrowse )
A lista em OTBrowse é o que vai mostrar, não é obrigatório que seja igual ao SELECT.
Mas lógico... o que usa na lista precisa existir, no SELECT ou em algum lugar.
Código: Selecionar todos
oConexao := ConexaoMySql()
oConexao:Open()
oTemporario := oConexao:Execute( "SELECT CODIGO, NOME, ENDERECO FROM CLIENTES ORDER BY NOME" )
oTBrowse := { ;
{ "NOME", { || Pad( oTemporario:Fields( "NOME" ):Value, 30 ) } } }
BrowseADO( oTemporario, oTBrowse )
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
