Crystal reports CrystalReports中的每日计划

Crystal reports CrystalReports中的每日计划,crystal-reports,Crystal Reports,我试图在Crystal Reports中创建一个每日时间表,以显示诊所医生的预约。从早上7点到下午5点,一天中的时间将以半小时为增量。顶部的另一边是医生的名字。每一列都会将医生的预约与时间正确地排成一行。我该怎么做呢?你应该提供一些关于你的背景的更多信息 解决方案 无论如何,请按照以下步骤操作: 编写一个查询,返回医生姓名、日期和时间、预约 按感兴趣的日期筛选查询 创建一个交叉选项卡,将医生姓名放在列中,日期和时间放在行中,预约放在字段中 按最大值(或最小值)汇总约会,其他汇总报告数字不是实际值

我试图在Crystal Reports中创建一个每日时间表,以显示诊所医生的预约。从早上7点到下午5点,一天中的时间将以半小时为增量。顶部的另一边是医生的名字。每一列都会将医生的预约与时间正确地排成一行。我该怎么做呢?

你应该提供一些关于你的背景的更多信息

解决方案 无论如何,请按照以下步骤操作:

  • 编写一个查询,返回医生姓名、日期和时间、预约
  • 按感兴趣的日期筛选查询
  • 创建一个
    交叉选项卡
    ,将医生姓名放在列中,日期和时间放在行中,预约放在字段中
  • 按最大值(或最小值)汇总约会,其他汇总报告数字不是实际值
  • 编辑样式以忽略行和列的总计(我想您不需要)
  • 编辑日期和时间的格式(右键单击该字段),以仅显示小时(和分钟)
  • 编辑日期和时间选项(在Cross Tab Expert上)以每分钟显示一行(默认“每天”仅显示一行..)
  • 喜欢你的报告
  • 小心
    • 交叉表每行仅允许1个约会
    • 如果来自查询的时间存在时间间隔,则交叉表中将存在时间间隔(查看16.00行);必须以报告空约会的方式编写查询
    样本报告 我创建了一个示例报告

    示例查询 #Emanuele的建议是可行的,但有很多限制:在报告级别定义的固定时间表内,只有几个半小时是可管理的

    我的建议会稍微复杂一点:

    • 在数据库中添加一个“标准时间表”表,其中包含#Emanuele建议的条目:从7h00到18h00,有半小时
    • 管理一个“开放式时间表”表,在该表中,可以在一天中的任何时间自由进行预约:全小时、半小时,但也可以在标准时间表之前或之后的任何特定时间进行预约
    • 通过将“标准”和“开放”计划与UNION运算符合并来生成计划查询
    使用此方法,可以生成包含以下内容的报告

    • 作为默认报告的标准/空计划
    • 所有在本时间表内作出的任命,即使他们不遵守30'步规则
    • 一名医生多次预约
    • 在计划之外完成的所有约会(如果存在)

    嗨,Emanuele,我试过这么做,但我没有用,每当我在摘要字段选项卡中插入字符串时,他们只给我一个选项,这就是计算计数,我不想这样,而且我无法下载你上载的文件链接已关闭,我将其从答案中删除。您不必在报告中插入“摘要字段”:步骤6是关于交叉表专家内部的Summize
    SELECT  'Doctor 1' as Doctor,  CAST('2012-02-01 07:00:00' AS DATETIME) as DateTime , 'mr. Red' as Appointment
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 07:30:00' AS DATETIME)  , 'mr. Pink' 
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 08:00:00' AS DATETIME)  , 'mr. White' 
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 08:30:00' AS DATETIME)  , 'mr. Yellow' 
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 09:00:00' AS DATETIME)  , 'mr. Green' 
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 09:30:00' AS DATETIME)  , 'mr. Gray' 
    union
    SELECT 'Doctor 1' , CAST('2012-02-01 16:00:00' AS DATETIME)  , 'mr. Purple'
    union
    SELECT 'Doctor 2' , CAST('2012-02-01 07:30:00' AS DATETIME)  , 'mr. Red' 
    union
    SELECT 'Doctor 2' , CAST('2012-02-01 08:00:00' AS DATETIME)  , 'mr. Orange' 
    union
    SELECT 'Doctor 3' , CAST('2012-02-01 09:30:00' AS DATETIME)  , 'mr. Blue'