Jump to content

Recommended Posts

Posted

Tenho o seguinte código que me elimina da base de dados items seleccionados na listbox mas o problema é que ele não passa nas msgBox logo não me está a passar no codigo.

Dim connetionString As String
    Dim oledbCnn, oledbCnn1 As OleDbConnection
    Dim oledbCmd, oledbCmd1 As OleDbCommand
    Dim cod_cur, cod_dis As Integer
    connetionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb"
    Dim mydb As New OleDbConnection(connetionString)
    mydb.Open()
    'MsgBox("State: " & mydb.State.ToString(),
    'MsgBoxStyle.Information)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'saber codigo curso e atribuir variavel
    Dim a As String
    Dim sql As String = "select * from curso where nome='" & combonomecurso.Text & "'"
    ListBox2.Show()
    oledbCnn = New OleDbConnection(connetionString)
    Try
	    oledbCnn.Open()
	    oledbCmd = New OleDbCommand(sql, oledbCnn)
	    Dim oledbReader As OleDbDataReader = oledbCmd.ExecuteReader()
	    While oledbReader.Read
		    cod_cur = oledbReader.Item(0)
	    End While
    Finally
    End Try
    Dim j As Integer = 0
    For j = 0 To ListBox2.SelectedItems.Count - 1
	    a = ListBox2.SelectedItems(j)
	    MsgBox(a)
	    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
	    'saber codigo disciplina e atribuir variavel
	    Dim sqla As String = "select * from disciplina where nome_disci='" & a & "'"
	    ListBox2.Show()
	    oledbCnn1 = New OleDbConnection(connetionString)
	    Try
		    oledbCnn1.Open()
		    oledbCmd1 = New OleDbCommand(sqla, oledbCnn1)
		    Dim oledbReader1 As OleDbDataReader = oledbCmd1.ExecuteReader()
		    While oledbReader1.Read
			    cod_dis = oledbReader1.Item(0)
			    MsgBox(cod_dis)
		    End While
	    Finally
	    End Try
	    Dim sqlf As String = "Delete from curso_disciplina where cod_curso=" & cod_cur & " and cod_disciplina=" & cod_dis & ""
	    Dim cmd3 As New OleDbCommand(sqlf, mydb)
	    cmd3.ExecuteNonQuery()
    Next
    MsgBox("Eliminada(s) disciplina(s) associada(s) a curso!")
   End Sub

Alguém me consegue explicar o que estou a fazer mal é que ao seleccionar as disciplinas que quero eliminar e ao carregar no botão aparece-me logo a msgbox final mas nao me elimina nada?

Posted

Estás a fazer isto

For j = 0 To ListBox2.SelectedItems.Count - 1

Se nenhum item tiver seleccionado não entra no ciclo, se quiseres percorrer todos os itens, seleccionados ou não, não podes fazer com a propriedade SelectedItems..

Pedro Martins

Não respondo a duvidas por PM

Posted

Pois eu sei que o vb tem sempre razão mas eu seleciono uma disciplina ele elimina-a da listbox atraves deste codigo que tenho antes do codigo que enviei no inicio do topico:

Dim i As Integer = 0
    For i = 0 To ListBox2.SelectedItems.Count - 1
	    ListBox2.Items.RemoveAt(ListBox2.SelectedIndex)
    Next

mas depois nao elimina da base de dados ou seja se voultar a repetir o procedimentio a disciplina volta a aparecer na listbox, só nao entendo porque nao elimina da base de dados.

Posted

Através desta parte:

Dim a As String
    Dim sql As String = "select * from curso where nome='" & combonomecurso.Text & "'"
    ListBox2.Show()
    oledbCnn = New OleDbConnection(connetionString)
    Try
	    oledbCnn.Open()
	    oledbCmd = New OleDbCommand(sql, oledbCnn)
	    Dim oledbReader As OleDbDataReader = oledbCmd.ExecuteReader()
	    While oledbReader.Read
		    cod_cur = oledbReader.Item(0)
	    End While
    Finally
    End Try
    Dim j As Integer = 0
    'For j = 0 To ListBox2.Items.Count - 1
    For j = 0 To ListBox2.SelectedItems.Count - 1
	    'a = ListBox2.Items(j)
	    a = ListBox2.SelectedItems(j)
	    MsgBox(a)
	    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
	    'saber codigo disciplina e atribuir variavel
	    Dim oledbCnn1 As OleDbConnection
	    Dim oledbCmd1 As OleDbCommand
	    Dim cod_dis As Integer
	    Dim sqla As String = "select * from disciplina where nome_disci='" & a & "'"
	    ListBox2.Show()
	    oledbCnn1 = New OleDbConnection(connetionString)
	    Try
		    oledbCnn1.Open()
		    oledbCmd1 = New OleDbCommand(sqla, oledbCnn1)
		    Dim oledbReader1 As OleDbDataReader = oledbCmd1.ExecuteReader()
		    While oledbReader1.Read
			    cod_dis = oledbReader1.Item(0)
			    MsgBox(cod_dis)
		    End While
	    Finally
	    End Try
	    Dim sqlf As String = "Delete from curso_disciplina where cod_curso=" & cod_cur & " and cod_disciplina=" & cod_dis & ""
	    Dim cmd3 As New OleDbCommand(sqlf, mydb)
	    cmd3.ExecuteNonQuery()
    Next
    MsgBox("Eliminada(s) disciplina(s) associada(s) a curso!")
Posted

Pois, essa é a intenção, mas como antes disse eliminas todos os itens selecionados na ListBox2, é normal que quando ele tente entrar no ciclo já não exista nenhum item selecionado, uma vez que esses já tinham sido removidos da ListBox anteriormente.

Pedro Martins

Não respondo a duvidas por PM

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
×
×
  • 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.