Ir para o conteúdo
Luis Marques

Problema no update

Mensagens Recomendadas

Luis Marques    0
Luis Marques

Boas, tou com um problema no update que é o seguinte.

Tenho vários itens por exemplo o item 1, item 2, item 3, e ao actulizar apenas vai gravar o item 2 , item 3...

Ou seja o item com o valor mais baixo nunca grava.

Deixo aqui o codigo que tenho para fazer o update

   

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'alterar na tabela encomendas

        Dim intEncomenda As Integer = ToNumber(Id_encomendaTextBox.Text)

        Dim intCliente As Integer = ToNumber(Id_clienteTextBox.Text)

        Dim dtData As String = ToDbdate(DataDateTimePicker.Value)

        Dim intdescricao As String = ToStringA(TextBox2.Text)

        Dim strResp As String = ToStringA(Responsavel_pdTextBox.Text)

        Dim dblTotal As Object = ToNumber(TotalTextBox.Text)

        Dim strSql As String = "UPDATE encomenda SET id_cliente=" & intCliente & ",data=" & dtData & ",descricao=" & intdescricao & ",responsavel_pd=" & strResp & ",total=" & dblTotal & " where [id_encomenda]=" & intEncomenda & ""

        OleDBExecute(strSql)

        'alterar na tabela item encomendas

        For i = 0 To DataGridView1.Rows.Count - 2 ' para correr todas as linhas

            Dim intEncomendas As Integer = ToNumber(nz(Id_encomendaTextBox.Text, 0))

            Dim intid_item As Integer = ToNumber(nz(DataGridView1.Rows(i).Cells(0).Value, 0))

            Dim intidproduto As Integer = ToNumber(nz(DataGridView1.Rows(i).Cells(1).Value, 0))

            Dim intquantidade As Integer = ToNumber(nz(DataGridView1.Rows(i).Cells(2).Value, 0))

            Dim intpreco As Object = ToNumber(nz(DataGridView1.Rows(i).Cells(3).Value, 0))

            Dim intid_imagem As Integer = ToNumber(nz(DataGridView1.Rows(i).Cells(4).Value, 0))

            strSql = "UPDATE itemencomenda SET id_encomenda=" & intEncomendas & ",id_item=" & intid_item & ",id_produto=" & intidproduto & ",quantidade=" & intquantidade & ",preco=" & intpreco & " ,id_imagem=" & intid_imagem & " where [id_encomenda]=" & intEncomenda & ""

            OleDBExecute(strSql)

        Next

    End Sub

Public Function OleDBExecute(ByVal strSql As String) As Integer

        Using connection As New OleDbConnection(pap.My.Settings.ligacaoBD)

            Dim cmd As New OleDbCommand(strSql, connection)

            cmd.CommandType = CommandType.Text

            connection.Open()

            Try

                Dim i As Integer = cmd.ExecuteNonQuery()

                Return i

            Catch ex As OleDb.OleDbException

                MsgBox(ex.Message)

            End Try

        End Using

    End Function

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ricardoantunes    1
ricardoantunes

porque é que estas a fazer: For i = 0 To DataGridView1.Rows.Count - 2

não pode ser: For i = 0 To DataGridView1.Rows.Count - 1 ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
esquima    0
esquima

tenta assim

For Each row As DataGridViewRow In Me.DataGridView1.Rows

              Dim intEncomendas As Integer = ToNumber(nz(Id_encomendaTextBox.Text, 0))

            Dim intid_item As Integer = ToNumber(nz( row.Cells(0).Value , 0))

            Dim intidproduto As Integer = ToNumber(nz( row.Cells(1).Value , 0))

            Dim intquantidade As Integer = ToNumber(nz( row.Cells(2).Value , 0))

            Dim intpreco As Object = ToNumber(nz( row.Cells(3).Value , 0))

            Dim intid_imagem As Integer = ToNumber(nz( row.Cells(4).Value , 0))

            strSql = "UPDATE itemencomenda SET id_encomenda=" & intEncomendas & ",id_item=" & intid_item & ",id_produto=" & intidproduto & ",quantidade=" & intquantidade & ",preco=" & intpreco & " ,id_imagem=" & intid_imagem & " where [id_encomenda]=" & intEncomenda & ""

            OleDBExecute(strSql)

            Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Luis Marques    0
Luis Marques

Sim grava, o valor mais baixo do item é que nao grava.

Ou seja só grava o item  7,8 em vez de gravar o item 6,7,8.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Luis Marques    0
Luis Marques

Fiz agora o debug e faz o for 3 vezes, ou seja para os 3 itens k tenho.

Não percebo porque está a dar mal, já que passa todos os itens.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Luis Marques    0
Luis Marques

esquecime de dizer que com este codigo que deste nao passa os valores todos dos items, com aquele que eu tinha é que passam os valores todos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Luis Marques    0
Luis Marques

upss... tenho de corrigir o que disse, ja estava a fazer confusao.

O TEU CODIGO É QUE ESTÁ A PASSAR TODOS OS ITEMS, o meu é que nao!xD

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Ontem já te mostrei como fazer um ciclo numa datagridview. Qual é o problema?

            For Each row As DataGridViewRow In Me.DataGridView1.Rows
                If Not row.IsNewRow Then
                       Debug.WriteLine(row.Cells(0).Value)
                End If
            Next

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade