Ваш sql полностью нечитаемый , поэтому довольно просто сделать простую ошибку (опечатку), которую трудно найти.Давайте сделаем sql чистым (пусть он будет читабельным и параметризованным ):
string sql =
@"SELECT CLIENTPARTNERSHIP.ClientIdent,
CLIENTPARTNERSHIP.NameLine1,
ClientType,
ClientStatus,
AddressLine1,
AddressLine2,
CityName,
PostalCode,
StateProvinceCode,
BillManagerName,
FirmClientStaffAssignmentName,
StaffFirstName AS PartnerFirstName,
StaffLastName AS PartnerLastName
FROM CLIENTPARTNERSHIP JOIN
CLIENT ON CLIENTPARTNERSHIP.ClientIdent = CLIENT.ClientIdent JOIN
CLIENTADDRESS ON CLIENTPARTNERSHIP.ClientIdent = CLIENTADDRESS.ReferenceIdent JOIN
CLIENTPRACTICE ON CLIENTPARTNERSHIP.ClientIdent = CLIENTPRACTICE.ClientIdent JOIN
CLIENTCRS ON CLIENTPARTNERSHIP.ClientIdent = CLIENTCRS.ClientIdent JOIN
STAFF ON STAFF.StaffIdent = CLIENTCRS.StaffIdent
WHERE FirmClientStaffAssignmentName = 'Primary Partner'
AND ClientSubId = @prm_ClientSubId
UNION
SELECT CLIENTCORP.ClientIdent,
CLIENTCORP.NameLine1,
Clientid,
ClientSubId,
ClientType,
ClientStatus,
AddressLine1,
AddressLine2,
CityName,
PostalCode,
StateProvinceCode,
BillManagerName,
FirmClientStaffAssignmentName,
StaffFirstName AS PartnerFirstName,
StaffLastName AS PartnerLastName
FROM CLIENTCORP JOIN
CLIENT ON CLIENTCORP.ClientIdent = CLIENT.ClientIdent JOIN
CLIENTADDRESS ON CLIENTCORP.ClientIdent = CLIENTADDRESS.ReferenceIdent JOIN
CLIENTPRACTICE ON CLIENTCORP.ClientIdent = CLIENTPRACTICE.ClientIdent JOIN
CLIENTCRS ON CLIENTCORP.ClientIdent = CLIENTCRS.ClientIdent JOIN
STAFF ON STAFF.StaffIdent = CLIENTCRS.StaffIdent
WHERE FirmClientStaffAssignmentName = 'Primary Partner'
AND ClientSubId = @prm_ClientSubId";
Теперь все просто, верно?
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
// Sorry: AddWithValue - easy (I don't know ClientSubId's type), but not the best
//TODO: change "AddWithValue" into "Add" and put actual ClientSubId's RDMBS type
sda.SelectCommand.Parameters.AddWithValue("@prm_ClientSubId", SearchBox.Text);
Примечания: не жесткий код , а параметризация ваш запрос:
- Подумайте о SQL-инъекция : что еслиЯ положил
"'; delete table Staff --"
в SearchBox.Text
. - Подумайте о производительности : у вас будет много очень похожих запросов (вместо одного), которые будутанализируется каждый раз, когда вы их выполняете, кроме того, они будут помещаться в кэш анализируемых запросов и предотвращать кэширование других запросов