Когда я запускаю проект, он продолжает давать мне ошибки. Первое исключение - da.Fill (dt). В нем говорится, что IErrorInfo.GetDescription не работает с E_FAIL (0x80004005). Второе исключение - cmd.ExecuteNonQuery() и говорит о синтаксической ошибке в инструкции INSERT INTO. Пожалуйста, помогите мне. Я совершенно новичок в VB, поэтому я не мог понять проблему, даже если бы посмотрел на нее весь день.Я продолжаю получать ошибки при запуске проекта
Открытый класс Telephone_Bill
Dim cnn As New OleDb.OleDbConnection
Private Sub RefreshData()
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
Dim da As New OleDb.OleDbDataAdapter("SELECT Month as [Month], " & _
"Day as [Day], Year, Amount Paid, Amount Due, Mode of Payment, Company Name " & _
" FROM Transactions ORDER BY Month", cnn)
Dim dt As New DataTable
Transaction_Log.dgvTransaction.DataSource = dt
da.Fill(dt)
cnn.Close()
End Sub
Private Sub btnProceed_Click(sender As System.Object, e As System.EventArgs) Handles btnProceed.Click
Dim cmd As New OleDb.OleDbCommand
If Not cnn.State = ConnectionState.Open Then
cnn.Open()
End If
cmd.Connection = cnn
cmd.CommandText = "INSERT INTO Transactions([Month], [Day], [Year], AmountPaid, AmountDue, ModeofPayment, CompanyName) " & _
" VALUES(" & cboMonth1.SelectedItem & ",'" & cboDay1.SelectedItem & "','" & _
cboYear1.SelectedItem & "','" & txtAmount.Text & "','" & _
txtTotalCharges.Text & "','" & cboMonetary.SelectedItem & "','" & _
txtCompName.Text & "')"
cmd.ExecuteNonQuery()
RefreshData()
cnn.Close()
End Sub
Private Sub Telephone_Bill_Load(sender As Object, e As System.EventArgs) Handles Me.Load
cnn = New OleDb.OleDbConnection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\Accounts for Bill Payment Center.accdb"
Me.RefreshData()
End Sub
End Class
У вас есть разница в именах полей между запросами SELECt и INSERT. У вас есть «Amount Paid» или ваше поле называется «AmountPaid» (То же самое уточнение необходимо для других имен полей в SELECT) – Steve
проверить ваш запрос. В refreshdata() вы указали имена столбцов с пробелами между ними и в командной строке у вас есть это без пробелов (например: способ оплаты). Что на самом деле правильно? –
Весь ваш метод вызова SQL неверен; вам нужно использовать [параметры] (http://stackoverflow.com/q/11139791/22437). –