2015-04-06 4 views
0

В настоящее время я делаю проект vb.net для колледжа и хочу создать новую запись доступа, используя текстовые поля, маскированные текстовые поля и richtextboxes, используя vb gui. Тем не менее, я получаю это исключение:VB.net & Запрос доступа

«Необработанное исключение типа„System.Data.OleDb.OleDbException“произошло в System.Data.dll Дополнительная информация: Синтаксическая ошибка в заявлении INSERT INTO.»

Вот мой код, который работает на других формах

Private Sub btnSaveNew_Click(sender As Object, e As EventArgs) Handles btnSaveNew.Click 
    Dim objrow As DataRow 

    objrow = objDataSet.Tables("tblEngineersReport").NewRow 

    objrow.Item("To") = txtTo.Text 
    objrow.Item("Date_Carried_Out") = txtCompletedDate.Text 
    objrow.Item("Description_Of_Work") = txtWorkDescription.Text 
    objrow.Item("Comment") = txtComment.Text 
    objrow.Item("Quantity1") = txtQuantity1.Text 
    objrow.Item("Quantity2") = txtQuantity2.Text 
    objrow.Item("Quantity3") = txtQuantity3.Text 
    objrow.Item("Quantity4") = txtQuantity4.Text 
    objrow.Item("Item_Description1") = txtDescription.Text 
    objrow.Item("Item_Description2") = txtDescription2.Text 
    objrow.Item("Item_Description3") = txtDescription3.Text 
    objrow.Item("Item_Description4") = txtDescription4.Text 
    objrow.Item("Unit_Price1") = txtUnitPrice1.Text 
    objrow.Item("Unit_Price2") = txtUnitPrice2.Text 
    objrow.Item("Unit_Price3") = txtUnitPrice3.Text 
    objrow.Item("Unit_Price4") = txtUnitPrice4.Text 
    objrow.Item("Rate1") = txtRate1.Text 
    objrow.Item("Rate2") = txtRate2.Text 
    objrow.Item("Rate3") = txtRate3.Text 
    objrow.Item("Labour1") = txtDescription5.Text 
    objrow.Item("Labour2") = txtDescription6.Text 
    objrow.Item("Labour3") = txtDescription7.Text 
    objrow.Item("Hours_Worked1") = txtHours1.Text 
    objrow.Item("Hours_Worked2") = txtHours2.Text 
    objrow.Item("Hours_Worked3") = txtHours3.Text 

    objDataSet.Tables("tblEngineersReport").Rows.Add(objrow) 
    objEngineerDA.Update(objDataSet, "tblEngineersReport") 

    Retrieve() 

    MessageBox.Show("new record added") 
    cboJobID.Enabled = True 

End Sub 

в Textboxes Quanity вниз отработанному содержатся в панели макета таблицы и я просто интересно, что это имеет ничего общего с запись не сохраняется?

+0

Есть ли преобразование, которое должно быть сделано? Можете ли вы показать дизайн стола? – Icepickle

+0

Вы уверены, что все столбцы в таблице db имеют тип 'Text'? –

+0

нет есть тип номер и дата/время также, не правда ли? – Hector122

ответ

0

Вам нужно будет проверить инструкцию INSERT, используемую в определении вашего DataAdapter (objEngineerDA). Согласно этой ошибке синтаксис этого INSERT, по-видимому, неверен. Не видя того, что в настоящее время существует, я не могу советовать, что с ним не так.

1

Глядя на имена ваших столбцов, я мог заметить, что у вас есть столбец с именем TO. Это зарезервированное ключевое слово в MS-Access, и, таким образом, автогенерированные запросы для вашего адаптера будут иметь синтаксическую ошибку, если вы не сообщите своему OleDbCommandBuilder, чтобы инкапсулировать имена столбцов соответствующими строками QuotePrefix и QuoteSuffix.

Вам нужно добавить этот код, сразу после объявления и инициализации вашего OleDbCommandBuilder-

Dim builder = new OleDbCommandBuilder(objEngineerDA) 
builder.QuotePrefix = "[" 
builder.QuoteSuffix = "]" 
+0

Я изменил TO, и я все еще получаю ошибки? – Hector122

+0

Это же Синтаксическая ошибка, как и раньше? Добавляли ли вы QuotePrefix и QuoteSuffix в свой OleDbCommandBuilder перед созданием команд INSERT/UPDATE? – Steve

+0

Я этого не сделал, где я могу добавить это? – Hector122

Смежные вопросы