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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, 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/
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/
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: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, 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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
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, 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/
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/
