复杂水晶报表帮助——数据库字段值中的分号
Posted
技术标签:
【中文标题】复杂水晶报表帮助——数据库字段值中的分号【英文标题】:Complicated crystal report help - Semicolon in the database field value 【发布时间】:2012-07-03 18:49:58 【问题描述】:我有一个名为 Firstname 和 Categories 的数据库列。
FirstName | Categories
Mike | Blue; Green ; Red
Peter | Green; Red
Paul | Red; Blue
我想生成这种格式的报告
**Blue :**
Mike
Paul
**Green:**
Mike
Peter
**Red:**
Peter
Paul
问题是我无法更改访问数据库列的值,它必须有一个分号来分隔值。我有 1000 多条记录和 30 多个类别。
我怎样才能做到这一点?我正在使用水晶报表,我不是专业用户,但我很容易学习东西。
【问题讨论】:
为什么要在一个字段中存储多个值?这不是好的设计。 是的,我知道,但数据来自其他来源,所以我别无选择,只能按原样使用它:( 您是否有权向 Access 数据库添加新视图? 改变你的数据库设计,创建一个触发器,在接收到一行时拆分字符串并将值分开行/列/表 嗨,感谢您的意见...这就是我的想法。我不知道触发器是什么,我计划现在手动执行所有操作-通过循环遍历所有记录,将类别名称及其各自的成员名称添加到 datagridview 并将 datagridview 传递给水晶来分离所有类别名称报告 - 听起来很复杂,但我认为这是可行的。 【参考方案1】:我会说你很可能不走运。该数据的设计非常糟糕,并且没有简单的方法可以将这些数据取出。
您的选择是:
让其他来源以可解析的格式发送数据,并将 Crystal Reports 指向那个,或者... 在 Access 中创建一个新的规范化表,在 Access 中使用 VBA 爬取当前表并填充新表,然后将 Crystal Reports 指向新表。选项 #2 的缺点是您可能必须在运行 Crystal Report 之前重新填充新表。
【讨论】:
【参考方案2】:这很容易实现,尽管有 30 个类别的可能性它变得丑陋。如果一个类别的全名是另一个类别的子字符串(例如:Green 和 YellowGreen),那就更难看了
-
制作一个 Crystal 报表,选择数据库,但选择了添加命令而不是拖动表格。
像这样插入“SQL”:
.
SELECT 'Blue' As Category,*
FROM Customers
WHERE Categories LIKE '*Blue*'
UNION ALL
SELECT 'Green' As Category,*
FROM Customers
WHERE Categories LIKE '*Green*'
UNION ALL
SELECT 'Red' As Category,*
FROM Customers
WHERE Categories LIKE '*Red*'
然后在 Report > Group Expert 下按 Command.Category 分组
【讨论】:
您好,感谢您的意见。问题是类别未知。他们可以设置任何值,所以我现在计划手动执行所有操作 - 即通过循环遍历所有记录来分隔所有类别名称,将类别名称及其各自的成员名称添加到 datagridview 并将 datagridview 传递给水晶报告 - 听起来很复杂但这就是我认为可行的方法。以上是关于复杂水晶报表帮助——数据库字段值中的分号的主要内容,如果未能解决你的问题,请参考以下文章