Jump to content

Guardar dados de listView


security
 Share

Recommended Posts

Pessoal estou a concluir um projecto e falta-me o mais importante. guardar numa BD Access os dados existentes na listview.

Como e que eu faço isso???

é que da forma que tenho apenas me guarda um aletoriamente.

"Innovation distinguishes between a leader and a follower." Steve jobs.

Link to comment
Share on other sites

    Boa tarde,

    Mostra o código de como o tens, para que se possa ver qual o problema. Estas a usar ADO?

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Link to comment
Share on other sites

o codigo que tenho neste momento é o seguinte:

 Dim SqlMtrl As String = "Insert Into tbl_materialRepara (ID_repara,ID_material,qtd,precoUnit,valor) Value (@ID_repara,@ID_material,@qtd,@precoUnit,@valor)"
                Dim CMDMtrl As New OleDbCommand(SqlMtrl, coNn)
                CMDMtrl.Parameters.Add("@ID_repara", OleDbType.Integer)  'Aqui regista o nº de reparação.
                CMDMtrl.Parameters("@ID_repara").Value = Label23.Text
     'A partir de agora esta tudo na listView e nao sei como guardar. e que a list view tem mais que uma linha de dados... e tem de guradar todas as linhas numa tabela.


"Innovation distinguishes between a leader and a follower." Steve jobs.

Link to comment
Share on other sites

Por acaso o campo ID_repara não é auto-incrementável?

Se for estás a atribuir o valor da Label23 ao campo errado. Já agora, mete um breakpoint e vê o valor da Label23.

Dica:

Label23 não é um bom nome. Porque não usas lblIDReparacao, por exemplo? Bem mais fácil de ler e de manter o código 👍

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

mas ate ai o codigo funciona.

o meu problema e que tenho uma listView onde podemos adicionar varias coisas. e cada uma dessas coisas é uma linha e eu tenho de guardar todas as linhas

"Innovation distinguishes between a leader and a follower." Steve jobs.

Link to comment
Share on other sites

Eu fiz como me disseste mas da uma olhadela pois da-me um erro. Diz-me "Erro de Sintaxe na instrução Insert Into"

Dim Sql As String
            Sql = "Update tbl_repara Set ID_estadoRepara='" & ComboBox3.SelectedValue & "'"
            Sql = Sql & ", ID_reparador='" & ComboBox4.SelectedValue & "'"
            Sql = Sql & ", data_rpr='" & DateTimePicker2.Value.Date.ToString & "'"
            Sql = Sql & ", valor='" & TextBox8.Text & "'"
            Sql = Sql & "Where ID_rpr=" & Label23.Text
            manipulaRegistos(Sql)

      'ate aqui funciona bem... faz os Updates na boa... o erro esta daqui para a frente.

For Each Items As ListViewItem In ListView1.Items

                Dim SqlMtrl As String = "Insert Into tbl_materialRepara (ID_repara,ID_material,qtd,precoUnit,valor) Value (@ID_repara,@ID_material,@qtd,@precoUnit,@valor)"
                Dim CMDMtrl As New OleDbCommand(SqlMtrl, coNn)
                CMDMtrl.Parameters.Add("@ID_repara", OleDbType.Integer)
                CMDMtrl.Parameters("@ID_repara").Value = Label23.Text
                CMDMtrl.Parameters.Add("@ID_material", OleDbType.Integer)
                CMDMtrl.Parameters("@ID_material").Value = ListView1.Items(ListView1.SelectedItems(0).Index()).SubItems(0).Text
                CMDMtrl.Parameters.Add("@qtd", OleDbType.Integer)
                CMDMtrl.Parameters("@qtd").Value = ListView1.Items(ListView1.SelectedItems(0).Index()).SubItems(2).Text
                CMDMtrl.Parameters.Add("@precoUnit", OleDbType.Currency)
                CMDMtrl.Parameters("@precounit").Value = ListView1.Items(ListView1.SelectedItems(0).Index()).SubItems(3).Text
                CMDMtrl.Parameters.Add("@valor", OleDbType.Currency)
                CMDMtrl.Parameters("@valor").Value = ListView1.Items(ListView1.SelectedItems(0).Index()).SubItems(4).Text
                coNn.Open()
                CMDMtrl.ExecuteNonQuery()
                coNn.Close()
            Next
            MsgBox("Alteração registada com sucesso")

"Innovation distinguishes between a leader and a follower." Steve jobs.

Link to comment
Share on other sites

É normal que te grave 3 vezes a mesma coisa, o teu ciclo não está a fazer nada.

Estás a dizer:

ListView1.Items(ListView1.SelectedItems(0).Index()).SubItems(4).Text

Ou seja, significa que apenas o item seleccionado (0) será transportado para a base de dados. Se queres que todos sejam transportados, fazes:

For Each item As ListViewItem In ListView1.Items
CMDMtrl.Parameters("@valor").Value = item.SubItems(4).Text
Next
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.