摘要:該文從實際應用出發,詳細論述了如何在Authorware中配合Access數據庫解決大數據量查詢問題。
關鍵詞:Authorware;Access;數據庫;查詢
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)30-0541-02
The Realization of the Great Volume of Data Enquiries Based on the Database Access in Authorware
LI Ying-song1, ZOU Wei2, LI Bi-jin1, HE Li-ping3
(1.School of Computer Science and Information Technology, Yunnan Normal University,Kunming 650092, China;2.Yunnan College of Business Management, Kunming 650106,China;3.No9 Middle School of Kunming,Kunming 650092, China)
Abstract: In this paper, based on the actual application, we discuss the realization of the great volume of data enquiries based on the database access in Authorware.
Key words: authorware; access; database; enquire
1 引言
Authorware是一個圖標導向式的多媒體制作工具,其具有強大的交互功能,用戶只需通過對圖標的調用來編輯一些控制程序的走向,便可將文字、圖形、聲音、動畫、視頻等各種多媒體數據整合在一起,達到多媒體軟件制作的目的。它還提供了許多系統變量和函數,以根據用戶響應的情況,執行特定功能。
在眾多的實際應用中,查詢問題在Authorware中顯得尤為重要,它既是一個重點,也是一個難點。本文根據筆者在眾多制作中的經驗,結合年鑒類多媒體交互式光盤的開發,論述如何在Authorware中配合Access數據庫解決大數據量查詢問題。
2 準備工作
首先我們需要將所有整合到軟件中的資料進行整理、分類,且將其以具體年份進行編排,以方便我們在Authorware中進行調用。此準備工作很重要,一旦整理完畢,其路徑及文件名不再更改。其次我們需要在Access中建立一個數據庫表。在該表中包含Title(資料的文件名)、Content(資料所在的路徑)、NianFen(資料所屬的具體年份)等字段。
3ODBC數據源的自動配置
為了實現在查詢上的方便快捷,我們需要將數據源進行自動配置。在Authorware中一開始,便在計算圖標中寫入以下代碼:
dbType:=\"Microsoft Access Driver (*.mdb)\" --ODBC數據源驅動程序
DSN:=\"DSN=HB_DSN;\"--指定數據源名
Description:=\"Description=用戶資料管理;\" --數據源描述
FIL:=\"FIL=MS Access;\" --指定數據源的數據庫類型
DBQ:=\"DBQ=\"^FileLocation^\"test.mdb;\" --指定數據庫文件
dbList:=DSN^Description^FIL^DBQ
Result:=tMsDBRegister(4, dbType, dbList)--配置數據源
其中,“test.mdb”為我們在Access中建好的數據庫文件名。
4 為Combobox添加查詢年份選項
確認所有資料數據已經按“年份”進行編排,用“SetSpriteProperty”和“CallSprite”兩個函數對其進行設置,使其在查詢時首先可以按照“年份”進行分類,查詢起來既方便又快捷。
SetSpriteProperty(@\"combobox\",#style,2)
CallSprite(@\"combobox\",#AddItem,\"請選擇年份\")
CallSprite(@\"combobox\",#AddItem,\"1994年年鑒\")
CallSprite(@\"combobox\",#AddItem,\"1995年年鑒\")
CallSprite(@\"combobox\",#AddItem,\"1996年年鑒\")
……
SetSpriteProperty(@\"combobox\",#Text,\"請選擇年份\")
“SetSpriteProperty”設置當前由子畫面圖標顯示的子畫面屬性值,“CallSprite”調用一個子畫面進程,“combobox”為Authorware中的“Activex Control”。通過幾個函數的配合使用,實現在查詢時可對其年份進行選擇,提高查詢效率。
5 查詢語句的編寫
在“Combobox”旁合適的位置制作按鈕,并設置熱區交互方式,通過計算圖標中查詢代碼的編寫,實現對數據庫查詢的操作。
--使用ODBC接口打開數據庫
ODBCHandle:=ODBCOpen(WindowHandle, \"\", \"HB_DSN\", \"\", \"\")
--對數據庫的操作
getkey:=EntryText
if getkey=\"\" then
MessageBox(WindowHandle,\"請輸入查詢關鍵字\",\"系統提示\",48)
else
year1:=GetSpriteProperty(@\"combobox\",#Text)
search_title:=\"SELECT title FROM neirong where nianfen='\"^year1^\"' and title like '%\"^getkey^\"%'\"
search_title:=ODBCExecute(ODBCHandle,search_title)
if search_title=\"\" then
MessageBox(WindowHandle,\"沒有查詢到任何內容\",\"系統提示\",48)
else
recordcount:=LineCount(search_title)
GoTo(IconID@\"IconTitle\")
end if
end if
注:“neirong”為數據庫表的名稱,“IconTitle”為需要跳轉到的圖標的名稱。
6 查詢結果進列表框
經過對數據庫的操作得到查詢結果后,需要將其顯示在列表框中。列表框中顯示的內容是資料的標題(Title)。計算圖標中的代碼如下:
SetSpriteProperty(@\"listbox\",#Liststyle,0)
repeat with i:=1 to recordcount
H_name:=GetLine(search_title,i)
CallSprite(@\"listbox\",#AddItem,H_name)
end repeat
同樣需要說明的是,“listbox”為為Authorware中的“Activex Control”,在計算圖標中對其進行設置即可。
7 列表框與資料內容的鏈接
查詢到相應的內容顯示在列表框中后,如何解決其與資料內容的鏈接,這既是難點,也是重點。在交互中,我們采用“事件”的響應類型,其代碼為:
list_value:=GetSpriteProperty(@\"listbox\",#value)
GoTo(IconID@\"IconTitle\")
“IconTitle”為一計算圖標的名稱,其計算圖標內代碼為:
ODBCHandle:=ODBCOpen(WindowHandle, \"\", \"HB_DSN\", \"\", \"\")
search_content:=\"SELECT content FROM neirong where title='\"^list_value^\"'and nianfen='\"^year1^\"'\"
search_content:=ODBCExecute(ODBCHandle,search_content)
它的作用是在觸發“事件”響應后,通過對數據庫的操作,實現標題(Title)與具體資料內容的鏈接。最后,我們將其內容顯示出來(在本實例中,我們將其顯示在WebXtral中,不詳述)即可。跳轉語句GoTo(IconID@\"IconTitle\")的使用是為了在交互上更為人性化一些。
8 結束語
該方法很好地解決了多媒體交互式光盤開發中的大數據量查詢問題,經多次測試,具有較高的穩定性(制作的軟件已經正式出版發行)。在實際運用中,有很好的普遍性和可移植性,效果令人滿意。
參考文獻:
[1] 袁海東.Authorware 7.0變量與函數參考手冊[M].北京:電子工業出版社,2004.
[2] 畢廣吉.Authorware多媒體開發程序設計與典型實例[M].北京:人民郵電出版社,2004.