AnaGPSI Posted May 31, 2012 at 03:04 PM Report #459488 Posted May 31, 2012 at 03:04 PM 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?
Caça Posted May 31, 2012 at 03:26 PM Report #459493 Posted May 31, 2012 at 03:26 PM Não passa aqui? MsgBox(a) Pedro Martins Não respondo a duvidas por PM
Caça Posted June 1, 2012 at 08:07 AM Report #459617 Posted June 1, 2012 at 08:07 AM 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
AnaGPSI Posted June 1, 2012 at 08:24 AM Author Report #459619 Posted June 1, 2012 at 08:24 AM Então faço como? Eu tenho o mesmo código para adicionar neste so alterei para delete.
Caça Posted June 1, 2012 at 08:38 AM Report #459624 Posted June 1, 2012 at 08:38 AM For j = 0 To ListBox2.Items.Count - 1 Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 08:41 AM Author Report #459626 Posted June 1, 2012 at 08:41 AM Aparece-me este erro: Índice fora dos limites da matriz. na linha: a = ListBox2.SelectedItems(j)
Caça Posted June 1, 2012 at 08:42 AM Report #459627 Posted June 1, 2012 at 08:42 AM Também tens de trocar de SelectedItems para Items Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 08:47 AM Author Report #459628 Posted June 1, 2012 at 08:47 AM Ele assim esta-me a eliminar todos os que não estão seleccionados!
Caça Posted June 1, 2012 at 08:54 AM Report #459631 Posted June 1, 2012 at 08:54 AM Pensei que querias eliminar todos os itens que estão na ListBox2.. Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 08:56 AM Author Report #459632 Posted June 1, 2012 at 08:56 AM (edited) Peço desculpa se não indiquei bem o problema! Eu quero eliminar apenas aqueles que estiverem selecionados Edited June 1, 2012 at 08:56 AM by AnaGPSI
Caça Posted June 1, 2012 at 08:57 AM Report #459634 Posted June 1, 2012 at 08:57 AM E com o código anterior os que quando tinhas algum item selecionado não eliminava? Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 08:58 AM Author Report #459635 Posted June 1, 2012 at 08:58 AM (edited) Não! Nem apareciam as msgbox. Edited June 1, 2012 at 08:58 AM by AnaGPSI
Caça Posted June 1, 2012 at 09:13 AM Report #459640 Posted June 1, 2012 at 09:13 AM Ou não tinhas nenhum item seleccionado ou não estás a indicar a ListBox correcta... Olha que isso tem sempre razão.. Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 09:18 AM Author Report #459641 Posted June 1, 2012 at 09:18 AM 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.
Caça Posted June 1, 2012 at 09:22 AM Report #459642 Posted June 1, 2012 at 09:22 AM Ao fazeres isso os como é que sabes que esses items tem de ser eliminados na bd? Pedro Martins Não respondo a duvidas por PM
AnaGPSI Posted June 1, 2012 at 09:25 AM Author Report #459643 Posted June 1, 2012 at 09:25 AM 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!")
Caça Posted June 1, 2012 at 09:32 AM Report #459645 Posted June 1, 2012 at 09:32 AM 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
AnaGPSI Posted June 1, 2012 at 09:34 AM Author Report #459648 Posted June 1, 2012 at 09:34 AM Então removo esta parte do código? Dim i As Integer = 0 For i = 0 To ListBox2.SelectedItems.Count - 1 ListBox2.Items.RemoveAt(ListBox2.SelectedIndex) Next
Caça Posted June 1, 2012 at 09:37 AM Report #459650 Posted June 1, 2012 at 09:37 AM Passa-a para baixo, depois de os eliminares na BD. Pedro Martins Não respondo a duvidas por PM
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