Jump to content

[Resolvido] Combobox e modo inserção


vascoc
 Share

Recommended Posts

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 by vascoc
Link to comment
Share on other sites

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 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

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

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

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

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 by vascoc
Link to comment
Share on other sites

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 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

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 by vascoc
Link to comment
Share on other sites

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 by vascoc
Link to comment
Share on other sites

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

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

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 by vascoc
Link to comment
Share on other sites

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 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

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 by vascoc
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.