Member 14621280 Ответов: 2

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


Imports System.Data.OleDb

Public Class SongEntry
    Dim Provider As String
    Dim dataFile As String
    Dim connString As String
    Dim myConnection As OleDbConnection = New OleDbConnection

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        TextBox4.Clear()
        TextBox5.Clear()
    End Sub

    Private Sub SongEntry_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
        dataFile = "C:\Users\User\Desktop\Song.accdb"
        connString = Provider & dataFile
        myConnection.ConnectionString = connString
        myConnection.Open()
        Dim str As String
        str = "Insert into MAS_SONGS([SM_CODE],[SM_EDESC],[SM_TDESC],[SM_SONGL1],[SM_SONGL2]) values (?,?,?,?,?)"
        Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)

        cmd.Parameters.AddWithValue("SM_CODE", TextBox3.Text)
        cmd.Parameters.AddWithValue("SM_EDESC", TextBox1.Text)
        cmd.Parameters.AddWithValue("SM_TDESC", TextBox2.Text)
        cmd.Parameters.AddWithValue("SM_SONGL1", TextBox4.Text)
        cmd.Parameters.AddWithValue("SM_SONGL2", TextBox5.Text)
       

        Try
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            myConnection.Close()
            Me.Hide()

            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            TextBox4.Clear()
            TextBox5.Clear()

        Catch ex As Exception
            MsgBox(ex.Message)


        End Try


    End Sub
End Class


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

Hi, i have made data Insert from Vb.Net to Ms access database but when click save button it says  "Data Mismatch in criteria expression" Note : SM_CODE is my primary key

2 Ответов

Рейтинг:
2

OriginalGriff

Мы не можем сказать - это слишком зависит от содержимого ваших текстовых полей, к которым у нас нет доступа.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
1

Dave Kreskowiak

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

Метод AddWithValue не преобразует текст в текстовом поле в числовой тип для вас.

Я никогда не использую AddWithValuie, потому что он устанавливает параметр с типом базы данных, который он угадывает на основе значения, которое вы передаете в него.