anaricko 0 Denunciar post Postado Março 10, 2011 Bom dia É o seguinte eu tenho um DropDownList com n nomes e à medida que vou seleccionando eu vou preenchendo uma listbox para ser mais facil depois eliminar um nome caso tenha enganado na selecção. A questão é que no final de todos os nomes seleccionados que pretendo queria coloca-los na base dados. A minha base dados sql tá formada com um Cod_Pedido e o NomeDest E à medida que realizo o meu codigo so fica gravado o ultimo nome que selecionei na dropdownlist. Onde está o problema?? Código (vb.net): Dim conn As New System.Data.SqlClient.SqlConnection() conn.ConnectionString = _Default.conne conn.Open() Dim destp As String destp = DropDownList3.Text Dim c As String c = DropDownList1.Text Dim sel As System.Data.SqlClient.SqlCommand = conn.CreateCommand() sel.CommandText = " SELECT NomeDest FROM Pedidos WHERE Cod_Pedido = '" & c & "'" conn.Close() conn.Open() Dim insdd As System.Data.SqlClient.SqlCommand = conn.CreateCommand() insdd.CommandText = " UPDATE Pedidos SET NomeDest = '" & destp & "' WHERE Cod_Pedido = '" & c & "'" insdd.ExecuteNonQuery() Dim db_r As SqlClient.SqlDataReader = sel.ExecuteReader(CommandBehavior.Default) Dim t As String Dim i As Integer Do While db_r.Read t = db_r.Item(0).ToString For i = 1 To db_r.FieldCount - 1 t &= vbTab & db_r.Item(i).ToString Next i ListBox1.Items.Add(t) Loop Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click If ListBox1.SelectedIndex > -1 Then ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End If Compartilhar este post Link para o post Compartilhar em outros sites
João Arruda 0 Denunciar post Postado Março 14, 2011 Bom dia É o seguinte eu tenho um DropDownList com n nomes e à medida que vou seleccionando eu vou preenchendo uma listbox para ser mais facil depois eliminar um nome caso tenha enganado na selecção. A questão é que no final de todos os nomes seleccionados que pretendo queria coloca-los na base dados. A minha base dados sql tá formada com um Cod_Pedido e o NomeDest E à medida que realizo o meu codigo so fica gravado o ultimo nome que selecionei na dropdownlist. Onde está o problema?? Código (vb.net): Dim conn As New System.Data.SqlClient.SqlConnection() conn.ConnectionString = _Default.conne conn.Open() Dim destp As String destp = DropDownList3.Text Dim c As String c = DropDownList1.Text Dim sel As System.Data.SqlClient.SqlCommand = conn.CreateCommand() sel.CommandText = " SELECT NomeDest FROM Pedidos WHERE Cod_Pedido = '" & c & "'" conn.Close() conn.Open() Dim insdd As System.Data.SqlClient.SqlCommand = conn.CreateCommand() insdd.CommandText = " UPDATE Pedidos SET NomeDest = '" & destp & "' WHERE Cod_Pedido = '" & c & "'" insdd.ExecuteNonQuery() Dim db_r As SqlClient.SqlDataReader = sel.ExecuteReader(CommandBehavior.Default) Dim t As String Dim i As Integer Do While db_r.Read t = db_r.Item(0).ToString For i = 1 To db_r.FieldCount - 1 t &= vbTab & db_r.Item(i).ToString Next i ListBox1.Items.Add(t) Loop Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click If ListBox1.SelectedIndex > -1 Then ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) End If é o seguinte... pelo que eu percebi no teu código, tu definiu uma variável String destp, que pega o texto da DropDownList, certo? Mas esta variável pega apenas o texto da DropDownList, que é o valor que está atualmente selecionado. Se você quiser salvar todos os itens que você seleciona no banco de dados (já que você lista todos os elementos selecionados na ListBox), tu poderias fazer o seguinte: ao invés de selecionar os valores de destp e c pelas DropDownList, você poderia colocar, além dos valores da DropDownList3 na ListBox, os da DropDownList1 em outra ListBox, entituladas para a tua preferência. Pelo que eu entendi, c é uma codificação do pedido e destp é um nome. Fazer um laço de repetição para as ListBox, não para as DropDownList. Sairia mais ou menos assim: For i=0 To ListBox1.Items.Count - 1 'porque a contagem dos itens será maior que o último índice insdd.CommandText = " UPDATE Pedidos SET NomeDest = '" & ListBox1.Items(i).ToString() & "' WHERE Cod_Pedido = '" & ListBox2.Items(i).ToString() & "'" insdd.ExecuteNonQuery() Next i Agora a pergunta é: os códigos já estão registrados no BD? Este é só um formulário de atualização de Pedidos? Espero ter ajudado... Qualquer problema, avise! :) Compartilhar este post Link para o post Compartilhar em outros sites