SALVAR RADIOBUTTON E CHECKBOX NO ACCESS

 Tópico anterior Próximo tópico Novo tópico

SALVAR RADIOBUTTON E CHECKBOX NO ACCESS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#472958 - 03/04/2017 12:58:01

ABREU
CONCEICAO DE MACABU
Cadast. em:Agosto/2013


 Anexos estao visíveis somente para usuários registrados

Bom dia para todos.

Mais uma vez estou em dificuldade e preciso de ajuda.
No estou conseguindo salvar os valores do RadioButton e do CheckBox no Access 2007.
Quando rodo o aplicativo recebo a mensagem de erro Tipo de dados incompatvel na expresso de critrio.
Eis os trechos do cdigo que fiz no VB.Net 2012. Em anexo tem um print da tabela e do formulrio.

Private Sub btnSalvar_Click(sender As Object, e As EventArgs) Handles btnSalvar.Click
            Using cn As New OleDbConnection([]Provider=Microsoft.ACE.OLEDB.12.0;[] _
                & []Data Source=BdProFitness.accdb;Jet OLEDB:System database=system.mdw;[])
                cn.Open()
                Using cmd As New OleDbCommand([]INSERT INTO PF001 (NomeCliente, Nacionalidade, EstadoCivil,[] & _
                      []..., SexoMasculino,[] & _
                      []SexoFeminino, DiaTreinoSeg, DiaTreinoTer, DiaTreinoQua,DiaTreinoQui,[] & _
                      []DiaTreinoSex, DiaTreinoSab, DiaTreinoDom, ...) VALUES [] & _
                      [](txtNomeCliente.Text, txtNacionalidade.Text, txtEstadoCivil.Text,[] &_
                      ...
                      []rbtSexoMasculino.Checked, rbtSexoFeminino.Checked, chkDiaTreinoSeg.CheckState, chkDiaTreinoTer.CheckState,[] & _
                      []chkDiaTreinoQua.CheckState, chkDiaTreinoQui.CheckState, chkDiaTreinoSex.CheckState,[] & _
                      []chkDiaTreinoSab.CheckState, chkDiaTreinoDom.CheckState, ...)[])
                    cmd.Connection = cn
                    cmd.Parameters.AddWithValue([]@NomeCliente[], txtNomeCliente.Text)
                    cmd.Parameters.AddWithValue([]@Nacionalidade[], txtNacionalidade.Text)
                    cmd.Parameters.AddWithValue([]@EstadoCivil[], txtEstadoCivil.Text)
                    ...
                    cmd.Parameters.AddWithValue([]@SexoMasculino[], rbtSexoMasculino.Checked)
                    cmd.Parameters.AddWithValue([]@SexoFeminino[], rbtSexoFeminino.Checked)
                    cmd.Parameters.AddWithValue([]@DiaTreinoSeg[], chkDiaTreinoSeg.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoTer[], chkDiaTreinoTer.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoQua[], chkDiaTreinoQua.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoQui[], chkDiaTreinoQui.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoSex[], chkDiaTreinoSex.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoSab[], chkDiaTreinoSab.CheckState)
                    cmd.Parameters.AddWithValue([]@DiaTreinoDom[], chkDiaTreinoDom.CheckState)
                    ...
                    cmd.ExecuteNonQuery()
                End Using
                cn.Close()
            End Using


Wenceslu


#472964 - 03/04/2017 15:03:32

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Use Checked para todos.
Acredito que o CheckState, mais para comparao.
Valor 1 para True.
Valor 0 para False.




#472966 - 03/04/2017 16:10:10

ABREU
CONCEICAO DE MACABU
Cadast. em:Agosto/2013


Caro OMAR2011,
Testei a propriedade Checked em todos os comandos, mas emitiu a mesma mensagem.
Grato por sua ateno.

Wenceslu


#472967 - 03/04/2017 16:42:20

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Última edição em 03/04/2017 16:42:56 por OMAR2011

O que isto em vermelho.
Using cmd As New OleDbCommand([]INSERT INTO PF001 (NomeCliente, Nacionalidade, EstadoCivil,[] & _
                      []..., SexoMasculino,[] & _
                      []SexoFeminino, DiaTreinoSeg, DiaTreinoTer, DiaTreinoQua,DiaTreinoQui,[] & _
                      []DiaTreinoSex, DiaTreinoSab, DiaTreinoDom, ...) VALUES [] & _
                      [](txtNomeCliente.Text, txtNacionalidade.Text, txtEstadoCivil.Text,[] &_
                      ...
                      []rbtSexoMasculino.Checked, rbtSexoFeminino.Checked, chkDiaTreinoSeg.CheckState, chkDiaTreinoTer.CheckState,[] & _
                      []chkDiaTreinoQua.CheckState, chkDiaTreinoQui.CheckState, chkDiaTreinoSex.CheckState,[] & _
                      []chkDiaTreinoSab.CheckState, chkDiaTreinoDom.CheckState, ...)[])
Retire isto e tente novamente.




#472968 - 03/04/2017 17:13:40

ABREU
CONCEICAO DE MACABU
Cadast. em:Agosto/2013


1) No print esto assinalados em vermelho os campos que recebem os valores vindos do RadioButton e do CheckBox (Tabela e Formulrio).
2) []Using cmd ...[] o comando de insero dos valores do RadioButton e do CheckBox na tabela PF001.
3) SexoMasculino e SexoFeminino so os campos cujos valores vm do RadioButton, e DiaTreinoSeg at DiaTreinoDom so os campos cujos valores vm do CheckBox. So esses valores que eu estou em dificuldade de salvar no banco de dados.

Wenceslu


Resposta escolhida #472970 - 03/04/2017 17:18:03

FFCOUTO
COM LEVY GASPARIAN
Cadast. em:Março/2005


ABREU, boa tarde.
Vendo a imagem do seu banco de dados, aconselho a voc fazer algumas melhorias pois na minha opinio sua tabela no est bem modelada. Por exemplo, no h necessidade de voc ter 2 campos para o sexo. Basta apenas 1. E voc informaria M ou F ou O (outro) ou at mesmo 0, 1 ou 2. Bastando para isso codificar uma rotina para converter tais valores conforme a opo que o usurio escolhesse.

Da mesma forma, isso se aplica ao campo DiaTreino. Use soma de potncias de 2 e assim voc ter um nico valor para representar todas as opes que o usurio escolheu. Como funciona: basta representar para cada opo um valor do tipo 2^n, onde n o nmero da opo. Assim voc tem:

segunda: 2^0 = 1
tera: 2^1 = 2
quarta: 2^2 = 4
quinta: 2^3 = 8
sexta: 2^4 = 16
sbado: 2^5 = 32
domingo: 2^6 = 64

Se o usurio selecionou segunda e tera, basta voc somar os valores, assim voc vai gravar 3 no banco de dados. Na hora de recuperar o valor voc apenas precisa fazer uma operao binrio com o operador AND e saber se o valor est ou no selecionado. Exemplo:

chkSegunda.Checked = (3 AND 1)
chkTerca.Checked = (3 AND 2)

Dica, faa uma funo para calcular/retornar os valores que ser bem mais fcil.

Se tiver dvidas, faa contato.



Cursos de Excel e VB6:
cursoexcelvba.com.br


#472972 - 03/04/2017 17:51:38

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Última edição em 03/04/2017 17:52:10 por OMAR2011

Ento voc postou seu cdigo errado.
Isto no da certo devido ao nmero de campos e valores. 12 campos e 12 Valores
No tem sentido ... .
Retire isto.Nunca vi ningum com este tipo de Insert.




#472974 - 04/04/2017 03:32:21

ABREU
CONCEICAO DE MACABU
Cadast. em:Agosto/2013


Valeu FFCOUTO.
Essa dinmica que me faltava.
Com a sua orientao, resolvi o meu problema.
Muito obrigado.
Fico devendo-lhe essa!

Wenceslu


#472975 - 04/04/2017 05:34:48

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


boa madrugada....
exatamente abreu, segue a dica do FFCOUTO, vc reduz todos os campos do banco de dados a 2 campos, simples de texto mesmo, e neles consegue armazenar a informao, fazendo o inverso da converso de incluso, vc pode visualizar em tela a informao registrada na tabela....
aqui
cmd.Parameters.AddWithValue([]@Sexo[], tipo)
vc pode fazer a verificao do campo marcado e armazenar nessa varivel tipo

na hora de visualizar a tela, vc recupera o q tem na tabela e verifica
if tb.sexo = []feminino[] then
rbtsexofeminino.checked=true

tero modificaes conforme trabalhe na incluso e recuperao das informaes....
ia falar sobre separa-los, mas j vi q esto em grupos separados, ento esta tranquilo....

Cada dia vejo surgirem novos []programadores[] de cdigo pronto aqui



#472980 - 04/04/2017 10:41:15

ABREU
CONCEICAO DE MACABU
Cadast. em:Agosto/2013


Obrigado a todos que me ajudaram.

Wenceslu


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ABREU em 04/04/2017 10:42:00