Member 14060681 Ответов: 1

Как устранить эту ошибку "несоответствие типов данных в выражении критериев"?


Если операция = "Новая", то
chargementdb()
команду cmd = новый oledb для.Объект oledbcommand
УМК.CommandText = "вставить в note1(numprof,nummat,nume,noteDT,typenote,dtenote)values(@numprof,@nummat,@nume,@noteDT,@typenote,@dtenote)"
УМК.Подключение = Чиангмай
cmd.параметры.AddWithValue ("@numprof", txtidprof.Text)
cmd.параметры.AddWithValue ("@nummat", combomatiere.Text)
cmd.параметры.AddWithValue ("@nume", txtmatricule.Текст)
cmd.параметры.AddWithValue ("@noteDT", txtnote.Текст)
cmd.параметры.AddWithValue ("@typenote", combotyppenote.Текст)
cmd.параметры.AddWithValue("@dtenote", txtmatricule.Текст)
'MsgBox(DateTimePicker1.Value.Дата)
'MsgBox("prof" & txtidprof.Text)
'MsgBox("matiere" &combomatiere.Text)
'MsgBox("matricule" & txtmatricule.Текст)
'MsgBox("Примечание" & txtnote.Текст)
'MsgBox("type note" & combotyppenote.Текст)
'MsgBox("дата" & txtmatricule.Текст)
УМК.Метод executenonquery()

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

Я пытаюсь вставить в таблицу Примечание 1.

1 Ответов

Рейтинг:
1

OriginalGriff

Мы не можем быть уверены, но лучше всего предположить, что данные, которые вы предоставляете, не являются действительными для столбца, в который вы их вставляете.

Вы не должны просто передавать строки вслепую в SQL, если только столбец не указан как VARCHAR или NVARCHAR - если это числовое поле (INT, FLOAT, DECIMAL ...) или основанное на дате (DATE, DATETIME, DATETIME2...), то вы должны использовать соответствующий метод TryParse для преобразования его в соответствующий тип данных, прежде чем отправлять его в SQL:

Dim dt As DateTime

If Not DateTime.TryParse(txtmatricule.Text, dt) Then
    ... report problem to user ...
    Return
End If
Затем передайте преобразованное значение в SQL в качестве значения параметра.


Member 14060681

Я попробовал скрипт, но до тех пор он не работает, и сообщение об ошибке сохраняется.

OriginalGriff

Покажи нам, что именно ты сделал.