• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Luis Marques

while

17 mensagens neste tópico

Boas, tou aqui com um problema que é o seguinte quero passar dados ao clicar num botao, que estao em numericupdown para uma datagrid, ate agora tudo bem, o problema e ao clicar no botao novamente em vez que enviar o dado para a linha abaixo, cria a linha mas a mesma fica em branco, nao tou a ver como resolver.

codigo:

        ' CARREGAR OS DADOS
        Dim idx_linha As Integer
        idx_linha = 0


           Dim linha As New DataGridViewRow()
        DataGridView1.Rows.Add(linha)
        DataGridView1.Rows(idx_linha).Cells(0).Value = NUDPecaCompr.Value
        DataGridView1.Rows(idx_linha).Cells(1).Value = NUDQT.Value

        idx_linha = idx_linha + 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao esta, se eu fizer isso atraves de um select a base dados consigo colocar bem o while, agora aqui esta sempre a dar barraca, nunca dá, devo estar a fazer mal. no codigo que coloquei nao esta dentro de um ciclo while

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao esta, se eu fizer isso atraves de um select a base dados consigo colocar bem o while, agora aqui esta sempre a dar barraca, nunca dá, devo estar a fazer mal. no codigo que coloquei nao esta dentro de um ciclo while

experimenta la assim

        ' CARREGAR OS DADOS

        Dim idx_linha As Integer

        idx_linha = idx_linha - 1

          Dim linha As New DataGridViewRow()

        DataGridView1.Rows.Add(linha)

        DataGridView1.Rows(idx_linha).Cells(0).Value = NUDPecaCompr.Value

        DataGridView1.Rows(idx_linha).Cells(1).Value = NUDQT.Value

        idx_linha = idx_linha + 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dá logo este erro : Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

aqui :  DataGridView1.Rows(idx_linha).Cells(0).Value = NUDPecaCompr.Value

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dá logo este erro : Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

aqui :  DataGridView1.Rows(idx_linha).Cells(0).Value = NUDPecaCompr.Value

Eu penso que o erro esta no idx_linha se assim nao da experimenta igualar a 1 ver o que dá, porque nao estou a ver mais nada, ja fiz aqui tambem uma pesquisa mas nao encontrei nada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim ja tentei, e o que faz é, clico no botao passa o registo, clico botao novamente e passa o registo, tudo bem ate agora, depois cada vez que clico novamente em vez de passar registos começa a fazer linhas em branco entre estes 2 campos que passaram.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim ja tentei, e o que faz é, clico no botao passa o registo, clico botao novamente e passa o registo, tudo bem ate agora, depois cada vez que clico novamente em vez de passar registos começa a fazer linhas em branco entre estes 2 campos que passaram.

Uhm entao nao me parece que o problema seja na formaçao, mas sim na passagem dos dados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja tive este problema a uns tempos, e o while resolveu, mas era a usar um select a base de dados, agora assim, nao sei como fazer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nesta linha

DataGridView1.Rows.Add(linha)

linha e o que?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esta a acrescentar mais 1 linha sempree

Passa la todo o codigo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        NUDCompr.Maximum = 99999
        NUDPecaCompr.Maximum = 99999
        NUDQT.Maximum = 99999
        NUDCompr.Minimum = 1
        NUDPecaCompr.Minimum = 1
        NUDQT.Minimum = 1
     


        NUDCompr.Value = 6500
        NUDPecaCompr.Value = 1000
        NUDQT.Value = 2
        Calcular()
    End Sub
    Private Sub Calcular()
        Dim ComprimentoBase As Integer = NUDCompr.Value
        Dim ComprimentoPecas As Integer = NUDPecaCompr.Value
        Dim Divisoes As Double = CInt(NUDQT.Value)

        If ComprimentoPecas * Divisoes > ComprimentoBase Then
            MsgBox("O pedido excede o tamanho base da peça.", MsgBoxStyle.Critical, "Erro!")
            Exit Sub
        End If

        Dim ComprimentoPorporcional As Integer = CInt((NUDPecaCompr.Value * PB.Width) / NUDCompr.Value)

        Dim g As Graphics = PB.CreateGraphics
        g.Clear(Color.White)

        Dim ActPeca As Integer = 1

        For i As Integer = 0 To PB.Width Step ComprimentoPorporcional
            If ActPeca - 1 <= Divisoes Then
                g.DrawLine(Pens.Black, i, 0, i, PB.Height)
            End If

            If ActPeca <= Divisoes Then
                g.DrawString(ComprimentoPecas, New Font("Arial", 14, FontStyle.Regular, GraphicsUnit.Pixel), Brushes.Black, i, 0)



            End If

            ActPeca += 1
        Next

    End Sub

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

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        ' CARREGAR OS DADOS
        Dim idx_linha As Integer
        idx_linha = 0


        Dim linha As New DataGridViewRow()
        DataGridView1.Rows.Add(linha)

        DataGridView1.Rows(idx_linha).Cells(0).Value = NUDPecaCompr.Value
        DataGridView1.Rows(idx_linha).Cells(1).Value = NUDQT.Value

        idx_linha = idx_linha + 1
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Linha esta declarado onde?

experimenta assim

DataGridView1.Rows.Add(linha - 1) ou +1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta aqui  Dim linha As New DataGridViewRow()

e como disseste nao dá

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ninguem me sabe ajudar, com uma solunçaozita para o meu problema:  :bored:

0

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