Member 13363527 Ответов: 1

Вставьте текстовое поле, переключатель и значения календаря месяца в ms access 2010 с помощью VB.NET 2010 год


Дорогие все,

Я хочу вставить текстовое поле, переключатель и значения календаря месяца в базу данных ms access 2010 с помощью vb.net.

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

Но он говорит, что есть синтаксическая ошибка при вставке в оператор.

Пожалуйста, помогите мне в этом.

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

Imports System.Data.OleDb
Public Class dailyTrackingfrm
    Dim Provider As String
    Dim datafile As String
    Dim connString As String
    Public myConnection As OleDbConnection = New OleDbConnection
    Public dr As OleDbDataReader
-------------------------------------------------------------------
<pre> Private Sub dailyTrackingfrm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
        datafile = "D:\Tubewell\Tubewell\Tubewell.accdb"
        connString = Provider & datafile
        myConnection.ConnectionString = connString
    End Sub
-----------------------------------------------------------------------------------

Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
        Dim res As String
        Dim s As String
        Dim obj As New DateTime()
        If RadioButton1.Checked = True Then
            s = RadioButton1.Text
        Else
            s = RadioButton2.Text
        End If
        res = MsgBox("Do you want to add this record?", vbQuestion + vbYesNo, "Add Record")
        If res = vbYes Then
            Try
                Using sqlconn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Tubewell\Tubewell\Tubewell.accdb")
                    Using sqlquery As New OleDb.OleDbCommand("INSERT INTO DailyTracking(EmpNo,Type,Attendance,Date) VALUES (?,?,?,?)", sqlconn)
                        sqlquery.Parameters.AddWithValue("@EmpNo", txtempno.Text)
                        sqlquery.Parameters.AddWithValue("@Type", txttype.Text)
                        sqlquery.Parameters.AddWithValue("@Attendance", s)
                        sqlquery.Parameters.AddWithValue("@Date", MonthCalendar1.SelectionStart)
                        sqlconn.Open()
                        sqlquery.ExecuteNonQuery()
                        MsgBox("Records inserted successfully", vbOKOnly, "Records inserted")
                        txtempno.Text = ""
                        txttype.Text = ""
                        RadioButton1.Checked = False
                        RadioButton2.Checked = False
                        MonthCalendar1.TodayDate = obj
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If
    End Sub
End Class

1 Ответов

Рейтинг:
2

Michael_Davies

Вы не правильно объявили параметры в строке вставки попробуйте;

Using sqlquery As New OleDb.OleDbCommand("INSERT INTO DailyTracking(EmpNo,Type,Attendance,Date) VALUES (@EmpNo,@Type,@Attendance,@Date)", sqlconn)


примечание: не рекомендуется использовать зарезервированные слова для имен полей, например, Date - это тип переменной, при использовании таких имен блокируется имя типа so [Date], поэтому оно идентифицируется как поле, а не тип переменной.


Richard Deeming

Насколько мне известно, поставщик oledb для доступа не использовать именованные параметры, поэтому ? заполнители правильные.

Michael_Davies

АФАИК пожалуйста смотри https://code.msdn.microsoft.com/windowsdesktop/access-2007-oledb-with-2fed4cc1

В любом случае он смешивается ? с именами-заполнителями.

Richard Deeming

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

Но ТБХ, прошло уже много времени с тех пор, как я прикасался к базе данных Access! :)

Member 13363527

Да, это работает. Большое спасибо