| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
deivid.santos Novato

Registrado: Quarta-Feira, 26 de Outubro de 2011 Mensagens: 20
|
Enviada: Qua Out 26, 2011 1:09 pm Assunto: TDBComboBox - Resolvido |
|
|
Olá, inseri um TDBcomboBox, inseri 2 itens (sim) e (não), preciso armazernar no banco Mysql, só que meu campo é INT. Então pensei assim:
SIM=0
NÃO=1
Fiz o seguinte código mas esta dando erro, pelo que percebi ele esta tentando armazenar string.
if cbadmin.Text = 'SIM' then
md.tbtecnico.FieldByName('admin').AsString := '0'
else
md.tbtecnico.FieldByName('admin').AsString := '1';
md.tbtecnico.Post;.
Alguem poderia me ajudar, desde ja grato.
Editado pela última vez por deivid.santos em Qua Out 26, 2011 3:20 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 26, 2011 1:42 pm Assunto: |
|
|
Acho que você poderia utilizar um TDBRadioGroup ou um TDBCheckBox, pois ambos possuem uma propriedade para colocar os valores a serem gravados no campo (Values e ValueChecked / ValueUnChecked respectivamente).
Da forma como você tentou, experimente da seguinte forma:
| Código: | if cbadmin.Text = 'SIM' then
md.tbtecnico.FieldByName('admin').AsInteger := 0
else
md.tbtecnico.FieldByName('admin').AsInteger := 1; |
Se não funcionar, poste a mensagem de erro.
Espero que ajude.
Editado pela última vez por imex em Ter Dez 05, 2023 9:52 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
deivid.santos Novato

Registrado: Quarta-Feira, 26 de Outubro de 2011 Mensagens: 20
|
Enviada: Qua Out 26, 2011 1:53 pm Assunto: |
|
|
Fiz as modificações mas continua com o mesmo erro.
| Citação: | | Mensagem: EdataBaseError with message "SIM" is not a valid integer value for field 'admin'. |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 26, 2011 2:19 pm Assunto: |
|
|
O DBComboBox atribui o valor selecionado ao campo, por isso ocorre este erro.
Para utilizar este código que você postou é necessário utilizar um TComboBox no lugar do TDBComboBox, mas também vai ser necessário utilizar código para exibir o texto na consulta.
Se for para utilizar o TDBComboBox você pode utilizar código nos eventos OnGetText e OnSetText do campo. Ex:
| Código: | procedure Tmd.tbtecnicoadminGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if tbtecnicoadmin.AsInteger = 0 then
Text := 'Sim'
else
Text := 'Não';
end;
procedure Tmd.tbtecnicoadminSetText(Sender: TField;
const Text: String);
begin
if Text = 'Sim' then
tbtecnicoadmin.AsInteger := 0
else
tbtecnicoadmin.AsInteger := 1;
end; |
Ainda acho que seria melhor utilzar um TDBRadioGroup ou um TDBCheckBox. Dispensaria todos os códigos.
Espero que ajude. |
|
| Voltar ao Topo |
|
 |
deivid.santos Novato

Registrado: Quarta-Feira, 26 de Outubro de 2011 Mensagens: 20
|
Enviada: Qua Out 26, 2011 3:19 pm Assunto: Concluido |
|
|
| Obrigado, utilizei o TDBRadioGroup. |
|
| Voltar ao Topo |
|
 |
|