Синтаксическая ошибка в инструкции INSERT INTO (вставка нескольких записей из Gridview в Access)

#database #ms-access #datagridview #save #multiple-records

#База данных #ms-access #datagridview #Сохранить #несколько записей

Вопрос:

Я пытаюсь сохранить все свои данные в DataGridView в базу данных Access, но я получаю эту ошибку: Syntax error in INSERT INTO statement. Мой код следует:

 try
{
  string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\MotoFix.mdb;";

  OleDbCommand Com = new OleDbCommand();

  for (int i = 0; i < gridViewProduct_Transac.Rows.Count - 1; i  )
  {
    using (OleDbConnection Con = new OleDbConnection(ConnectionString))
    {
      string str;
      Con.Open();
      str = @"INSERT INTO Transaction(tranNo, custID, pID, userID, orderNo, sDate) VALUES ('"   gridViewProduct_Transac.Rows[i].Cells["Transaction Number"].Value   "', '"   gridViewProduct_Transac.Rows[i].Cells["Customer ID"].Value   "',"   gridViewProduct_Transac.Rows[i].Cells["Referral ID"].Value   ",'"   gridViewProduct_Transac.Rows[i].Cells["Cashier ID"].Value   "','"   gridViewProduct_Transac.Rows[i].Cells["Order Number"].Value   "','"   gridViewProduct_Transac.Rows[i].Cells["Date"].Value   "');";
      using (Com = new OleDbCommand(str, Con))
      {
        Com.ExecuteNonQuery();
        Con.Close();
      }
    }
  }
}
  

Комментарии:

1. TRANSACTION является зарезервированным словом в Access SQL. Попробуйте INSERT INTO [Transaction] ... .

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

Ответ №1:

Если sDate — это тип даты, вам может потребоваться ее форматирование — Format(«ГГГГ-мм-ДД», sDate) или Format(«ГГГГ-мм-ДД ЧЧ: ММ: сс», sDate)

Комментарии:

1. Что-то вроде: str = «ВСТАВИТЬ В значения транзакции (tranNo, CustID, pID, userId, OrderNo, sDate) (‘» gridViewProduct_Transac.Rows(I). Ячейки («Номер транзакции»). Значение «‘, ‘» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор клиента»). Значение «‘,» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор ссылки»). Значение «,'» gridViewProduct_Transac.Rows(I). Ячейки («Идентификатор кассира»). Значение «‘,'» gridViewProduct_Transac.Rows(I). Ячейки («Порядковый номер»). Значение «‘,'» Строки. Формат (gridViewProduct_Transac.Rows(I). Ячейки («Дата»). Значение, «ГГГГ-мм-ДД») «‘);»;

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

3. Он сообщает вам, что вам не хватает значения для одного из ваших 6 параметров. Проверьте свои цитаты и ссылки и убедитесь, что все правильно. Подумайте о том, чтобы разбить его, чтобы его было легче читать. назначение коротких переменных для каждого элемента значения, т.е. создайте переменную TransNo и установите для нее значение gridViewProduct_Transac.Rows(I). Ячейки («Номер транзакции»). Значение Затем используйте переменную TransNo для построения sql