vascoc Posted June 26, 2012 at 01:57 PM Report Share #465612 Posted June 26, 2012 at 01:57 PM (edited) Boas, eu tenho o seguinte Formulário. E gostaria de ao escolher a opção Normal, iria considerar como "0" e administrador como "1" http://img690.imageshack.us/img690/9100/gggnp.png Este é o meu código para inserir no user e na password, mas terei de acrescentar a parte dos Direitos, mas não estou a ver como, como é que vou fazer os "if's". Obrigado Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If UserTextBox.Text = "" And PasswordTextBox.Text = "" Then MsgBox("Preencha os campos!") Else Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("INSERT INTO Utilizadores ([Nome], [password]) VALUES ('" & UserTextBox.Text & "','" & PasswordTextBox.Text & "')", conn) da = New SqlCeDataAdapter(cmd) ds = New DataSet() conn.Open() Dim dr As SqlCeDataReader = cmd.ExecuteReader With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If ' .Open() ' abrimos a conexao End With MsgBox("Registo inserido com sucesso !") Login.Show() Me.Close() Catch ex As Exception MessageBox.Show(ex.ToString) End Try conn.Close() End If End Sub http://img16.imageshack.us/img16/4295/gggjb.png Edited June 26, 2012 at 01:59 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 02:07 PM Report Share #465621 Posted June 26, 2012 at 02:07 PM (edited) Hum, segue o exemplo: conexao.Open() Dim i As Integer = 0 Dim variavelLogin As Boolean = False Dim cmdInsercao As SqlCommand Dim vardados As String = "Select * from Utilizadores" comando = New SqlCommand(vardados, conexao) dr = comando.ExecuteReader() While (dr.Read()) If dr.Item("nome") = txtuser.Text And dr.Item("password") = txtpasse.Text Then variavelLogin = True Exit While End If End While If variavelLogin = True Then If dr.Item("permissao") = "Administrador" Then Principal.show() End If Else Msgbox("Dados incorretos.") End If Conexao.close() Edited June 26, 2012 at 02:08 PM by NunoDinis Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 02:14 PM Author Report Share #465627 Posted June 26, 2012 at 02:14 PM teria de ser algo tipo isto ? Private Sub Direitos_userComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Direitos_userComboBox.SelectedIndexChanged If Direitos_userComboBox.SelectedItem = "Normal" Then direitos = 0 If Direitos_userComboBox.SelectedItem = "Administrador" Then direitos = 1 End If End If End Sub E mudar o sql para ? cmd = New SqlCeCommand("INSERT INTO Utilizadores ([Nome], [password], [Direitos_user]) VALUES ('" & UserTextBox.Text & "','" & PasswordTextBox.Text & "'," & direitos & ")", conn) Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 02:30 PM Report Share #465639 Posted June 26, 2012 at 02:30 PM Só agora reparei que tu queres adicionar um novo utilizador, e mandar para a BD a permissão, ou seja, se é adm ou normal. Fiz confusão. Vamos por partes, a tua combobox não está a ser carregada por nenhum BD , certo ? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 02:31 PM Author Report Share #465640 Posted June 26, 2012 at 02:31 PM (edited) Também me pareceu 😛 Ya, eu é que adicionei os dois items, o Normal e Admin.. Edited June 26, 2012 at 02:33 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 02:37 PM Report Share #465645 Posted June 26, 2012 at 02:37 PM Acho que deverias mandar o nome para a BD, visto que não tens nenhuma tabela com permissões. Se tivesse faria sentido mandares o código da mesma. Sendo assim ficaria algo do género: cmd = New SqlCeCommand("INSERT INTO Utilizadores ([Nome], [password], [Direitos_user]) VALUES ('" & UserTextBox.Text & "','" & PasswordTextBox.Text & "'," & "'," & combobox1.selectItem & ")", conn) Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 02:45 PM Author Report Share #465649 Posted June 26, 2012 at 02:45 PM (edited) Acho que deverias mandar o nome para a BD, visto que não tens nenhuma tabela com permissões. Se tivesse faria sentido mandares o código da mesma. Sendo assim ficaria algo do género: cmd = New SqlCeCommand("INSERT INTO Utilizadores ([Nome], [password], [Direitos_user]) VALUES ('" & UserTextBox.Text & "','" & PasswordTextBox.Text & "'," & "'," & combobox1.selectItem & ")", conn) Inseris-te um ," & "' a mais, fica assim então. cmd = New SqlCeCommand("INSERT INTO Utilizadores ([Nome], [password], [Direitos_user]) VALUES ('" & UserTextBox.Text & "','" & PasswordTextBox.Text & "','" & Direitos_userComboBox.SelectedItem & "')", conn) Edited June 26, 2012 at 02:46 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 02:47 PM Report Share #465651 Posted June 26, 2012 at 02:47 PM (edited) vascoc, eu pus o nome da combobox do teste que fiz. é óbvio que tens que adaptar o exemplo que te mandei ao nome da tua combobox. E sim, "selecteditem". Mas funciona certo ? Edited June 26, 2012 at 02:48 PM by NunoDinis Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 02:53 PM Author Report Share #465656 Posted June 26, 2012 at 02:53 PM (edited) Sim eu isso entendi, aquela parte é que estava a mais, sim funciona. Então e tipo imagina-mos que eu quero verificar se o USER que está ligado é administrador ou não quando entra num determinado form ? Edited June 26, 2012 at 02:57 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 02:56 PM Report Share #465658 Posted June 26, 2012 at 02:56 PM fazes uma query e verificas.. estás-me a perguntar isso para fazer as permissões de visualização ? Ex: admin pode ver tudo ; Gestor só pode listar BLA BLA BLA ? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 02:57 PM Author Report Share #465660 Posted June 26, 2012 at 02:57 PM (edited) fazes uma query e verificas.. estás-me a perguntar isso para fazer as permissões de visualização ? Ex: admin pode ver tudo ; Gestor só pode listar BLA BLA BLA ? Ya isso mesmo. Teria de fazer uma conexão a ver se a minha variável username tem direitos de autor ? Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("SELECT Nome FROM Utilizadores WHERE Direitos user '" & username & "' ", conn) da = New SqlCeDataAdapter(cmd) ds = New DataSet() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try total = ds.Tables("consulta").Rows.Count If total = 0 Then MessageBox.Show("Nenhum registo encontrado") Else End If conn.Close() End Sub Edited June 26, 2012 at 02:57 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 03:00 PM Report Share #465663 Posted June 26, 2012 at 03:00 PM Neste caso tens duas opções: -Trabalhas por painéis, e quando fazes o Login dizes o que o utilizador que está logado pode ver, escondendo o resto; -Ou então fazes um formulário para cada permissão (o que não é correto); Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 03:02 PM Author Report Share #465665 Posted June 26, 2012 at 03:02 PM Eu queria tipo, ao entrar no form Administração queria que verificasse se era admin, snão escondia certos botões, só isso. Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 03:06 PM Report Share #465668 Posted June 26, 2012 at 03:06 PM então é fácil.. guardas o cod_user numa variável global. No form Load tens que fazer uma query onde saberás qual a permissão dele. Estás a perceber a lógica ? Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 03:11 PM Author Report Share #465670 Posted June 26, 2012 at 03:11 PM Ya ya, mas acho é melhor porcurar pelo nome, já que não há users repetidos. E o auto-increment tem-me estado a contar os números mesmo que apague da BD, tipo tinha 3 registos, apaguie-os e contou o próximo como 4. Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 03:14 PM Report Share #465671 Posted June 26, 2012 at 03:14 PM Uma coisa não tem nada haver com a outra. É mais seguro por código porque não existem repetidos, mas agora é contigo. Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 03:15 PM Author Report Share #465673 Posted June 26, 2012 at 03:15 PM (edited) Então tipo, tenho esta conexão no load do form que vai buscar os Direitos, mas e depois ? Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("SELECT Direitos_user FROM Utilizadores WHERE Nome Like '" & username & "' ", conn) da = New SqlCeDataAdapter(cmd) ds = New DataSet() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try total = ds.Tables("consulta").Rows.Count If total = 0 Then MessageBox.Show("Nenhum registo encontrado") Else End If conn.Close() Edited June 26, 2012 at 03:16 PM by vascoc Link to comment Share on other sites More sharing options...
NunoDinis Posted June 26, 2012 at 03:18 PM Report Share #465676 Posted June 26, 2012 at 03:18 PM (edited) conexaoModulos.Close() Dim SqlCursos As String = "SELECT Direitos_user FROM Utilizadores WHERE Nome Like '" & username & "' " Dim dt As New DataTable Dim adapter As New SqlDataAdapter 'Consulta os dados no banco de dados conexaoModulos.Open() adapter.SelectCommand = New SqlCommand(SqlCursos, conexaoModulos) adapter.Fill(dt) conexaoModulos.Close() 'Insere os dados no combobox With cbboxTurma 'Identifica o combo .DataSource = dt .DisplayMember = "Direitos_user" End With conexaoModulos.close() Estou mais habituado com esta função. Edited June 26, 2012 at 03:18 PM by NunoDinis Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 03:23 PM Author Report Share #465677 Posted June 26, 2012 at 03:23 PM (edited) Certo, mas agora só me falta comparar se o username é admin ou normal, como é que faço essa parte ? Edited June 26, 2012 at 03:45 PM by vascoc Link to comment Share on other sites More sharing options...
vascoc Posted June 26, 2012 at 03:45 PM Author Report Share #465690 Posted June 26, 2012 at 03:45 PM (edited) Algo tipo... ? Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try conn = New SqlCeConnection(My.Settings.HOTEL_DBConnectionString) cmd = New SqlCeCommand("SELECT Direitos_user FROM Utilizadores WHERE Nome ='" & username & "'", conn) da = New SqlCeDataAdapter(cmd) ds = New DataSet() With conn If .State = ConnectionState.Open Then 'ta aberto .Close() ' fechamos End If .Open() ' abrimos a conexao End With da.Fill(ds, "consulta") cb = New SqlCeCommandBuilder(da) Catch ex As Exception MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try If ds.Tables("consulta").Rows(0).Item(2) = "Administrador" Then Picuser.Visible = False lbluser.Visible = False End If conn.Close() End Sub Edited June 26, 2012 at 03:46 PM by vascoc Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now