2014-12-23 5 views
1

안녕하세요, 동료 프로그래머 님,MS Access에 데이터 삽입; INSERT INTO ERROR

현재 VB.NET 2008을 사용하고 있으며 현재 내 응용 프로그램에 연결된 Access 데이터베이스에 textbox/combobox/datetimepicker 값을 추가하려고합니다.

테이블 이름이 인코딩입니다.

Imports System.Data.OleDb 

Public Class frmEncode 
Dim strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & System.Environment.CurrentDirectory & "\encoding.accdb" 

Dim cnnOLEDB As New OleDbConnection(strConnectionString) 
Dim cmdOLEDB As New OleDbCommand 
Dim cmd As OleDbCommand 

'------------ 
Private Sub ButtonX7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonX7.Click 

    Dim InsertQuery As String 

    InsertQuery = "INSERT INTO Encoding (Client, Address, Date_Bill, Vessel, TIN, Port, Voyage No, Vessel Type, InterPleader1, InterPleader2, Waste Details, Payment, BI#, CSR#, Amount)VALUES(@client, @address, @date, @vess, @tin, @port, @voyno, @vesstype, @intplead1, @intplead2, @waste, @pay, @bi, @csr, @amnt)" 

    Dim cmd As OleDbCommand = New OleDbCommand(InsertQuery, cnnOLEDB) 

    cmd.Parameters.AddWithValue("@client", ComboBoxEx1.Text) 
    cmd.Parameters.AddWithValue("@address", TextBoxX1.Text) 
    cmd.Parameters.AddWithValue("@date", DateTimePicker1.Text) 
    cmd.Parameters.AddWithValue("@vess", TextBoxX2.Text) 
    cmd.Parameters.AddWithValue("@tin", TextBoxX3.Text) 
    cmd.Parameters.AddWithValue("@port", ComboBoxEx2.Text) 
    cmd.Parameters.AddWithValue("@voyno", TextBoxX4.Text) 
    cmd.Parameters.AddWithValue("@vesstype", ComboBoxEx3.Text) 
    cmd.Parameters.AddWithValue("@intplead1", ComboBoxEx4.Text) 
    cmd.Parameters.AddWithValue("@intplead2", ComboBoxEx5.Text) 
    cmd.Parameters.AddWithValue("@waste", ComboBoxEx6.Text) 
    cmd.Parameters.AddWithValue("@pay", ComboBoxEx7.Text) 
    cmd.Parameters.AddWithValue("@bi", TextBoxX7.Text) 
    cmd.Parameters.AddWithValue("@csr", TextBoxX5.Text) 
    cmd.Parameters.AddWithValue("@amnt", TextBoxX8.Text) 

    cnnOLEDB.Open() 
    cmdOLEDB = New OleDbCommand(InsertQuery, cnnOLEDB) 
    cmd.ExecuteNonQuery() 
    cnnOLEDB.Close() 
    frmEncodeDatabase.Show() 


End Sub 

오류가있는 '(cmd.ExecuteNonQuery)', 'INSERT INTO 문의 구문 오류가'말한다 : 이것은 지금까지 내 코드입니다.

System Into 문에 어떤 문제가 있는지 알 수 없습니다. Try/Catch 문을 추가해야합니까? 값 주위에 따옴표를 추가 하시겠습니까? 또는 대괄호를 추가 하시겠습니까 ??

+0

제목에 도움이 필요하지 않습니다. 첫 번째 장소에 여기에 게시 한 사실로 도움이 필요하다는 것은 분명합니다. VB.NET과 Access는 모두 제공 한 태그에서 사용할 수 있으므로 제목에도 필요하지 않습니다. 마지막으로, 모든 대문자로 입력하십시오. 그것은 무례하고, 당신의 질문을 읽기가 더 어렵게 만듭니다; 그것은 또한 당신에게 더 빨리 도움을주지 않을 것입니다. –

+0

Ken White 경은 고맙고 무례한 것에 대해 유감스럽게 생각합니다. 다른 포럼에서 나오기 때문에 우리는 일반적으로 제목에 HELP라는 단어를 사용합니다. 사과 미스터 화이트. – CodingSource

+0

이들은 * 다른 포럼 *이 아닙니다. :-) 당신은 [투어]를 타고이 사이트가 어떻게 작동 하는지를 [도움말]에 시간을 할애해야합니다. 우리는 품질 표준 및 투표 (질문 및 답변 모두)와 관련하여 많은 차이가 있습니다. –

답변

1
당신은 당신의 분야에 공백이 이름, 특수 문자를 브래킷에 필요하거나 있습니다

키워드 :

[Voyage No],... [BI#], etc... 

데이터베이스 문자열 형식에서 모든 필드를 있습니까? 모든 매개 변수는 문자열을 전달하므로 날짜 및 숫자와 같은 값을 변환해야합니다.

+0

내 Access 데이터베이스의 모든 필드는 문자 유형입니다. 그러면 어떻게해야합니까? – CodingSource

+0

절대로 친구가 아니 어서 효과가있었습니다. – CodingSource

0

열 이름에 잘못된 문자가 있습니다. 영숫자가 아닌 문자 (예 : #)를 모두 삭제하십시오.

1

열 이름에 사용할 수없는 문자 (# 및 공백)가 있으므로 사용자가이를 둘러 쌀 필요가 있습니다. 괄호. 예를 들어 Waste Details[Waste Details]이어야하며 CSR#[CSR#이어야합니다.

+0

고맙습니다. 시도하겠습니다. – CodingSource