Как установить элемент значения Id для ListBox при использовании CONCAT SQL - PullRequest
0 голосов
/ 31 марта 2019

Мой запрос выбирает всех клиентов, КРОМЕ клиентов, которые в настоящее время имеют активное занятие (если у них активное занятие, то у них будет ссылка с таблицей занятости, где конечная дата равна NULL).

Я объединяю LastName и FirstName клиента, чтобы установить DisplayMember элемента Listbox, и хочу установить ValueMember этого элемента на Id клиента.

        // Select all of the clients except for the ones who have an active occupancy
        // (if they have an occupancy with no end date)
        string query = "SELECT Id, CONCAT(LastName, ', ', FirstName) AS Name FROM Client " +
            "EXCEPT " +
            "SELECT Id, CONCAT(LastName, ', ', FirstName) AS Name FROM Client " +
            "RIGHT JOIN Occupancy ON Client.Id = Occupancy.ClientId " +
            "WHERE Occupancy.EndDate IS NULL ORDER BY Name ASC";

        using (connection = new SqlConnection(connectionString))
        using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
        {
            DataTable dTable = new DataTable();
            adapter.Fill(dTable);

            listClients.DisplayMember = "Name";
            listClients.ValueMember = "Id";
            listClients.DataSource = dTable;
        }

Однако, когда я запускаю его, я получаю сообщение об ошибке «Неоднозначное имя столбца« Id ». '

Было бы лучше добавить столбец «ActiveOccupancy» в мою таблицу клиентов, чтобы избежать этой проблемы, или есть способ обойти это? Спасибо.

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Похоже, что в обеих таблицах client и occupancy есть столбец с именем id.Система не знает, что вы имеете в виду.Скажите это, уточнив столбец:

...
SELECT client.id,
...

вместо только неквалифицированного имени (... SELECT id, ...).

0 голосов
/ 31 марта 2019

вам нужно изменить ваш второй запрос, где используется соединение с таблицей Occupancy и использовать table.column вместо этого просто использовать column имя в выборе

         SELECT Id, CONCAT(LastName, ', ', FirstName) AS Name FROM Client 
        EXCEPT 
        SELECT c.Id, CONCAT(c.LastName, ', ', c.FirstName) AS Name 
         FROM Client c
         RIGHT JOIN Occupancy ON c.Id = Occupancy.Clie
         WHERE Occupancy.EndDate IS NULL ORDER BY c.Name ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...