>我有两个表 学生和出勤,他们有一个公共字段 SID 他们链接
学生
SID | 姓名 |等级 | 年龄 |
01 | A1 |B1 | 8 |
02 | A2 |B2 | 9 |
03 | A3 |B1 | 8 |
04 | A4 |B4 | 10 |
05 | 答5 |B1 | 8 |
06 | A6 |B1 | 8 |
出席
援助 | SID |礼物 |日期 |
001 | 01 |是 |12-12-16 |
002 | 01 |是 |13-12-16 |
003 | 02 |是 |12-12-16 |
004 | 02 |是 |13-12-16 |
我想在水晶报告中创建一个报告,这将给缺席的学生,使用考勤表
即出勤。SiD <> Student.SID
首先在数据库中使用以下查询创建视图:
select * from Students where SID NOT IN (Select DISTINCT(SID) from Attendance);
- 创建新表单
- 在新窗体上拖放 N 个波峰报表组件
- 在右上角选择从上述查询创建的视图。
- 使用标签和数据库字段的设计表单
- 就是这样。
或者,如果您无法创建视图,请按照以下步骤操作:
- 创建新表单
- 在新窗体上拖放 N 个波峰报表组件
- 选择学生表进行查询
- 使用标签和数据库字段的设计表单
- 在表单加载时使用以下代码
SqlConnection cnn;
string connectionString = null;
string sql = null;
connectionString = "connectring to sql server";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select * from Students where SID NOT IN (Select DISTINCT(SID) from Attendance)";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet ds = new DataSet();
dscmd.Fill(ds, "data");
objRpt.SetDataSource(ds.Tables[0]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
只需手动分配连接表查询。