ACCESS E LEGENDAS DAS COLUNAS

JALEXM 06/03/2012 08:52:08
#396499
Uso VB6 e Access e preciso obter uma lista com os nomes dos campos e as respectivas legendas (captions) para cada tabela do banco de dados.
Preciso trabalhar com essa informação dentro de uma aplicação em VB6.

Tentei com os comandos ADO/ADOX mas isso não é possível, pois parece que a propriedade Legenda (Caption) dos campos é interna ao Access e não fica disponível para o ADO/ADOX. Não sei por que isso. é possível obter informações de todo tipo sobre a estrutura (Schema) do BD, mas justamente esta [Ô]esqueceram[Ô] de implementar.

Para contornar, pensei em criar uma tabela auxiliar dentro do BD, na qual os registros conteriam o nome da tabela, o nome do campo e a legenda. O problema é que não tenho ideia de como jogar esse tipo de informação nessa tabela auxiliar. Não sei se isso seria feito no VB6 com algum comando SQL ou através de comandos internos do Access. E isso teria que ser feito sempre que o BD fosse aberto pela aplicação em VB6, para que qualquer alteração no nome e/ou legenda dos campos ficasse registrada na tabela auxiliar.

Alguém tem alguma ideia ou exemplo do que posso fazer, já que não conheço quase nada de comandos internos do Access.
Obrigado pela ajuda.

SAMUKA 06/03/2012 10:04:32
#396503
Bom dia JALEXM

é possível sim. Segue um exemplo, onde catalog é uma instancia de ADOX.Catalog


catalog.Tables([Ô]NomeTabela[Ô]).Columns([Ô]NomeColuna[Ô]).Properties([Ô]Description[Ô]).Value


A propriedade Description recupera a legenda.
JALEXM 06/03/2012 10:33:52
#396507
Citação:

:
Bom dia JALEXM

é possível sim. Segue um exemplo, onde catalog é uma instancia de ADOX.Catalog


catalog.Tables([Ô]NomeTabela[Ô]).Columns([Ô]NomeColuna[Ô]).Properties([Ô]Description[Ô]).Value


A propriedade Description recupera a legenda.



Na versão de Access que eu uso isso não ocorre. Só consigo fazer funcionar essa sua dica se eu copiar manualmente a Legenda para a Descrição.
Será que estou fazendo algo errado?

O problema todo é que não é só eu que mexo nesse BD. Se alguém mudar a legenda e esquecer de copiar para a Descrição (e isso vai acabar acontecendo) vou ter problemas com a aplicação em VB. Mas a sua dica seria um ótima solução caso houvesse um jeito de automatizar essa cópia. Se fosse possível copiar a Legenda para a Descrição toda vez que o BD fosse aberto, tudo estaria resolvido. Talvez com comandos internos do Access fosse possível. Conhece algum modo de fazer isso?
SAMUKA 06/03/2012 11:03:45
#396514
Fiz diversos testes aqui e só é possível recuperar a propriedade Descrição, puxei outras prorpriedades mas a Legenda não vem.

Citação:

Se fosse possível copiar a Legenda para a Descrição toda vez que o BD fosse aberto, tudo estaria resolvido. Talvez com comandos internos do Access fosse possível. Conhece algum modo de fazer isso?



Desconheço essa possíbilidade. Sei que usuários tendem a fuçar sempre onde não é preciso .... mas existe a necessidade de mudar a legenda com frequencia? Em teoria não deveria ser feito, cheira gambiarra rsrs
JALEXM 06/03/2012 11:23:30
#396521
Citação:

Fiz diversos testes aqui e só é possível recuperar a propriedade Descrição, puxei outras prorpriedades mas a Legenda não vem.



Exatamente. A propriedade Caption não está disponível. Tem muitas outras, mas essa eles [Ô]esqueceram[Ô].

Citação:

Se fosse possível copiar a Legenda para a Descrição toda vez que o BD fosse aberto, tudo estaria resolvido. Talvez com comandos internos do Access fosse possível. Conhece algum modo de fazer isso?

Desconheço essa possíbilidade.



Que pena. Era isso que está justamente me faltando. Sua dica de usar a Descrição foi ótima, ao invés do que eu tinha pensado (criar tabela auxiliar, etc.).
Basta copiar as Legendas para as Descrições dos campos no momento em que o BD é aberto.
Mas eu não conheço Access o suficiente para fazer isso. Quem sabe algum outro colega do fórum possa ajudar.

Citação:

Sei que usuários tendem a fuçar sempre onde não é preciso .... mas existe a necessidade de mudar a legenda com frequencia? Em teoria não deveria ser feito, cheira gambiarra rsrs



Nunca dá prá pensar que usuários não vão fazer isso ou aquilo. Eles VÃO fazer algum dia e depois vão dizer que a aplicação está dando problema. Portanto, tentando ser precavido é que estou tendo que resolver esse caso.
Tópico encerrado , respostas não são mais permitidas