2014-11-04 2 views
0

VBA에 다음 코드가 있습니다. 실행하려고 할 때마다 "누락 된 선택 키워드"라는 오류 메시지가 나타납니다.Insert 문에 키워드 선택이 누락되었습니다.

Private Sub SubmitButton_Click(sender As System.Object, e As System.EventArgs) Handles   SubmitButton.Click 
    SubmitButton.Enabled = False 

    DeliveryDateTimePicker.CustomFormat = "yyyyMMdd" 
    Dim sysdate As Date = Date.Now 
    Dim XConnStr As String = "DSN=ivr.dsn; SERVER=ivr.dsn.world; UID=user; PWD=password;" 

    Dim SQLString As String = "INSERT INTO sv.ivr_resched ([ORDER_NO], [PHONE_NO], [REQUESTED_DELIVERY_DATE], [RESCHEDULE_REASON], [CREATE_DATE], [CREATE_USERID], [IN_PROGRESS], [STATUS]) VALUES (@ORDER_NO, @PHONE_NO, @REQUESTED_DELIVERY_DATE, @RESCHEDULE_REASON, @CREATE_DATE, @CREATE_USERID, @IN_PROGRESS, @STATUS);" 
    Dim objXConn As New OdbcConnection(XConnStr) 
    Dim objCommand As New OdbcCommand(SQLString, objXConn) 

    objCommand.Parameters.AddWithValue("@ORDER_NO", MSTextBox.Text) 
    objCommand.Parameters.AddWithValue("@PHONE_NO", PhoneTextBox.Text) 
    objCommand.Parameters.AddWithValue("@REQUESTED_DELIVERY_DATE", DeliveryDateTimePicker.Value) 
    objCommand.Parameters.AddWithValue("@RESCHEDULE_REASON", ReasonComboBox.SelectedValue) 
    objCommand.Parameters.AddWithValue("@CREATE_DATE", sysdate) 
    objCommand.Parameters.AddWithValue("@CREATE_USERID", TransferID) 
    objCommand.Parameters.AddWithValue("@IN_PROGRESS", "N") 
    objCommand.Parameters.AddWithValue("@STATUS", "newrecrd") 
    Try 
     Using objXConn 
      objXConn.Open() 
      objCommand.ExecuteNonQuery() 
      objXConn.Close() 
     End Using 
     MsgBox("Success") 
     MSTextBox.Text = "" 
     PhoneTextBox.Text = "" 
     ReasonComboBox.SelectedValue = "" 
     DeliveryDateTimePicker.Value = Date.Now 
    Catch ex As Exception 
     MessageBox.Show("Error: " & ex.ToString) 
    End Try 

    SubmitButton.Enabled = True 

End Sub 

당신이 제공 할 수있는 어떤 도움을 이해할 수있을 것이다 : 그것은 심지어 선택 키워드를 원하는 이유가 무엇이든 읽을 수 없다 때

나는 단지 데이터베이스에 기록 할, 표시되지 않습니다 .

문제는 여기에 작업 코드는 해결되었습니다

Private Sub SubmitButton_Click(sender As System.Object, e As System.EventArgs) Handles SubmitButton.Click 
    SubmitButton.Enabled = False 
    Dim sysdate As Date = Date.Now 
    Dim XConnStr As String = "DSN=ivr.dsn; SERVER=ivr.dsn.world; UID=user; PWD=password;" 
    Dim SQLString As String = "INSERT INTO sv.ivr_resched (ORDER_NO, PHONE_NO, REQUESTED_DELIVERY_DATE, RESCHEDULE_REASON, CREATE_DATE, CREATE_USERID, IN_PROGRESS, STATUS) VALUES(?, ?, ?, ?, ?, ?, ?, ?)" 
    Dim objXConn As New OdbcConnection(XConnStr) 
    Dim objCommand As New OdbcCommand(SQLString, objXConn) 

    objCommand.Parameters.Add("ORDER_NO", OdbcType.Char) 
    objCommand.Parameters.Item("ORDER_NO").Value = MSTextBox.Text 
    objCommand.Parameters.Add("PHONE_NO", OdbcType.Char) 
    objCommand.Parameters.Item("PHONE_NO").Value = PhoneTextBox.Text 
    objCommand.Parameters.Add("REQUESTED_DELIVERY_DATE", OdbcType.Char) 
    objCommand.Parameters.Item("REQUESTED_DELIVERY_DATE").Value = DeliveryDateTimePicker.Value.ToString("yyyMMdd") 
    objCommand.Parameters.Add("RESCHEDULE_REASON", OdbcType.Char) 
    objCommand.Parameters.Item("RESCHEDULE_REASON").Value = ReasonComboBox.SelectedValue 
    objCommand.Parameters.Add("CREATE_DATE", OdbcType.Date) 
    objCommand.Parameters.Item("CREATE_DATE").Value = sysdate 
    objCommand.Parameters.Add("CREATE_USERID", OdbcType.Char) 
    objCommand.Parameters.Item("CREATE_USERID").Value = TransferID 
    objCommand.Parameters.Add("IN_PROGRESS", OdbcType.Char) 
    objCommand.Parameters.Item("IN_PROGRESS").Value = "N" 
    objCommand.Parameters.Add("STATUS", OdbcType.Char) 
    objCommand.Parameters.Item("STATUS").Value = "NEWREC" 

    Try 
     Using objXConn 
      objXConn.Open() 
      objCommand.ExecuteNonQuery() 
      objXConn.Close() 
     End Using 
     MsgBox("Success") 
     MSTextBox.Text = "" 
     PhoneTextBox.Text = "" 
     ReasonComboBox.SelectedValue = "" 
     DeliveryDateTimePicker.Value = Date.Now 
    Catch ex As Exception 
     MessageBox.Show("Error: " & ex.ToString) 
    End Try 

    SubmitButton.Enabled = True 

End Sub 
+0

'INSERT' 문은 단색으로 보입니다. 제가보기에는 제가 한 것과 다른 점은 성명 끝에 세미콜론이 있다는 것입니다. 그것을 제거하는 것이 도움이되는지보십시오. –

+0

세미콜론을 제거하려고 시도했지만 차이점을 내지 못했습니다. 조언을 주셔서 감사합니다. – Sean

답변

1

당신이 열 이름을 열거 할 때 괄호를 제거하십시오 :

Dim SQLString As String = "INSERT INTO sv.ivr_resched (ORDER_NO, ... 
+0

대괄호를 제거하면 "누락 된 표현"오류 메시지가 나타납니다. 내 열 이름 중 하나가 받아 들여지지 않는다고 생각합니다. (나는 그것이 상태 칼럼이라고 믿는다). – Sean

+0

@Sean 현재 문제는 @ 기호로 의심됩니다. 콜론으로 교체하십시오. [여기] (https://community.oracle.com/thread/383481?tstart=0)에서 읽은 내용을 기반으로합니다. –

+0

당신이 게시 한 스레드를 통해 읽었으며 언급 한 두 가지 해결책, 즉 콜론 사용과 "objcommand.parameters.addwithvalue"를 사용하지 않고 두 방법 모두 "누락 된 선택 키워드"를 보냈습니다. – Sean

0

분야 대괄호 대신 따옴표를 사용해보십시오 이름. java.sql.SQLException: ORA-00928: missing SELECT keyword. when inserting record to DB using JDBC에 대한 답변보기

Dim SQLString As String = "INSERT INTO sv.ivr_resched (""ORDER_NO"", ""PHONE_NO"", ""REQUESTED_DELIVERY_DATE"", ""RESCHEDULE_REASON"", ""CREATE_DATE"", ""CREATE_USERID"", ""IN_PROGRESS"", ""STATUS"") VALUES (@ORDER_NO, @PHONE_NO, @REQUESTED_DELIVERY_DATE, @RESCHEDULE_REASON, @CREATE_DATE, @CREATE_USERID, @IN_PROGRESS, @STATUS);" 
+0

큰 따옴표는 Java에서와 같은 방식으로 VBA에서 작동하지 않습니다. 나는 이것을 시도하고 예약 된 단어와 같은 이름 인 내 열 때문에 "누락 된 표현"오류 메시지가 나타납니다. – Sean

관련 문제