Usuário com melhor resposta
SELECT Nos valores do checkbox.

Pergunta
-
Boa noite a todos, estou tentando retornar o valor do checkbox do banco de dados. Quando tento fazer a operação o banco me retorna o seguinte aviso:
Não é possivel converter um objeto do tipo "System.UInt64" no tipo 'MetroFramework.Controls.MetroCheckbox"
A Coluna onde está armazenado os dados do checkbox está no formato bit.
Como devo converter a mesma?
Segue o código abaixo:
Private Sub PSalvaLogin()
Using con As MySqlConnection = GetConnectionMySQL()
Try
con.Open()
Dim sql As String = "INSERT INTO login (usuario_log, senha_log, acesso_log) VALUES (?,?,?)"
Dim cmd As MySqlCommand = New MySqlCommand(sql, con)
cmd.Parameters.Add(New MySqlParameter("@usuario_log", txtUsuario.Text))
cmd.Parameters.Add(New MySqlParameter("@senha_log", txtSenha.Text))
cmd.Parameters.Add(New MySqlParameter("@acesso_log", chCadastroFuncionario.CheckState + chConsultaLogin.CheckState + chCadastroAcesso.CheckState))
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
Finally
con.Close()
End Try
End Using
End SubDesde já, grato.
- Editado Thiago Marcondes quinta-feira, 1 de fevereiro de 2018 02:09
Respostas
-
Boa noite.
Sugiro que trabalhe com VARCHAR(n)
Seu insert ficaria assim (posso ter digitado algo errado):
Private Sub PSalvaLogin() Using con As MySqlConnection = GetConnectionMySQL() Try con.Open() Dim sql As String = "INSERT INTO login (usuario_log, senha_log, acesso_log) VALUES (?,?,?)" Dim cmd As MySqlCommand = New MySqlCommand(sql, con) cmd.Parameters.Add(New MySqlParameter("@usuario_log", txtUsuario.Text)) cmd.Parameters.Add(New MySqlParameter("@senha_log", txtSenha.Text)) cmd.Parameters.Add(New MySqlParameter("@acesso_log", CInt(chCadastroFuncionario.CheckState).ToString & CInt(chConsultaLogin.CheckState).ToString & CInt(chCadastroAcesso.CheckState).ToString))
cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Exit Sub Finally con.Close() End Try End Using End Sub
Após o Select.
Dim Str_Check_Box_States As String = dr.Item("acesso_log").ToString
chCadastroFuncionario.Checked = CBool(Str_Check_Box_States.Substring(0, 1))
chConsultaLogin.Checked = CBool(Str_Check_Box_States.Substring(1, 1)) chCadastroAcesso.Checked = CBool(Str_Check_Box_States.ToString.Substring(2, 1))
MARIANO1776
- Marcado como Resposta Thiago Marcondes sexta-feira, 2 de fevereiro de 2018 22:52
Todas as Respostas
-
Bom dia.
Não sei se entendi.
Você está está tentando armazenar três valores booleans na coluna acesso_log?
cmd.Parameters.Add(New MySqlParameter("@acesso_log", chCadastroFuncionario.CheckState + chConsultaLogin.CheckState + chCadastroAcesso.CheckState))
Experimente fazer somente para ver o resultado.
Private Sub PSalvaLogin()
msgbox (chCadastroFuncionario.CheckState + chConsultaLogin.CheckState + chCadastroAcesso.CheckState)
exit sub
MARIANO1776
-
-
O código do SELECT que estou usando é o seguinte:
Private Sub PLeComboBox()
Dim dr As MySqlDataReader = Nothing
Using con As MySqlConnection = GetConnectionMySQL()
Try
con.Open()
Dim sql As String = " SELECT id_log, usuario_log, senha_log, acesso_log FROM login WHERE usuario_log='" & txtUsuario.Text & "'"
Dim cmd As MySqlCommand = New MySqlCommand(sql, con)
dr = cmd.ExecuteReader(CommandBehavior.SingleRow)
If dr.HasRows Then
dr.Read()
txtUsuario.Text = dr.Item("usuario_log")
txtSenha.Text = dr.Item("senha_log")
chConsultaLogin = dr.Item("acesso_log")
'chCadastroAcesso = dr.Item("acesso_log")
'chCadastroFuncionario = dr.Item("acesso_log")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Using
End Sub -
Boa noite.
Ainda não entendi como você quer armazenar três dados distintos no mesmo campo:
cmd.Parameters.Add(New MySqlParameter("@acesso_log", chCadastroFuncionario.CheckState + chConsultaLogin.CheckState + chCadastroAcesso.CheckState))
Mas se você tem certeza que está certo, vamos ao select
chConsultaLogin.Checked = cbool(dr.Item("acesso_log"))
'chCadastroAcesso.Checked = cbool(dr.Item("acesso_log"))
'chCadastroFuncionario.Checked = cbool(dr.Item("acesso_log"))
MARIANO1776
- Editado Mariano1776 quinta-feira, 1 de fevereiro de 2018 23:44 correção
-
Na verdade a tabela "acesso_log" precisa receber o valor das checkboxes.
Exemplo:
1 verdadeiro, 0 falso.
check1 = 1
check2 = 1
Porém, quando faço o insert
na tabela do banco, ele me mostra 10 ao inves de 11.
Como eu faria pra receber 11 o resultado?
Por fim, a tela que estou tentando criar, é uma tela de Permissões para o usuário. Por isso, não criei varias colunas para cada checkbox. Eu achei que o insert estava correto, porém na hora de colocar os valores no banco de dados eu vi que não estava certo.
Grato
-
Boa noite.
Sugiro que trabalhe com VARCHAR(n)
Seu insert ficaria assim (posso ter digitado algo errado):
Private Sub PSalvaLogin() Using con As MySqlConnection = GetConnectionMySQL() Try con.Open() Dim sql As String = "INSERT INTO login (usuario_log, senha_log, acesso_log) VALUES (?,?,?)" Dim cmd As MySqlCommand = New MySqlCommand(sql, con) cmd.Parameters.Add(New MySqlParameter("@usuario_log", txtUsuario.Text)) cmd.Parameters.Add(New MySqlParameter("@senha_log", txtSenha.Text)) cmd.Parameters.Add(New MySqlParameter("@acesso_log", CInt(chCadastroFuncionario.CheckState).ToString & CInt(chConsultaLogin.CheckState).ToString & CInt(chCadastroAcesso.CheckState).ToString))
cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Exit Sub Finally con.Close() End Try End Using End Sub
Após o Select.
Dim Str_Check_Box_States As String = dr.Item("acesso_log").ToString
chCadastroFuncionario.Checked = CBool(Str_Check_Box_States.Substring(0, 1))
chConsultaLogin.Checked = CBool(Str_Check_Box_States.Substring(1, 1)) chCadastroAcesso.Checked = CBool(Str_Check_Box_States.ToString.Substring(2, 1))
MARIANO1776
- Marcado como Resposta Thiago Marcondes sexta-feira, 2 de fevereiro de 2018 22:52
-
-