0

仕事で使えるものを書こうと頑張っていて、独学で学んでいます。解決策が見つからない問題に遭遇しましたが、適切な用語に慣れていない可能性が非常に高いです。

Visual Studio プロジェクトを SQL データベースにアタッチし、3 つのテキスト ボックスのいずれかに情報を入力できる検索を実行しようとしています。返された結果はそれに応じてフィルター処理されます。ユーザー検索クエリは次のとおりです。

SELECT        First_Name AS [First Name], Middle_Name AS [Middle Name], Last_Name AS [Last Name], Users_ID AS [Unique ID]
FROM            Users
WHERE        (First_Name LIKE '%' + @firstName + '%') AND (Last_Name LIKE '%' + @lastName + '%') AND (Users_ID LIKE '%' + @uniqueID + '%')
ORDER BY [Last Name]

検索を呼び出すために使用しているSUBは次のとおりです。私が問題を抱えているのは、ユーザー検索だけです。

Private Sub searchButton_Click(sender As Object, e As EventArgs) Handles searchButton.Click
    'Clear all variables when the search button is clicked.  This allows Search to start with a clean'
    'slate and gather new or changed variables again.'
    addRemoveValue = Nothing
    jobTitle = Nothing
    jtLocation = Nothing
    jtDepartment = Nothing
    loc = Nothing
    lComments = Nothing
    department = Nothing
    fname = Nothing
    lname = Nothing
    uID = Nothing

    'Gather variables.'
    addRemoveValue = TryCast(addRemoveComboBox.SelectedItem, String)
    jobTitle = TryCast(jobTitleTextBox.Text, String)
    jtLocation = TryCast(jtLocationComboBox.Text, String)
    jtDepartment = TryCast(jtDepartmentComboBox.Text, String)
    loc = TryCast(locationTextBox.Text, String)
    lComments = TryCast(lCommentsTextBox.Text, String)
    department = TryCast(departmentTextBox.Text, String)
    fname = TryCast(firstNameTextBox.Text, String)
    lname = TryCast(lastNameTextBox.Text, String)
    uID = TryCast(uniqueIDTextBox.Text, String)

    'I added this in order to troubleshoot the search feature for the Users search.'
    'If uID = Nothing Then'
    '    uID = "%"'
    'End If'

    'Change the visible buttons in the event of a Search.'
    disableButton.Visible = True
    addButton.Visible = False

    'Populate the Data Grid based on the item the user selects.'
    If addRemoveValue = "Job Title" Then
        With Me.DataGridView1
            .AutoGenerateColumns = True
            .DataSource = RoleTableAdapter.GetDataByTitle(jobTitle, jtLocation, jtDepartment)
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.DisplayedCells
            .BorderStyle = BorderStyle.Fixed3D
            .EditMode = DataGridViewEditMode.EditOnEnter
        End With
    End If

    If addRemoveValue = "Location" Then
        With Me.DataGridView1
            .AutoGenerateColumns = True
            .DataSource = LocationTableAdapter.GetDataByLoc(loc)
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
            .BorderStyle = BorderStyle.Fixed3D
            .EditMode = DataGridViewEditMode.EditOnEnter
        End With
    End If

    If addRemoveValue = "Department" Then
        With Me.DataGridView1
            .AutoGenerateColumns = True
            .DataSource = DepartmentTableAdapter.GetDataByDept(department)
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
            .BorderStyle = BorderStyle.Fixed3D
            .EditMode = DataGridViewEditMode.EditOnEnter
        End With
    End If

    If addRemoveValue = "User" Then
        With Me.DataGridView1
            .AutoGenerateColumns = True
            .DataSource = UsersTableAdapter.GetDataByName(uID, fname, lname)
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
            .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells
            .BorderStyle = BorderStyle.Fixed3D
            .EditMode = DataGridViewEditMode.EditOnEnter
            .Columns("Unique ID").DisplayIndex = 0
            .Columns("Last Name").DisplayIndex = 1
            .Columns("First Name").DisplayIndex = 2
            .Columns("Middle Name").DisplayIndex = 3
        End With
    End If
End Sub

これをテストするたびに、次のエラーが表示されます。

制約を有効にできませんでした。1 つ以上の行に、null 以外、一意、または外部キーの制約に違反する値が含まれています。

すべての列のプロパティを確認しましたが、すべての列に NULL 値を含めることができます。どのテーブルにも外部キー制約がないことを確認しました。このコードで行った他の 3 つの検索は問題なく機能し、非常によく似たクエリがあるため、これを解決するために次に何を探すべきかについて困惑しています。

あなたが提供できるどんな助けも素晴らしいでしょう!ありがとう!!

4

1 に答える 1

0

名、姓、および/またはユーザー ID が空白になるシナリオはありますか?

また、DB の列の長さを変更してもデータセットを更新しないと、このエラーがポップアップすることがあります。

于 2013-05-17T22:07:30.797 に答える