Question: I am trying to develop a VSIX package that adds a tab to the project designer for a couple of custom project properties. I have the package working in VS 2013 using `CfgPropertyPagesGuidsAddCSharp` as described in [this post](http://hmemcpy.com/2015/03/adding-a-custom-property-page-to-existing-project-types-in-visual-studio/). However, after porting the VSIX project to VS 2010, the custom property page is not loaded.

[This question](https://stackoverflow.com/questions/6899219/adding-a-property-page-to-project-properties-without-implementing-a-project-subt) from 2011 doesn't have an answer. The answer to [another question](https://stackoverflow.com/questions/5324977/how-do-i-extend-the-project-properties-screen-in-visual-studio) suggests creating a custom project subtype, but that seems like an awful amount of work just to be able to edit some additional project properties from the GUI. This is my first time working on a VSIX package, so I'm trying to keep things as simple as possible.

I've tried browsing through the source for the [.NET project system](https://github.com/dotnet/project-system), but I'm not sure exactly what I'd be looking for to properly register the page; any guidance would be much appreciated.

Thanks.

Answer: 
The following solution will work, but performance will suffer. This will return 1 row per person, I can rewrite it to return both rows.

```
Select * from tableA
where tableA.column1 = myvalue1
and (tableA.column2 = myvalue2
and DCount("column2", "TableA", "column1 = """ & column1 & """ AND column2 = """ & myvalue3 & """" ) <> 0)

```

Your fundamental problem is that a select query without a group by or pivot clause only evaluates 1 row at a time. I'd probably pivot the data, concatenate it, and then evaluate it for better performance in the end. But that's more complicated, and requires more information on the table structure and what you want to do.
Thanks Johnny, your suggestion inspired me to write a slightly different approach to the solution.

I swapped the 'AND' to an 'OR' as others have suggested to extract any employee into a table if they have any of the qualifications.

The result is a table with every required qualification for every employee who has one of those qualifications.

I then did a count elsewhere of the number of qualifications required for the assignment and compared this to whether or not the employee had the required number of qualifications, as follows:

```
    Dim objSearchTable As DataTable = DSSearch.Tables("Employees")

    Dim i As Integer

    If QualificationsCount > 0 Then

        For i = 0 To objSearchTable.rows.count - 1

            strEmployee = objSearchTable.Rows(i).Item("column1")

            Dim foundRows As DataRow() = objSearchTable.[Select]("column1 = '" & strEmployee & "'")

            Dim numberOfRecords As Integer = foundRows.count

            If numberOfRecords < QualificationsCount Then

                objSearchTable.Rows(i).Delete

            End If

        Next

    End If

    objSearchTable.AcceptChanges

```

This deletes every instance of an employee from the table if the count of qualifications is less than the number required.

The solution isn't as elegant as extracting only the correct employees from the database to begin with.

There is also an overhead on extracting every employee from the database, but the end result is a table with just one row for each employee with all the qualifications, which does what I need.