vb.net арифметическая операция привела к переполнению

#vb.net #math

#vb.net #математика

Вопрос:

У меня есть текстовое поле, в которое я ввожу число, пример числа — 1860812430041. Разделы кода, в которых я вызываю это текстовое поле, являются:

 Convert.ToDouble(cnptxt.Text)
Dim cnpp As Double
cnpp = Val(cnptxt.Text)
Dim cnp As Double
If Me.ClientiTableAdapter.InsertQueryClienti(nume, 
      prenume, cnp, varsta, adresa, localitate, 
      datatxt.Value.ToString("yyyy/MM/dd"), starecivila, 
      numarcopii, venittxt.Text, tipcreditales, rezultat) Then
            MsgBox("Adaugat cu succes in baza de date!")
  

При запуске приложения я получаю сообщение об ошибке «Арифметическая операция привела к переполнению», и это облегчает условие If.
Весь код является

  Convert.ToDouble(cnptxt.Text)
        Convert.ToInt32(numarcopiitxt.Text)
        Convert.ToInt32(venittxt.Text)

        Dim cnpp As Double
        cnpp = Val(cnptxt.Text)
        Dim nrcopii As Integer
        nrcopii = Val(numarcopiitxt.Text)

        Dim nume As String

        Dim prenume As String
        Dim cnp As Double
        Dim varsta As Integer
        Dim adresa As String
        Dim localitate As String
        Dim starecivila As String
        Dim numarcopii As Integer
        Dim data As Date = datatxt.Value.Date
        Dim venit As Integer
        Dim tipcreditales As String
        Dim rezultat As String




        nume = numetxt.Text
        prenume = prenumetxt.Text
        cnp = cnpp
        varsta = varstatxt.Text
        adresa = adresatxt.Text
        localitate = localitatetxt.Text
        starecivila = ComboBox2.SelectedItem.ToString()
        numarcopii = numarcopiitxt.Text
        tipcreditales = ComboBox1.SelectedItem.ToString()
        rezultat = rezultattxt.Text
        venit = venittxt.Text
        data = datatxt.Value.ToString("yyyy/MM/dd")


        If Me.ClientiTableAdapter.InsertQueryClienti(nume, prenume, cnp, varsta, adresa, localitate, datatxt.Value.ToString("yyyy/MM/dd"), starecivila, numarcopii, venittxt.Text, tipcreditales, rezultat) Then
            MsgBox("Adaugat cu succes in baza de date!")
        End If
  

Таблица DB, в которую я пытаюсь вставить, имеет номер, установленный как принятый.

Комментарии:

1. скорее всего, вы что-то делаете с этой цифрой неправильно (например, пытаетесь обработать ее как целое число) в части кода, которую вы не показали

2. Вы показываете cnpp = Val(cnptxt.Text) , но ваше InsertQueryClienti использование cnp , которое никогда не инициализируется. Почему вы присваиваете значение переменной, которую вы не используете, и используете переменную, которой вы никогда не присваиваете значение? (Вы также выполняете a, Convert.ToDouble(cnptxt.Text) которое затем отбрасываете; вам нужно присвоить результат этого Convert переменной. Ваш код нефункциональен несколькими способами.)

3. @user3801004: Вам следует начать с просмотра одного-двух профессиональных курсов по pluralsight.

4. Возможно, вы делаете слишком много одновременно. Попробуйте научиться использовать отладчик и писать только по одной строке за раз, а затем скомпилируйте, чтобы посмотреть, что он делает.

5. Ну, поскольку ошибка, которую вы получаете, исходит от InsertQueryClienti , и мы не знаем, к чему это приводит, мое предложение? Скопируйте значения всех переменных, которые вы передаете в него, получите SQL, который выполняется во время операции вставки, и запустите запрос в SQL Server или Access, подключив значения, которые вы скопировали из переменных, и посмотрите, в чем фактическая проблема с запросом. (Вы не включили это ни в свой исходный код, ни в новый код, который вы отредактировали для включения, и у нас нет значений всех элементов управления textbox или вашей базы данных, чтобы использовать их для отладки для вас.)