Member 13592275 Ответов: 1

Он говорит: "не удалось преобразовать значение параметра из строки в int32" .. Кто-нибудь может мне помочь, пожалуйста


 Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Try
            cm2 = New OleDb.OleDbCommand
            With cm2
                .Connection = cn
                .CommandType = CommandType.Text
                .CommandText = "INSERT INTO PatientData (Name, Age, ICNum, Address, Dr_Preffered, PatientID, CheckIn, RoomType, RoomNo) VALUES (@ptNam, @ptAg, @ptIC, @ptAdr, @ptDR, @ptID, @ptChkIn, @ptType, @ptRoom,)"
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptNam", System.Data.OleDb.OleDbType.VarChar, 255, Me.txtName.Text))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptAg", System.Data.OleDb.OleDbType.Integer, 255, Me.txtAge.Text))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptIC", System.Data.OleDb.OleDbType.Integer, 255, Me.txtIC.Text))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptAdr", System.Data.OleDb.OleDbType.VarChar, 255, Me.txtAddress.Text))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptDR", System.Data.OleDb.OleDbType.VarChar, 255, Me.cmbDoctor.Text.Length))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptID", System.Data.OleDb.OleDbType.VarChar, 255, Me.txtPtID.Text))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptChkIn", System.Data.OleDb.OleDbType.DBDate, 255, Me.DateTimePicker1.Value))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptType", System.Data.OleDb.OleDbType.VarChar, 255, Me.rbIP.Checked = True Or Me.rbOP.Checked = True))
                .Parameters.Add(New System.Data.OleDb.OleDbParameter("@ptRoom", System.Data.OleDb.OleDbType.VarChar, 255, Me.cmbRoom.Text.Length))

                cm2.Parameters("@ptNam").Value = Me.txtName.Text
                cm2.Parameters("@ptAg").Value = Me.txtAge.Text
                cm2.Parameters("@ptIC").Value = Me.txtIC.Text
                cm2.Parameters("@ptAdr").Value = Me.txtAddress.Text
                cm2.Parameters("@ptDR").Value = Me.cmbDoctor.Text.Length
                cm2.Parameters("@ptID").Value = Me.txtPtID.Text
                cm2.Parameters("@ptChkIn").Value = Me.DateTimePicker1.Value
                cm2.Parameters("@ptType").Value = Me.rbIP.Checked = True Or Me.rbOP.Checked = True
                cm2.Parameters("@ptRoom").Value = Me.cmbRoom.Text.Length

                cm2.ExecuteNonQuery()
                MsgBox("Patient Register Successesfully.", MsgBoxStyle.Information)
                Exit Sub
            End With
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub

What I have tried:

i thought it is because of datetimepicker..
maybe it's because of my rb

Bryian Tan

вы отлаживали и видели, какая строка вызывает ошибку?

pt1401

А каково содержание ваших текстовых полей?
Я предполагаю, что либо txtAge, либо txtIC не имеют в себе целых чисел?

Nakhia_ind

сэр два раза принимал значения параметров.если вы хотите отправить параметры процедуры, то тип данных подробно можете сказать.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
я думал, что это из-за datetimepicker..
может быть, это из-за моего РБ

Нет- не думай, не говори "может быть", никогда, это не игра в угадайку. Используйте отладчик, чтобы обеспечить и быть в безопасности. Есть английская поговорка: Лучше перестраховаться, чем потом жалеть.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
Visual Basic / Visual Studio Video Tutorial - Базовая Отладка - YouTube[^]
Visual Basic .NET programming for Beginners - точки останова и средства отладки[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.