1

Я попытался вставить STRING из TextBox в COLUMN, который имеет приглашение на MONEY DATA TYPE но об ошибке появилось и говорит: ошибка, не удается добавить пациента! Запрещено неявное преобразование из типа данных nvarchar в тип данных money, table 'TblName', столбец 'pTotalDue'. Используйте функцию CONVERT для выполнения этого запросаСтрока денег Тип данных в SQL SERVER

Как я могу его преобразовать? может кто-нибудь сказать мне, как это сделать?

здесь мои коды:

Private Function INSERT() As String 
     Dim SQLcon As New SqlConnection 
     Dim SQLdr As SqlDataReader 
     Try 
      SQLcon.ConnectionString = "Data Source=#####;Initial Catalog=#####;Persist Security Info=True;User ID=#####;Password=#####" 
      Dim SQLcmd As New SqlCommand("INSERT INTO dbo.Patients" & _ 
             "(pIDNo,pLName,pFName,pMI,pSex,pStatus,pTelNo,pDocID,pAddr,pStreet,pBarangay,pCity,pProvince,pLNameKIN,pFNameKIN,pMIKIN,pRelationKIN,pTotalDue)" & _ 
             "VALUES(@pIDNo,@pLName,@pFName,@pMI,@pSex,@pStatus,@pTelNo,@pDocID,@pAddr,@pStreet,@pBarangay,@pCity,@pProvince,@pLNameKIN,@pFNameKIN,@pMIKIN,@pRelationKIN,@totaldue)", SQLcon) 
      SQLcmd.Parameters.AddWithValue("@pIDNo", txtPNumber.Text) 
      SQLcmd.Parameters.AddWithValue("@pLName", txtLname.Text) 
      SQLcmd.Parameters.AddWithValue("@pFName", txtFname.Text) 
      SQLcmd.Parameters.AddWithValue("@pMI", txtMI.Text) 
      SQLcmd.Parameters.AddWithValue("@pSex", txtPatientSex.Text) 
      SQLcmd.Parameters.AddWithValue("@pStatus", txtStatus.Text) 
      SQLcmd.Parameters.AddWithValue("@pTelNo", txtPatientTelNo.Text) 
      SQLcmd.Parameters.AddWithValue("@pDocID", txtPatientDoctor.Text) 
      SQLcmd.Parameters.AddWithValue("@pAddr", txtStreetNumber.Text) 
      SQLcmd.Parameters.AddWithValue("@pStreet", txtStreetName.Text) 
      SQLcmd.Parameters.AddWithValue("@pBarangay", txtBarangay.Text) 
      SQLcmd.Parameters.AddWithValue("@pCity", txtCity.Text) 
      SQLcmd.Parameters.AddWithValue("@pProvince", txtProvince.Text) 
      SQLcmd.Parameters.AddWithValue("@pLnameKIN", txtKinLname.Text) 
      SQLcmd.Parameters.AddWithValue("@pFnameKIN", txtKinFname.Text) 
      SQLcmd.Parameters.AddWithValue("@pMIKIN", txtKinMI.Text) 
      SQLcmd.Parameters.AddWithValue("@pRelationKIN", txtRelationToPatient.Text) 
      SQLcmd.Parameters.AddWithValue("@totaldue", txtTotalDue.Text) 
      SQLcon.Open() 
      MsgBox("Patient Added!", MsgBoxStyle.Information) 
      SQLdr = SQLcmd.ExecuteReader() 
     Catch ex As Exception 
      MessageBox.Show("Error Occured, Can't Add Patient!" & ex.Message) 
     Finally 
      SQLcon.Close() 
     End Try 
     Return "" 
    End Function 

BTW версия SQL SERVER, что я в настоящее время использую 2005.

ответ

3

Попробуйте изменить эту строку:

SQLcmd.Parameters.AddWithValue("@totaldue", txtTotalDue.Text) 

к этому:

SQLcmd.Parameters.Add("@totaldue", SqlDbType.Money).Value = Decimal.Parse(txtTotalDue.Text) 
+0

ok sir Tahbaza I wi Попробуем это и скажу вам, что будет результатом. – Danjor

+0

Спасибо! Это сработало, но у меня есть еще один вопрос для моей таблицы в моей программе ..., Я ввел 200, но результат был «200.00» на SQL SERVER, но на моей таблице «200.0000» я могу манипулировать этим результатом с результатом на SQL SERVER? – Danjor

+0

200 - это то же самое, что и 200.0000. Выбирая тип данных денег для своего столбца в таблице базы данных, вы явно выбрали размер и точность своего поля. Подробнее см. Http://msdn.microsoft.com/en-us/library/ms179882(v=sql.90).aspx. – Tahbaza

Смежные вопросы