2011-01-14 2 views
0

저는 이것이 기본 구문 오류라고 확신합니다.이 기능을 처음 사용하고 재판을 통해 오류 ... 텍스트 상자에서 Access 데이터베이스에 데이터를 삽입하려고하는데, tableCourse의 기본 키 필드는 접두사 및 course_number입니다. 그것은 나에게 "하나 이상의 필수 매개 변수에 주어진 값 없음"오류를 계속 제공합니다.ASP.NET/VB/SQL : 데이터를 삽입하는 중 "필수 매개 변수에 값이 지정되지 않았습니다."오류가 발생합니다.

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick 
    'Collect Data 
    Dim myDept = txtDept.Text 
    Dim myFirst = txtFirstName.Text 
    Dim myLast = txtLastName.Text 
    Dim myPrefix = txtCoursePrefix.Text 
    Dim myNum = txtCourseNum.Text 

    'Define Connection 
    Dim myConn As New OleDbConnection 
    myConn.ConnectionString = AccessDataSource1.ConnectionString 

    'Create commands 
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (@myDept, @myFirst, @myLast, @myPrefix, @myNum)", myConn) 

    'Execute the commands 
    myConn.Open() 
    myIns1.ExecuteNonQuery() 
End Sub 

편집 : 여기 내 코드 숨김이 내 AccessDataSource의 내부 매개 변수를 가지고 사람들을 사용하는 방법은 무엇입니까?

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (?, ?, ?, ?, ?)", myConn) 

    myIns1.Parameters.AddWithValue("@myDept", myDept) 
    myIns1.Parameters.AddWithValue("@myFirst", myFirst) 
    myIns1.Parameters.AddWithValue("@myLast", myLast) 
    myIns1.Parameters.AddWithValue("@myPrefix", myPrefix) 
    myIns1.Parameters.AddWithValue("@myNum", myNum) 
: 롤 ... 나는이 시도, 사용에 대답하는 정말 확실하지 : 그 바보 같은 질문이 있다면 죄송합니다, 편집

... 나는 아직도이 물건을 배우고 그것은 정말 날 혼란

그리고이 데이터를 삽입, 나는 데이터베이스를 확인하고는 모든있다,하지만 여전히 날 오류가 있습니다 : 당신은 OleDbCommand에 매개 변수를 추가 할 필요가

"The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again."

답변

1

:처럼 뭔가를

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick 
    'Collect Data 
    Dim myDept = txtDept.Text 
    Dim myFirst = txtFirstName.Text 
    Dim myLast = txtLastName.Text 
    Dim myPrefix = txtCoursePrefix.Text 
    Dim myNum = txtCourseNum.Text 

    'Define Connection 
    Dim myConn As New OleDbConnection 
    myConn.ConnectionString = AccessDataSource1.ConnectionString 

    'Create commands 
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (@myDept, @myFirst, @myLast, @myPrefix, @myNum)", myConn) 

    myIns1.Parameters.AddWithValue("@myDept", myDept) 
    myIns1.Parameters.AddWithValue("@myFirst", myFirst) 
    myIns1.Parameters.AddWithValue("@myLast", myLast) 
    myIns1.Parameters.AddWithValue("@myPrefix", myPrefix) 
    myIns1.Parameters.AddWithValue("@myNum", myNum) 
    'Execute the commands 
    myConn.Open() 
    myIns1.ExecuteNonQuery() 
End Sub 
0

합니다.
Using 블록을 사용하여 명령과 연결을 처리해야합니다.

+0

당신은 "명령 및 사용하여 블록을 사용하여 연결을 처분"이란 무엇을 의미합니까? 미안 해요. 내가이 말을 처음 접했을 때처럼. – Sara

0

많은 매개 변수로 SQL 명령을 작성하고 있습니다. 적절한 방법으로 박수를 보냅니다. - 그러나 당신은 결코 그 매개 변수를 만들고 값을 전달하지 않습니다! 당신이 OleDbCommand을 만든 후

, 당신은 지금 당신의 텍스트 상자에서 값에 OleDbCommand 객체 (의 OleDbCOmmand.Parameters 컬렉션)에 @myDept, @myFirst 등 각 OleDbParameter를 추가하고 작성해야합니다. 또한

다음 OleDbCommand이 (않는 SqlCommand 달리) 그 명명 된 매개 변수를 지원하지 않습니다 - 당신은 단지 질문 마크와 그 대체해야하는이 설정으로

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (?, ?, ?, ?, ?)", myConn) 

myIns1.Parameters.Add("@myDept", OleDbType.VarChar, 50).Value = txtDept.Text.Trim(); 
.... 
myIns1.Parameters.Add("@myNum", OleDbType.Int).Value = 42; 

를,이된다 필수적 적절한 순서로 OleDbParameter 인스턴스를 만들고 추가하십시오!

0

명령문에 몇 가지 값을 입력해야하는 것처럼 보입니다. 당신은 같은 것을 할 필요가

Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (department, name_first, name_last, prefix, course_number) VALUES (@myDept, @myFirst, @myLast, @myPrefix, @myNum)", myConn) 
myIns1.Parameters.Add("@myDept", OleDbType.VarChar, 50).Value = myDept; 
myIns1.Parameters.Add("@myFirst", OleDbType.VarChar, 50).Value = myFirst; 
' ... and so on and so forth for each parameter you have. 
관련 문제