麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Access97的報表解決方案

2019-11-18 17:46:30
字體:
來源:轉載
供稿:網友
利用OLE自動化解決ACESS97中文版報表生成器直線不能往下順延的缺陷

access97是一個非常優秀的數據庫軟件,它不僅能充當辦公自動化的桌面數據管理工具,也是一個開發Client/Server產品的優秀前端開發工具.它的特點是易學易用、工具豐富、不需寫大量代碼就可以在很短的時間內開發出界面優美且功能強大的系統,長期以來受到廣大開發者的青睞。但筆者在使用時發現其報表生成器中有一個明顯不適合我國國情的缺陷,就是當設置報表DETAIL節上的字段長度因為橫向空間不夠而設為自動向下順延(CanGrow屬性為True)時,如果字段旁有豎線(國內大部分公文報表都有豎線,而國外則很少有),則豎線不能和字段一起向下順延。使整個報表看起來不美觀。這個缺陷在ACCESS2.0和ACCESS97中文版上都有,而在FoxPRo2.5B/3.0/5.0下卻沒有。據微軟技術服務部的工作人員說是由于本地化時測試不夠原因所致。為此,筆者在ACCESS內采用了OLE自動化!
方法,將ACCESS97查詢生成的表送交Excel97進行處理(分類匯總、打印、預演),較好地解決了這個問題。由于ACCESS97和EXCEL97的VBA在97版本上幾乎完全兼容,在EXCEL97下錄制的宏代碼只需在ACCESS下稍加修改就行了,所以采用此方法和用內部報表生成器設計所用的時間差不多。整個工作需要下面幾步:
在EXCEL97下設計好報表的樣式,包括表頭、頁眉、頁碼等,對需要自動翻轉的列,在"單元格格式設置"下設為"自動換行"。
在EXCEL97下錄制好當數據送入后進行的操作宏(如分類匯總、加邊框線,加空行、打印輸出、預演等動作)。
在ACCESS下用VBA語句和DAO對象的方法將數據送入EXCEL表內,并將EXCEL下宏操作變成ACCESS下的語句。
以下是ACCESS97下的程序代碼,實際應用程序界面是一個對話框屏幕(FORM),上面有五個下拉框(Comb_)和一個文字框(Text),由用戶選擇相應的信息,然后用戶按"確定"命令按鈕執行程序。其中有些屬性和方法在ACCESS2.0下不能使用,可采用相應的語句.
PrivateSub確認_Click()
OnErrorGoToErrorHandler
DimstDocNameAsString
DimkAsInteger
stDocName="Pqry_YEAR"
DoCmd.OpenQuerystDocName'從原始表內根據用戶輸入的信息條件運行"生成表查詢",生成一個供打印用的表.
'增加空記錄處理--為了保證記錄數少時也打印整張表.


IfVal(Me![Comb空行])>0Then'如果用戶輸入了大于0的數值,表示加空行


Fork=1ToVal(Me![Comb空行])
CurrentDb.Execute"INSERTINTOPqry_YEAR
(項目類)VALUES('空行空行空行');"
Nextk
EndIf
DimmsgVarAsInteger
'定義EXCEL對象變量
'------------------------------
DimxlobjAsObject
DimxlsheetobjAsObject
DimxlrangeAsObject
'------------------------------
'定義ACESS記錄集對象變量
DimdbsAsDatabase,rstAsRecordset
DimstrSQLAsString
DimrecTotal,fieldTotalAsInteger'recTotal:
表示該表內記錄總數;
fieldTotal表示字段總數
Dimi,jAsInteger
i=0
j=0
'Returnreferencetocurrentdatabase.
Setdbs=CurrentDb'當前數據庫
Setrst=dbs.OpenRecordset("Pqry_YEAR")'選擇記錄集
recTotal=rst.RecordCount'得出記錄數
fieldTotal=rst.Fields.Count'得出字段數
'----------------------------------
'建立EXCEL對象
Setxlobj=CreateObject("Excel.application.8")
'打開設計好的EXCEL表--REPORT.XLS
xlobj.Workbooks.OpenFileName:=pPathname&"REPORT.xls"
Setxlsheetobj=xlobj.ActiveWorkbook.Worksheets("REPORT")
'指向工作表
'如果是改動過的表,不再打開
IfMsgBox("當前打印表格文件中已有數據,
是否需要更新?"
&Chr(13)&_
"提示:只有對數據進行改動后,才需要更新.",68)
=vbYesThen
DoCmd.HourglassTrue'由于時間較長,
將鼠標設為沙漏形狀
xlsheetobj.Rows("5:200").Select'選定區域
xlobj.Selection.DeleteShift:=-4162'
注意!原錄制宏中-4162為xlnone,是EXCEL97的常量,但在ACCESS下卻不認,只能到EXCEL下的對象瀏覽器去查詢對應的常數.
'開始向EXCEL傳送數據
DoUntilrst.EOF
Forj=1TofieldTotal
xlsheetobj.cells(5 i,j).Value=rst.Fields(j-1)
Nextj
rst.MoveNext
i=i 1
Loop
rst.Close

'在EXCEL中調整,具體常數參見EXCEL下的對象瀏覽器
xlsheetobj.Range("A4:Q"&Trim(Str(recTotal 4))).
Select'選定范圍
'以下為設置邊框線錄制的宏代碼,已刪除了相似的語句.
xlobj.Selection.Borders(5).LineStyle=-4142
xlobj.Selection.Borders(6).LineStyle=-4142
Withxlobj.Selection.Borders(7)
.LineStyle=1
.Weight=-4138
.ColorIndex=-4105
EndWith

Withxlobj.Selection
'確定是合計在表上還是在表尾
IfMe![Fram位置]=1Then
.SubtotalGroupBy:=2,Function:=-4157,
TotalList:=Array(6,9,10,_
11,12,13,14,15,16),Replace:=True,
PageBreaks:=False,_
SummaryBelowData:=False
Else
.SubtotalGroupBy:=2,Function:=-4157,
TotalList:=Array
(6,9,10,_
11,12,13,14,15,16),Replace:=True,
PageBreaks:=False,_
SummaryBelowData:=True
EndIf
EndWith
'根據用戶的選擇設置頁眉和頁尾。
Withxlsheetobj.PageSetup
.LeftHeader=""&Chr(10)&""&Chr(10)&"
"&Mid(Me![Cmbo單位],4)
.CenterHeader="&""宋體,加粗""&18"&Me!
[Cmbo年度]&"年"&Mid(Me![Cmbo類別],4)&"XXX表"
EndWith
xlsheetobj.Range("A1").Select
'將空行內容清掉
k=Val(Me![Comb空行])
IfVal(Me![Comb空行])>0Then
DimcontentAsString
i=5
content=xlsheetobj.cells(i,2).formulaR1C1
DoWhileInStr(1,content,"空行空行空行")=0
i=i 1
content=xlsheetobj.cells(i,2).formulaR1C1
Loop
xlsheetobj.Range("B"&Trim(Str(i-k 5))&":"&"Q"
&Trim(Str(i 5))).Select
xlobj.Selection.ClearContents
xlsheetobj.Range("A1").Select
EndIf

Else'不更新
xlsheetobj.Activate
EndIf
xlobj.ActiveWindow.SelectedSheets.PrintPreview'預演報表
'如為打印:xlobj.ActiveWindow.SelectedSheets.PrintOut
DoCmd.HourglassFalse'恢復鼠標形狀
xlobj.Visible=True'讓EXCEL可見
清除對象變量空間,節省內存
Setdbs=Nothing
Setxlobj=Nothing
xlobj.quit'關閉EXCEL
ExitSub
ErrorHandler:'出錯處理
DoCmd.HourglassFalse
MsgBox"Errornumber"&Err.Number&":"&Err.DescrResumeNext
EndSub
通過這個例子我們看到在OFFICE97下利用OLE自動化擴展應用程序的功能是多么方便和強大。用EXCEL完成的報表的優點是格式美觀,修改方便.缺點是第一次生成EXCEL表格時速度較慢.
本例是用EXCEL對數據進行報表操作,其實也可參照此例的方法在EXCEL上建立圖形統計、財務分析、數據透視表分析等應用程序,只要在EXCEL下錄制相應的宏,再加到ACCESS下就行了。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品日韩一区 | 91精品国 | 国产精品视频一区二区三区四区国 | 一级做a爱视频 | 日本在线不卡一区二区 | 91色爱 | 欧美一级免费高清 | 2021免费日韩视频网 | 爱福利视频 | 国产在线精品一区二区 | 爽爽淫人综合网网站 | 久在线观看福利视频69 | 久草在线观看福利视频 | 中国黄色一级生活片 | 亚洲福利视| 91综合在线观看 | 越南一级黄色片 | 久久免费看毛片 | 国产羞羞视频在线观看免费应用 | 成人国产精品一区二区毛片在线 | 亚洲午夜在线 | 天天夜碰日日摸日日澡性色av | 毛片免费视频播放 | hd性videos意大利复古 | av电影在线网| 视频久久免费 | 羞羞网站在线观看入口免费 | 欧美十区 | 草莓视频在线导航 | 成人做爰高潮片免费视频韩国 | 中文字幕在线观看日韩 | 免费网址黄 | 国产精品自拍99 | 一本一本久久a久久精品综合小说 | 精品一区二区久久久久 | 国产精品久久久久久久av三级 | 日韩电影一区二区 | 精品国产一区二区三区四 | 国产羞羞网站 | 亚洲免费观看视频 | xxxⅹ96日本护士hd |