支持的 Access 报表功能 (SSRS)
将报表导入报表设计器时,导入过程会将 Microsoft Access 报表转换为 Reporting Services 报表定义语言 (RDL) 文件。Reporting Services 支持多项 Access 功能;但是,由于 Access 和 Reporting Services 之间存在差异,因此某些功能会略有修改或不受支持。本主题介绍如何将 Access 报表功能转换为 RDL。
导入 Access 报表
某些查询包含专用于 Access 的代码。Access 代码不随报表导入。另外,如果查询包含嵌入的字符串,则相应的报表可能无法正确导入。若要解决此问题,请使用字符代码来替代这些字符串。例如,使用 CHAR(34) 来替代逗号 (,) 字符。
导入过程不能正确地传递连接字符串信息中的分号 (;) 或 XML 标记字符(<、> 等)。如果连接字符串包含分号或 XML 标记字符,则在导入报表后,必须手动设置新报表中的密码。
导入过程不会导入连接字符串中的连接设置或常规超时设置。导入报表后,您可能必须调整这些设置。
如果所导入的报表包含带有查询参数的查询,则在导入报表时将不转换查询。若要将查询与报表一同导入,请暂时先用硬编码值替换 Access 报表中的查询参数,然后在导入报表后再用查询参数来替换这些值。
数据源
Reporting Services 支持 OLE DB 数据源,例如 SQL Server。如果您是从 Access 项目 (.adp) 文件导入报表,则数据源的连接字符串将从 .adp 文件的连接字符串中获取。如果您是从 Access 数据库(.mdb 或 .accdb)文件导入报表,则连接字符串可能会指向 Access 数据库,并且您在导入报表后可能需要更正该字符串。如果 Access 报表的数据源是一个查询,则无需在 RDL 中进行修改即可存储此查询信息。如果 Access 报表的数据源是一个表,则转换过程将根据表名和该表中的字段创建一个查询。
带有自定义模块的报表
如果模块中包含自定义 Microsoft Visual Basic 代码,则不转换该代码。如果报表设计器在导入过程中遇到代码,则会生成一条警告消息,显示在**“任务列表”**窗口中。
报表控件
Reporting Services 支持下列 Access 控件,并在转换后的报表定义中包含这些控件。
Image |
Label |
Line |
Rectangle |
SubForm |
SubReport 注意:虽然 SubReport 控件是在主报表内进行转换的,但子报表本身将单独转换。 |
TextBox |
Reporting Services 不支持以下控件:
BoundObjectFrame |
CheckBox |
ComboBox |
CommandButton |
CustomControl |
ListBox |
ObjectFrame |
OptionButton |
TabControl |
ToggleButton |
如果报表设计器在导入过程中遇到上述任何控件,则会生成一条警告消息,显示在**“任务列表”**窗口中。
诸如 ActiveX 和 Office Web 组件等之类的其他控件将不导入。例如,如果 Access 报表包含 OWC 图表控件,则在导入报表时将不对其进行转换。
报表属性
Reporting Services 支持以下可通过 Access 用户界面使用的属性。不支持只能在代码中使用的属性,并且也不在此列出。
BackColor |
BackStyle |
BorderColor |
BorderStyle |
BorderWidth |
BottomMargin |
CanGrow(文本框) |
CanShrink(文本框) |
Caption |
FontBold |
FontItalic |
FontName |
FontSize |
FontUnderline |
FontWeight |
ForceNewPage |
ForeColor |
Height |
HideDuplicates |
Hyperlink |
IsHyperlink |
IsVisible |
KeepTogether(组) |
Left |
LeftMargin |
LineSlant |
LineSpacing |
LinkChildFields |
LinkMasterFields |
NewRowOrCol |
PageFooter |
PageHeader |
Pages |
Picture |
PictureTiling(报表) |
ReadingOrder |
RepeatSection |
RightMargin |
RunningSum |
SizeMode |
TextAlign |
Top |
TopMargin |
Width |
Reporting Services 不支持以下可通过 Access 用户界面使用的属性。
CanGrow(区域) |
CanShrink(区域) |
DecimalPlaces |
FastLaserPrinting |
Filter |
FilterOn |
Format |
FormatConditions |
GrpKeepTogether |
KeepTogether(区域) |
NumeralShapes |
Orientation |
PaintPalette |
PaletteSource |
PictureAlignment |
PicturePages |
PictureSizeMode |
PictureTiling(图像) |
ScrollBars |
SpecialEffect |
Vertical |
分组
Access 使用以下三种属性的组合来定义组级别:组表达式、GroupOn 属性以及 GroupInterval 属性。不含组头或组尾的组将与其所包含的组一起合并。如果该组不包含其他组,则对详细信息区域进行排序并删除该组。
表达式
Access 使用表达式来指定文本框中显示的值。除了一些聚合函数外,Access 还可将 Visual Basic 用作其表达式语言。报表设计器将这些 Access 表达式转换为报表表达式。
函数
Reporting Services 报表定义将 Visual Basic .NET 用作其本机表达式语言,而 Access 2002 则使用 Visual Basic。以下列表介绍了 Reporting Services 所支持的函数。
数组函数
Reporting Services 支持以下数组函数:
LBound
UBound
转换函数
Reporting Services 支持以下转换函数:
Asc |
CBool |
CByte |
CCur |
Cdate |
CDbl |
CDec |
Chr |
Chr$ |
CInt |
CLng |
CSng |
CStr |
CVar |
CVDate |
Format |
FormatCurrency |
FormatDateTime |
FormatNumber |
FormatPercent |
Hex |
Hex$ |
Nz |
Oct |
Oct$ |
Str |
Str$ |
StrConv |
Val |
Reporting Services 不支持以下转换函数:
GUIDFromString
StringFromGUID
数据库函数
Reporting Services 支持以下数据库函数:
CreateReport |
GetObject |
HyperlinkPart |
Partition |
Reporting Services 不支持以下数据库函数:
CodeDb |
CreateControl |
CreateForm |
CreateGroupLevel |
CreateObject |
CreateReportControl |
CurrentDb |
CurrentUser |
DeleteControl |
DeleteReportControl |
Eval |
IMEStatus |
SysCmd |
日期/时间函数
Reporting Services 支持以下日期/时间函数:
日期 |
Date$ |
DateAdd |
DateDiff |
DatePart |
DateSerial |
DateValue |
Day |
Hour |
Minute |
Month |
MonthName |
Now |
Second |
Time |
Time$ |
Timer |
TimeSerial |
TimeValue |
Weekday |
WeekdayName |
Year |
DDE/OLE 函数
Reporting Services 不支持以下 DDE/OLE 函数:
DDE |
DDEIntitate |
DDERequest |
DDESend |
LoadPicture |
域聚合函数
Reporting Services 不支持以下域聚合函数:
DAvg |
DCount |
DFirst |
DLast |
DLookup |
DMax |
DMin |
DStDev |
DStDevP |
DSum |
DVar |
DVarP |
错误处理函数
Reporting Services 支持以下错误处理函数:
Err |
Error |
Error$ |
IsError |
Reporting Services 不支持以下错误处理函数:
- CVErr
财务函数
Reporting Services 支持以下财务函数:
DDB |
FV |
IPmt |
IRR |
MIRR |
NPer |
NPV |
Pmt |
PPmt |
PV |
Rate |
SLN |
SYD |
交互函数
Reporting Services 支持以下交互函数:
Command |
Command$ |
CurDir |
CurDir$ |
DeleteSetting |
Dir |
Dir$ |
Environ |
Environ$ |
EOF |
FileAttr |
FileDateTime |
FileLen |
FreeFile |
GetAllSettings |
GetAttr |
GetSetting |
Loc |
LOF |
QBColor |
RGB |
SaveSetting |
Seek |
SetAttr |
Shell |
Spc |
Tab |
Reporting Services 不支持以下交互函数:
DoEvents |
In |
输入 |
Input$ |
检查函数
Reporting Services 支持以下检查函数:
IsArray |
IsDate |
IsEmpty |
IsError |
IsNull |
IsNumeric |
IsObject |
TypeName |
VarType |
Reporting Services 不支持以下检查函数:
- IsMissing
数学函数
Reporting Services 支持以下数学函数:
Abs |
Atn |
Cos |
Exp |
Fix |
Int |
Log |
Rnd |
Round |
Sgn |
Sin |
Sqr |
Tan |
消息函数
Reporting Services 不支持以下消息函数:
InputBox |
InputBox$ |
MsgBox |
程序流函数
Reporting Services 支持以下程序流函数:
Choose |
IIf |
Switch |
SQL 聚合函数
Reporting Services 支持以下 SQL 聚合函数:
Avg |
Count |
Max |
Min |
StDev |
StDevP |
Sum |
Var |
VarP |
文本函数
Reporting Services 支持以下文本函数:
Format |
Format$ |
InStr |
InStrRev |
LCase |
LCase$ |
Left |
Left$ |
Len |
LTrim |
LTrim$ |
Mid |
Mid$ |
Replace |
Right |
Right$ |
RTrim |
Space |
Space$ |
StrComp |
StrConv |
String |
String$ |
StrReverse |
Trim |
Trim$ |
UCase |
UCase$ |
常量
Access 不支持在表达式中使用特殊的 Visual Basic 常量(例如 vbTrue),因而不必转换。但是,有一点例外:关键字 Null 将转换为 System.DbNull.Value。
参数
在导入过程中,报表设计器会对报表内的每个表达式进行扫描,以找出与字段名或控件不相对应的变量。这些变量将添加到报表参数中。
存储过程参数的数据类型始终作为字符串导入。导入报表后,必须手动更改参数,才可使用正确的数据类型。
对象名
Access 允许字段与控件使用相同的名称;而 Reporting Services 不允许。Visual Basic 6.0 允许在变量名中使用空格;而 Visual Basic .NET 不允许。如果存在多个名称相同的对象,则导入过程将会使用有效的名称来替换所有这类对象的名称,并为它们分配唯一的名称。然后,将对每个表达式进行扫描,并使用新名称来替换与已重命名的对象相对应的变量名。
矩形框和包容
在 Reporting Services 报表定义中,矩形框可以包含其他报表项。任何大于报表项并且其 90% 以上的区域与报表项重叠的矩形框都将成为报表项的容器。
位图
导入报表后,嵌入在报表中的所有位图都会转换为 .bmp 格式,而不管其最初是何种格式。例如,如果报表中包含 .jpg 和 .gif 文件,则这些资源与报表一起导入后都将转换为 .bmp 文件。位图可作为嵌入图像存储在报表中。有关嵌入图像的信息,请参阅图像(Report Builder 3.0 和 SSRS)。
其他注意事项
除前面几项之外,以下信息也适用于从 Access 导入的报表:
不转换条件格式。
不转换 Access 的报表属性中的说明字段。