Ir para o conteúdo
allcantaras

Imagem e Checkbox no DataGridView!

Mensagens Recomendadas

allcantaras

Olá a todos do forum!

Tenho um trabalho para entregar em vb.net e me apressei em fazer e ja está pronto!

A Proposta é a seguinte:

1. Tela de Acesso contendo o tipo do Acesso (Usuário ou Administrador)

2. Se Usuário então apresentar um contador de 3 tentativas, 1 link de Esqueci minha senha. Se Administrador não apresentar contador nem esqueci minha senha.

3. Se o usuário errar 3x a senha a situação dele passa a ser BLOQUEADO e somente o Administrador poderá desbloquear. Senão se apenas esquecer e NÃO ERRAR 3x a senha ele poderá clicar em ESQUECI MINHA SENHA e recuperá-la.

4. Ao logar, abrirá um menu contendo CADASTRO DE USUÁRIO e GERENCIAMENTO DE USUÁRIOS (apenas ADM tem acesso).

Consegui fazer tudo porém, no DataGridView do GERENCIAMENTO DE USUÁRIOS o professor solicitou isto:

MGks87j.png

Ai é que está o problema.... um dos problemas aliás!

Problemas (Acredito eu)

O professor utiliza o método ADO para fazer a conexão com o Banco de dados ACCESS. E eu OleDb.

Ele preenche de outra forma o DataGridView.

Acho os métodos dele um pouco ultrapassados e ele faltou algumas aulas, o que fez eu ir buscar aprendizado no youtube, aprendendo de outra forma.

Eu conecto com o Banco assim:

Xxwrnuv.png

E Carrego meu DataGridView Assim:

5flx89h.png

Formato o DataGridView assim:

KZqWR7K.png

Enfim...

O que eu fiz

Todo usuário que erra a senha 3x eu atualizo a situação no banco para BLOQUEADO. Sim, uma palavra "BLOQUEADO". Desta forma:

pXfpbp6.png

Ao clicar no CADEADO ABERTO ele ATIVA o usuário. Ao clicar no CADEADO FECHADO ele BLOQUEIA o usuário.

O que o professor quer é um checkbox que:

Se SELECIONADO, BLOQUEIA o usuário.

Se DESSELECIONADO, ATIVA o usuário.

Em ambas a situação eu confirmaria a ação e ATUALIZARIA no banco de dados a coluna SITUAÇÃO.

Não faço a mínima ideia de como fazer isto...

Também uma coluna que contenha o tal lápis para edição...

Eu não consegui fazer isto, pesquisei na internet e não consegui com exatidão, obtive muitos erros!

Por favor, se alguém souber como posso incluir a coluna da imagem e a coluna do Checkbox e atualizar a situação no BANCO mediante a marcação deste CHECKBOX eu agradeceria muito!

Um grande abraço a todos!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

Se gravares o campo situacao com booleano (sim/não) quando fazes:

dgvUsuario.DataSource = dt

já te aparecem checkBox's nessa coluna, chama-lhe Bloqueado em vez de situacao...

Para editar o grid e actualizar na base de dados mais simples deve ser:

Variáveis do form:

Private da As OleDbDataAdapter
Private dt As DataTable
Private conn As OleDbConnection
Private connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\BD.accdb; Persist Security Info=False;"

Botão de carregar grid:

conn = New OleDbConnection(connString)
Dim query As String = "SELECT * FROM tabela"
da = New OleDbDataAdapter(query, conn)
dt = New DataTable()
da.Fill(dt)
DataGridView1.DataSource = dt

Botão de salvar:

Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(da)
da.Update(dt)

Quando fechares o form podes fazer dispose e close dos objectos...

Mas o melhor é como fazes, fechar logo a conecção quando já não é precisa.... queres actualizar logo quando marcas/desmarcas a checkBox ou só quando carregares num botão para salvar e actualizar todos os registos?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
allcantaras

Se gravares o campo situacao com booleano (sim/não) quando fazes:

dgvUsuario.DataSource = dt

já te aparecem checkBox's nessa coluna, chama-lhe Bloqueado em vez de situacao...

Não sabia disso, vou testar!

Mas o melhor é como fazes, fechar logo a conecção quando já não é precisa.... queres actualizar logo quando marcas/desmarcas a checkBox ou só quando carregares num botão para salvar e actualizar todos os registos?

Só quero clicar no checkbox, depois clicar para salvar oq marquei, e atualizar na tabela o checkbox marcado ou desmarcado, entende?

@EDIT

Mudei a situação no Banco de dados para SIM/NÃO, mas no GRID os checkbox não apareceram...

poQ8ZH9.png

Editado por allcantaras

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

Devia ficar logo com a checkbox na coluna....

Faz em design-time então.... na propriedade Columns da datagridview clica nos 3 pontinhos e explora isso, tem lá a opção se é texto, checkbox, imagem, etc.... Tens que por a DataPropertyName com o nome do campo que está na DB...

Experimentaste o codigo do meu post de cima? não gostaste? acho que é o mais facil para o que queres....

usas o UPDATE... mas se por exemplo marcares 3 para desbloquear tens que guardar numa lista ou num array os valores (true/false) e os ID's que tens que alterar... vais adicionando à lista quando clicas na checkbox da coluna...

tens o evento CellContentClick que podes usar para ir adicionando à lista

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
allcantaras

Mas se eu carrego o datagridview pelo banco de dados, não seria um problema inserir uma coluna a mais via design?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.