Member 13676594 Ответов: 1

Несоответствие типов данных в критериях


str = "Insert Into Bookee([Staff] , [Full Name], [Contact Number], [Email] , [Resource], [Period], [Date])Values(?,?,?,?,?,?,?)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 'This allows me to assign values to the fields using what the user input'
cmd.Parameters.Add(New OleDbParameter("Staff", CType(CBStaffName.Checked, Boolean))) 'This adds the value of the checkbox in the matching field and sets the variable type'
cmd.Parameters.Add(New OleDbParameter("Full Name", CType(TxtBoxFullName.Text, String))) 'This adds the value of the each textbox in the matching field and sets the variable type'
cmd.Parameters.Add(New OleDbParameter("Contact Number", CType(TxtBoxContactNumber.Text, String))) 'This adds the value of the each textbox in the matching field and sets the variable type'
cmd.Parameters.Add(New OleDbParameter("Email", CType(TxtBoxEmail.Text, String))) 'This adds the value of the each textbox in the matching field and sets the variable type'
cmd.Parameters.Add(New OleDbParameter("Period", CType(TxtBoxPeriod.Text, Integer))) 'this adds the Period textboxes value to the database'
cmd.Parameters.Add(New OleDbParameter("Date", CType(DateTimePicker1.Text, Date)))
cmd.Parameters.Add(New OleDbParameter("Resource", CType(TxtBoxResource.Text, String)))


Что я уже пробовал:

Я попытался изменить типы данных в базе данных, чтобы они соответствовали тем, что есть в коде, но это все равно не работает, когда я пытаюсь сохранить данные в базе данных microsoft access

1 Ответов

Рейтинг:
12

Dave Kreskowiak

Ладно, тебе не нужно все это дерьмо с CType. Он вообще ничего не делает для вас, кроме как пытается преобразовать тип в тот же тип, который он уже есть!

Это кричит о том, что вы никогда не говорили, каким должен быть каждый тип параметра. Например, свойство Text всегда возвращает строку, так почему же вы преобразуете ее в строку? Избавься от всего этого дерьма.

Кроме того, вы можете немного упростить код, просто используя AddWithValue. Он будет принимать "лучшее предположение" в качестве типа DbType, глядя на тип переменной, которую вы передали, например строку, целое число или дату-время.

str = "Insert Into Bookee([Staff] , [Full Name], [Contact Number], [Email] , [Resource], [Period], [Date])Values(?,?,?,?,?,?,?)"

'This allows me to assign values to the fields using what the user input
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection) 

'This adds the value of the checkbox in the matching field and sets the variable type
cmd.Parameters.AddWithValue("Staff", CBStaffName.Checked)

'This adds the value of the each textbox in the matching field and sets the variable type
cmd.Parameters.AddWithValue("Full Name", TxtBoxFullName.Text)

'This adds the value of the each textbox in the matching field and sets the variable type
cmd.Parameters.AddWithValue("Contact Number", TxtBoxContactNumber.Text)

'This adds the value of the each textbox in the matching field and sets the variable type
cmd.Parameters.AddWithValue("Email", TxtBoxEmail.Text)

cmd.Parameters.AddWithValue("Resource", TxtBoxResource.Text)

'this adds the Period textboxes value to the database
Dim value As Integer = Integer.Parse(TxtBoxPeriod.Text)
cmd.Parameters.AddWithValue("Period", value)

cmd.Parameters.AddWithValue("Date", DateTimePicker1.Value)