У меня есть форма, в которой пользователь может вводить и выбирать из нескольких элементов управления, таких как выпадающий список, средства выбора даты, текстовые поля, флажки и т. Д. В случае нажатия кнопки я написал следующую процедуру, чтобы ВСТАВИТЬ новую запись в базе данных MS Access. :
Код:
private void InsertNewRecord()
{
txtLastUpdated.Text = DateTime.Today.ToString();
using (var conn = new OleDbConnection(MTSConn))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = @"Insert Into Incoming_T (DocFrom, CntrTeam, To, ReferenceNo, Subject, Review, Type, DocDate, RcvdDate, ProjectRef, DIMSNo, DIMSLink, SnrEng, MailStatus, Comments, LogRegID, RegisteredBy, UpdatedBy, LastUpdated, ForInf, ForReview, ForApp, ForComnt, ForHndlng, ForAct) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 100) { Value = cbxFrom.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxTo.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 100) { Value = cbxTo.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtReference.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 200) { Value = txtSubject.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 1) { Value = cbxReview.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 10) { Value = cbxDocType.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = dtpDocDate.Value });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = dtpRcvDate.Value });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxProject.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 15) { Value = txtDIMS.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 255) { Value = txtDIMLink.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 10) { Value = cbxSnrEngr.SelectedValue });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 20) { Value = cbxStatus.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 255) { Value = txtComments.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Integer, 4) { Value = Convert.ToInt32(txtRegID.Text) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtRegBy.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.VarChar, 50) { Value = txtUpdatedBy.Text });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Date, 8) { Value = Convert.ToDateTime(txtLastUpdated.Text) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkInf.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkRw.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkApp.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkComm.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkHandl.Checked) });
cmd.Parameters.Add(new OleDbParameter("?", OleDbType.Boolean, 1) { Value = Convert.ToBoolean(chkAct.Checked) });
try
{
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Recored Inserted Successfully!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Я получаю синтаксическую ошибку при вставке записи в базу данных Access. Я также пробую этот код также, но та же проблема:
private void InsertNewRecord()
{
txtLastUpdated.Text = DateTime.Today.ToString();
using (OleDbConnection conn = new OleDbConnection(MTSConn))
{
using (OleDbCommand cmd = new OleDbCommand())
{
.
.
.
}
}
Моя форма выглядит так:
Я что-то упустил?