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 раза с его контрактами, независимо от того, являются ли контракты неактивными. они не должны отображаться, поскольку неактивные контракты не входят в данные, возвращаемые запросом.
Может ли кто-нибудь помочь мне с этим?.
Что я уже пробовал:
все, что я написал в описании