支援的 Access 報表功能
當您匯入報表至報表設計師時,匯入程序會將 Microsoft Access 報表轉換成 Reporting Services 報表定義語言 (Report Definition Language,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) 檔案匯入報表,連接字串可能會指向 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 (textbox) |
CanShrink (textbox) |
Caption |
FontBold |
FontItalic |
FontName |
FontSize |
FontUnderline |
FontWeight |
ForceNewPage |
ForeColor |
Height |
HideDuplicates |
Hyperlink |
IsHyperlink |
IsVisible |
KeepTogether (group) |
Left |
LeftMargin |
LineSlant |
LineSpacing |
LinkChildFields |
LinkMasterFields |
NewRowOrCol |
PageFooter |
PageHeader |
Pages |
Picture |
PictureTiling (report) |
ReadingOrder |
RepeatSection |
RightMargin |
RunningSum |
SizeMode |
TextAlign |
Top |
TopMargin |
Width |
Reporting Services 不支援下列屬性。
CanGrow (section) |
CanShrink (section) |
DecimalPlaces |
FastLaserPrinting |
Filter |
FilterOn |
Format |
FormatConditions |
GrpKeepTogether |
KeepTogether (section) |
NumeralShapes |
Orientation |
PaintPalette |
PaletteSource |
PictureAlignment |
PicturePages |
PictureSizeMode |
PictureTiling (image) |
ScrollBars |
SpecialEffect |
Vertical |
群組
Access 會使用下列三種屬性的組合來定義群組層次:群組運算式、GroupOn 屬性和 GroupInterval 屬性。沒有群組首或群組尾的群組,會與包含在其中的群組合併。如果群組沒有包含其他群組,便會對詳細資料區段套用排序,並卸除群組。
運算式
Access 會使用運算式,來指定顯示在文字方塊中的值。Access 會使用 Visual Basic,加上一些彙總函數,作為運算式語言。報表設計師會將這些 Access 運算式轉換成報表運算式。
函數
Reporting Services 的報表定義使用 Visual Basic .NET 作為原生的運算式語言;Access 2002 則使用 Visual Basic for Applications (VBA)。下列清單描述 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 |
Date$ |
DateAdd |
DateDiff |
DatePart |
DateSerial |
DateValue |
Day |
Hour |
Minute |
Month |
MonthName |
Now |
Second |
時間 |
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 |
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 檔案。點陣圖會以內嵌影像儲存在報表中。如需有關內嵌影像的資訊,請參閱<將影像加入至報表>。
其他考量
除了以上項目之外,下列資訊也適用於從 Access 匯入的報表:
- 格式化的條件不會轉換。
- Access 中的報表屬性的描述欄位不會轉換。