1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB2008 - Arithmetic operation resulted in an overflow

Discussão em 'Programação' iniciada por tds, 3 de Abril de 2009. (Respostas: 4; Visualizações: 831)

  1. tds

    tds Power Member

    Código:
    Select Case tipo
                Case 0 'Criar ROWS (restrições)
                    dtAdapt(6) = New OleDbDataAdapter("SELECT RestricaoID, ProdutoID, LimiteInferior, LimiteSuperior, TipoRestricaoInf, TipoRestricaoSup FROM RestricoesProduto WHERE RestricoesProduto.ProdutoID=(SELECT ProdutoID FROM Produtos WHERE Nome='" & nomeProduto & "') AND (RestricoesProduto.LimiteInferior<>0 OR RestricoesProduto.LimiteSuperior<>0)", dbConn)
                    dtAdapt(6).Fill(dtSet, "tabelaGrid")
    
                    For i As Byte = 0 To (dtSet.Tables("tabelaGrid").Rows.Count - 1)
                        For z As Byte = 2 To 3
                            If dtSet.Tables("tabelaGrid").Rows(i).Item(z) <> "0,00" Then
                                Select Case dtSet.Tables("tabelaGrid").Rows(i).Item(z + 2)
                                    Case "≥"
                                        tipoLimite = "G"
                                    Case "≤"
                                        tipoLimite = "L"
                                    Case "="
                                        tipoLimite = "E"
                                End Select
                                colunas = colunas & " " & tipoLimite & "  RT" & Format(dtSet.Tables("tabelaGrid").Rows(i).Item(0), "00") & "P" & Format(dtSet.Tables("tabelaGrid").Rows(i).Item(1), "000") & vbCrLf
                            End If
                        Next
                    Next
                    Exit Select
    (...)
    
    Porque razão poderá este ciclo for dar o erro "Arithmetic operation resulted in an overflow"?

    Needing real help =z
     
    Última edição pelo moderador: 3 de Abril de 2009
  2. PNDmartins

    PNDmartins Power Member

    Em que linha especifica te dá o erro?
     
  3. tds

    tds Power Member

    For i As Byte = 0 To (dtSet.Tables("tabelaGrid").Rows.Count - 1)

    Nesta.
    Não estou a entender porquê mesmo =z
     
  4. PNDmartins

    PNDmartins Power Member

    É simples.

    Uma variável do tipo Byte só recebe valores de 0 a 255. A tua Datagrid deve de ter mais do que 255 rows, e quando passa para 256, arrebenta.

    Passa os tipos para integer isso deixa de te acontecer.

    Aconcelho-te a estudar os tipos de variaveis antes de os usar porque ciclos com variaveis do tipo byte vão-te sempre arrebentar.
     
  5. tds

    tds Power Member

    uauh... até me senti burro agora D: xD

    tkz ;)

    Vou seguir o teu conselho que pelos vistos preciso mesmo! ;) []
     

Partilhar esta Página