MELHOR FORMA TRABALHAR COM OPTIONBUTTON

GNCNET 08/04/2012 08:03:22
#399314
Pessoal, qual a melhor forma para trabalhar com optionbutton nesta situação:

1- São option indexados: 0ption1(0) , 0ption1(2) , 0ption1(3) / 0ption2(0) , 0ption2(2) , 0ption2(3)
2- Preciso salvar apenas o número daquele que está selecionado
3- Na leitura dos dados, preciso destacar apenas o que foi salvo/selecionado
4- Preciso somar o valor dos index

é um form parecido com aqueles testes que ao final somam o resultado

Banco de dados access, salvas em sql.
Campos do BD:
- codigo_cliente
- option1
- option2

Grato

GNCNET 08/04/2012 10:47:06
#399316
Para colorir os option após leitura, já fiz assim:

Dim obj As Object
For Each obj In Form1
If TypeOf obj Is OptionButton Then
If obj.Value = True And obj.Index = 0 Then
obj.BackColor = vbGreen
End If
End If
Next

For Each obj In Form1
If TypeOf obj Is OptionButton Then
If obj.Value = True And obj.Index = 1 Then
obj.BackColor = vbYellow
End If
End If
Next

For Each obj In Form1
If TypeOf obj Is OptionButton Then
If obj.Value = True And obj.Index = 2 Then
obj.BackColor = vbRed
End If
End If
Next
LLAIA 08/04/2012 14:57:30
#399321
Resposta escolhida
Vc poderia criar uma tabela onde haveria uma referencia para um cor de acordo com o Index. Aí vc faz uma função que passando o Index como parâmetro retorna a cor. Fica mais enxuto o código.
GNCNET 08/04/2012 16:10:30
#399324
Leandro, a questão da cor é apenas um complemento, obrigado pela dica.
A necessidade mesmo está em estruturar a função para salvar.
Fiz isto para tentar salvar todos os option selecionados de uma vez:

Dim codigocliente As String
Dim salva_option As String
Dim salva_option_index As String
Dim dbi As Database

codigocliente = Me.Text1(0).Text

Set dbi = OpenDatabase(caminho)

For Each obj In Frm_dados
If TypeOf obj Is OptionButton Then
If obj.Value = True Then
salva_option = obj.Name
salva_option_index = obj.Index
dbi.Execute [Ô]INSERT INTO tbl_dados (codcli, salva_option) Values ([Ô] & Text1(0).Text & [Ô], [ô][Ô] & salva_option_index & [Ô][ô])[Ô]
dbi.Close
End If
End If
Next

Mas infelizmente ocorre o erro 3127 - campo desconhecido (salva_option)


LLAIA 08/04/2012 20:13:22
#399332
Vou fazer uma pergunta bem idiota mas, realmente existe esse campo na tabela que vc tá tentando inserir? Verifique se sua conexão com o banco tá realmente apontando pro banco que vc tá visualizando no desenvolvimento. Já aconteceu comigo de alterar um banco pra fazer as alterações mas tinha esquecido de mudar o endereço do banco de desenvolvimento. Fiquei igual a uum maluco tentando entender o porquê da tabela não está atualizada no banco.
GNCNET 09/04/2012 10:39:38
#399355
Leandro,
Obrigado pela reflexão!
Veja bem, não existe o campo [Ô]salva_option[Ô] realmente. Os campos existentes são [Ô]option1[Ô] e [Ô]option2[Ô]...
Eu fiz a função FOR EACH para tentar salvar todos os options selecionados de uma vez. A verdade é que não sei se é possível desta forma que escrevi a instrução sql.
LLAIA 09/04/2012 11:42:27
#399360
Tente assim:

dbi.Execute [Ô]INSERT INTO tbl_dados (codcli, [Ô] & salva_option & [Ô]) Values ([Ô] & Text1(0).Text & [Ô], [ô][Ô] & salva_option_index & [Ô][ô])[Ô]
GNCNET 10/04/2012 09:27:07
#399430
Leandro, funcionou.
Obrigado
Tópico encerrado , respostas não são mais permitidas