edwinmunguia Ответов: 0

Crystal reports показывает больше записей, чем dataset VB.NET


Слушай, у меня проблема, от которой у меня голова раскалывается.

начнем с таблиц базы данных.
table 1: users (Im putting only the fields im using in the query)
Fields:
id
name
lastname

table 2: contracts
Fields:
user_id
department
salary
type /the type is 1=eventual or 2=permanent
status / 1=active, 2=inactive, 3=vacations

table 3: departments
Fields:
id
name


Вот таблицы, к которым я присоединюсь в следующем запросе

я должен сказать, что пользователь может иметь несколько контрактов, но он может иметь только один активный
и в запросе вот что я делаю, я получаю только активный контракт

язык SQL

SELECT * FROM users
   INNER JOIN contracts 
  ON contracts.id = (SELECT TOP 1 contracts.id FROM contracts 
       WHERE contracts.user_id = users.id AND (contracts.status=1 OR contracts.status=3) ORDER BY contracts.id DESC) 
  INNER JOIN departments  
  ON contracts.department = departments.id
WHERE contracts.type=2


То, что делает мой запрос, - это получить постоянных пользователей с активным контрактом, и запрос работает нормально. например: если у меня есть 5 пользователей, но только у двух из них есть один активный контракт, запрос возвращает две строки.

ГЛ.
ds-это набор данных, в котором у меня есть строки, возвращенные из запроса
и вот здесь я отправляю строки в отчет.
crD.SetDataSource(ds.Tables(0))
                CrystalReportViewer1.RefreshReport()


как я уже говорил ранее запрос возвращает только две строки пользователей
но когда я открываю отчет в средстве просмотра он показывает больше данных
например

если у одного пользователя в базе данных есть 3 контракта, но только один из них активен, то crystal reports показывает этого пользователя 3 раза с его контрактами, независимо от того, являются ли контракты неактивными. они не должны отображаться, поскольку неактивные контракты не входят в данные, возвращаемые запросом.

Может ли кто-нибудь помочь мне с этим?.

Что я уже пробовал:

все, что я написал в описании

0 Ответов