Como mudar o valor dos dados de uma coluna no DBGrid
Olá!
Tenho um DBGrid que mostra o resultado de uma tabela em Oracle.
Esta tabela é de cadastro de usuários.
Sendo que gostaria de colocar uma máscara para mostrar na coluna ´tipo de acesso´, em vez de ´A´ ou ´U´, mostrar ´Administrador´ ou ´Usuário´, mas no Oracle deve ser gravado ´A´ ou ´U´. Apenas para facilitar o usuário.
Como poderia fazer isto?
Obrigado
Tenho um DBGrid que mostra o resultado de uma tabela em Oracle.
Esta tabela é de cadastro de usuários.
Sendo que gostaria de colocar uma máscara para mostrar na coluna ´tipo de acesso´, em vez de ´A´ ou ´U´, mostrar ´Administrador´ ou ´Usuário´, mas no Oracle deve ser gravado ´A´ ou ´U´. Apenas para facilitar o usuário.
Como poderia fazer isto?
Obrigado
Bclr
Curtidas 0
Respostas
Koplin
04/11/2003
Use a propriedade setText do campo em questão. Ela tem uma propriedade sender (o campo) e text que altera o valor a ser mostardo no componente de visualização.
+- assim
If sender.value=´U´ then text = ´Usuário´ else
If text =´A´ ´Administrador´ else
text:=´Indefinido´;
+- assim
If sender.value=´U´ then text = ´Usuário´ else
If text =´A´ ´Administrador´ else
text:=´Indefinido´;
GOSTEI 0
Bclr
04/11/2003
O DBGrid é carregado por um select.
Não entendi como e onde vou usar esta propriedade setText e os If´s ???
Não entendi como e onde vou usar esta propriedade setText e os If´s ???
GOSTEI 0
Koplin
04/11/2003
O DBGrid é carregado por um select.
Não entendi como e onde vou usar esta propriedade setText e os If´s ???
procedure TForm1.Query1NOMESetText(Sender: TField; const Text: String);
begin
If sender.value=´U´ then text = ´Usuário´ else
If text =´A´ ´Administrador´ else
text:=´Indefinido´;
end;
A evento OnSetText esta no campo nome da query1 neste exemplo
Voce precisa acessar o evento OnSetText do campo ´nome´.
Sender é uma variavel do tipo TField que é o campo em si.
Text é uma variavel string que modifica o que aparace no componente visual (TDBEdit ou TDBgrid), mas não altera o valor do campo. É uma ´máscara´ definida por voce.
O que fazemos:
Se o valor do campo (sender.value)=´U´ - no seu caso e no exemplo-
O text sera ´USUÁRIO´ ou seja: sempre que o valor do campo tiver um determinado valor ele mostrará outro (definido por voce)
o exemplo:
valor do campo=>valor exibido
Se ´U´=> ´Usuário´
Se´A´=> ´Administrador´
se outra letra=>´Indefinido´;
Para acessar a propriedade do campo, selecione-o na lista de campos do dataset e procure o evento OnSetText
Se ainda persistirem dúvidas, não exite. Pergunte.
GOSTEI 0
Bclr
04/11/2003
Tudo bem, já entendi a lógica, sendo que ainda não encontrei este evento OnSetText.
Já olhei a lista de todos os eventos do componente TQuery, mas não aparece este evento.
Não entendi quando você diz para eu ver este evento no campo nome, pois os eventos são relacionados de acordo com o componente.
Estou usando o Delphi 5.
Obrigado pela atenção
Já olhei a lista de todos os eventos do componente TQuery, mas não aparece este evento.
Não entendi quando você diz para eu ver este evento no campo nome, pois os eventos são relacionados de acordo com o componente.
Estou usando o Delphi 5.
Obrigado pela atenção
GOSTEI 0
Koplin
04/11/2003
De dois cliques em cima de seu TQuery.
O editor de TFields aparece.
Selecione o Field desejado
tecle f11 para ver o Object Inspector
Selecione a aba Events
Localize o evento OnSetText
O envento é do campo e não do componente.
Obvio que o campo deve estar na lista
Para tal, botão direito na lista e Add All Fields
Estou supondo que a sql esta dentro do TQuery e portanto voce possa abri-lo em Design Time e desta forma prover o TQuery com os TFields
O editor de TFields aparece.
Selecione o Field desejado
tecle f11 para ver o Object Inspector
Selecione a aba Events
Localize o evento OnSetText
O envento é do campo e não do componente.
Obvio que o campo deve estar na lista
Para tal, botão direito na lista e Add All Fields
Estou supondo que a sql esta dentro do TQuery e portanto voce possa abri-lo em Design Time e desta forma prover o TQuery com os TFields
GOSTEI 0
Bclr
04/11/2003
OK
Desculpe estar sendo chato, mas agora está dando o seguinte erro
´Left side cannot be assigned to´
na variável Text abaixo:
if Sender.value = ´U´ then
Text := ´Usuário´
else
if Sender.value = ´A´ then
Text := ´Administrador´
else
Text := ´Indefinido´;
ou seja, não está aceitando atribuir algum valor a Text
o que faço?
Desculpe estar sendo chato, mas agora está dando o seguinte erro
´Left side cannot be assigned to´
na variável Text abaixo:
if Sender.value = ´U´ then
Text := ´Usuário´
else
if Sender.value = ´A´ then
Text := ´Administrador´
else
Text := ´Indefinido´;
ou seja, não está aceitando atribuir algum valor a Text
o que faço?
GOSTEI 0
Koplin
04/11/2003
A culpa é minha... e voce não está sendo chato.
Um dia vai passar a alguém o que sabe, como ainda me ensinam.
Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.
O evento e OnGetText e não OnSetText como eu afirmei.
Desculpe o lapso.
Um dia vai passar a alguém o que sabe, como ainda me ensinam.
Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.
O evento e OnGetText e não OnSetText como eu afirmei.
Desculpe o lapso.
GOSTEI 0
Bclr
04/11/2003
Valeu koplin
Muito obrigado pela ajuda
É de pessoas como você que o fórum precisa, pessoas que procuram esclarecer todas as dúvidas.
T+
Muito obrigado pela ajuda
É de pessoas como você que o fórum precisa, pessoas que procuram esclarecer todas as dúvidas.
T+
GOSTEI 0
Koplin
04/11/2003
O time aqui é muito bom. Eu tento alcança-los em prestimosidade.
Boa sorte, e qualquer coisa...
Boa sorte, e qualquer coisa...
GOSTEI 0
Elbesh
04/11/2003
Koplin cara se vc tivesse na minha frente ia ganha um Beijo!!!!!!!
VALEW CARA vc salvo minha vida eu tava looocccooo atras de como botar tipo uma mascara no DbGrid e naum sabia... eu queria q ele tivesse uma função tipo Caption q naum eh pra Injecao de Texto no banco de dados e sim pra exibicao de texto somente... mas com isso q vc falo ai no topico arrebento cara... VALEW muiiitooo msm!!!!!
VALEW CARA vc salvo minha vida eu tava looocccooo atras de como botar tipo uma mascara no DbGrid e naum sabia... eu queria q ele tivesse uma função tipo Caption q naum eh pra Injecao de Texto no banco de dados e sim pra exibicao de texto somente... mas com isso q vc falo ai no topico arrebento cara... VALEW muiiitooo msm!!!!!
GOSTEI 0
Ricardo Back
04/11/2003
A culpa é minha... e voce não está sendo chato.
Um dia vai passar a alguém o que sabe, como ainda me ensinam.
Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.
O evento e OnGetText e não OnSetText como eu afirmei.
Desculpe o lapso.
Um dia vai passar a alguém o que sabe, como ainda me ensinam.
Quando nos dispomos a responder a alguem, na minha opinião, assumimos um compromisso, que é o de esclarecer até onde for possivel.
O evento e OnGetText e não OnSetText como eu afirmei.
Desculpe o lapso.
olá Koplin, onGetText funciona, mas quando altero para ediçao do campo em um formulario que fica em uma tabSheet ao lado ele nao traz o radioGroup seleconado... antes trazia. o que eu faço? desfazer a alteração? Como?
GOSTEI 0
Carlos Eduardo
04/11/2003
Uma pergunta eu nao uso componente como poderia proceder ? sou novo no Delphi
exemplo
TPesquisa = class(FDQuery)
Procedure exemplo(...);
end;
como vou implementar o evento rs :)?
exemplo
TPesquisa = class(FDQuery)
Procedure exemplo(...);
end;
como vou implementar o evento rs :)?
GOSTEI 0