水晶报表 - 创建报表不等于列



>我有两个表 学生和出勤,他们有一个公共字段 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();

只需手动分配连接表查询。

最新更新