国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

訪問(wèn)Foxpro數(shù)據(jù)庫(kù)----用MicrosoftJet訪問(wèn)桌面數(shù)據(jù)庫(kù)(二)

2019-11-18 17:48:22
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
MicrosoftJetXbaseIISAM驅(qū)動(dòng)程序支持下列版本的MicrosoftFoxPRo:2.0,2.5,2.6,3.0和DBC。當(dāng)通過(guò)MicrosoftJet數(shù)據(jù)庫(kù)引擎訪問(wèn)FoxPro數(shù)據(jù)庫(kù)時(shí),還應(yīng)當(dāng)考慮MicrosoftJet如何處理FoxPro數(shù)據(jù)類(lèi)型、已刪除的記錄、FoxPro索引和備注字段。為了在MicrosoftJet中訪問(wèn)FoxPro數(shù)據(jù)庫(kù),應(yīng)指定適當(dāng)?shù)倪B接信息,包括:

(1)源數(shù)據(jù)庫(kù)類(lèi)型:可以是下列中的一個(gè):

·FOXPro2.0

·FOXPro2.5

·FOXPro2.6

·FOXPro3.0

·FOXProDBC

(2)數(shù)據(jù)庫(kù)名稱:目錄的完整路徑,在該目錄中包含各種希望訪問(wèn)的FoxPro文件(對(duì)于MicrosoftFoxProDBC,該路徑必須包括.dbC文件的名稱。)

(3)源表名稱:表的名稱。在MicrosoftJet中,把FoxPro的一個(gè)數(shù)據(jù)庫(kù)文件(.dbf)看作是一個(gè)表,因此,指定表名稱實(shí)際上是指定.dbf文件。在使用時(shí),應(yīng)去掉擴(kuò)展名.dbf;如果使用帶有擴(kuò)展名的完整的文件名,則須用數(shù)碼符號(hào)(#)代替文件擴(kuò)展名之前的點(diǎn)(.);對(duì)于MicrosoftFoxProDBC,則應(yīng)使用DBC中的表名。

1.鏈接FoxPro數(shù)據(jù)庫(kù)

為了將FoxPro數(shù)據(jù)庫(kù)鏈接到MicrosoftJet數(shù)據(jù)庫(kù),可以先用OpenDatabase方法打開(kāi)本地的MicrosoftJet數(shù)據(jù)庫(kù),建立TableDef對(duì)象,并設(shè)置該對(duì)象的Connect和SourceTableName屬性,然后分別指定要鏈接的FoxPro數(shù)據(jù)庫(kù)(表)的路徑和名稱。

例:編寫(xiě)程序,鏈接FoxPro數(shù)據(jù)庫(kù)。在窗體上畫(huà)一個(gè)命令按鈕,然后編寫(xiě)如下事件過(guò)程:

PrivateSubCommand1_Click()

DimdbsJetAsDatabase

DimtdfFoxTableAsTableDef

’打開(kāi)MicrosoftJet數(shù)據(jù)庫(kù)

SetdbsJet=OpenDatabase("C:/dbdir/db2.mdb")

’建立TableDef對(duì)象

SettdfFoxTable=dbsJet.CreateTableDef("LinkedFoxProTable")

’設(shè)置連接信息

tdfFOXTable.Connect="FOxPro3.0;DATABASE=a:/"

tdfFOxTable.SourceTableName="zf01"

’追加TableDef對(duì)象以創(chuàng)建鏈接

dbSJet.TableDefs.AppendtdfFoxTable

‘顯示確認(rèn)消息

MSgBOX"Finishedlinking"&tdfFOXTable.SourceTableName&".",0

EndSub

該例鏈接了外部FoxPro3.0的表,成功后顯示確認(rèn)消息框。

2.打開(kāi)FoxPro表

如前所述,可以用OpenDatabase方法直接打開(kāi)外部MicrosoftFoxPro表,其參數(shù)分別為路徑、獨(dú)占訪問(wèn)值、只讀值和數(shù)據(jù)源類(lèi)型。

例:編寫(xiě)程序,打開(kāi)FoxPro表,并顯示其內(nèi)容。

前面的例子鏈接了一個(gè)FoxPro表,該表位于A盤(pán)的根目錄下,名為zf01.dbf。可以在“可視化數(shù)據(jù)管理器”中打開(kāi)該表。我們用下面的程序打開(kāi)該數(shù)據(jù)庫(kù),然后顯示它的內(nèi)容。在窗體上畫(huà)一個(gè)命令按鈕,然后編寫(xiě)如下程序:

PrivateSubCommand1_Click()

DimdbsFoxAsDatabase

DimrstAccountsAsRecordset

,打開(kāi)外部FoxPro數(shù)據(jù)庫(kù)

SetdbsFox=OpenDatabase("a:/",FalSe,False,FOXPro3.0")

’從zf01表中建立Recordset對(duì)象

SetrstAccounts=dbsFox.OpenRecordset("zf01")

print

DOUntilrstAccounts.EOF

PrintrstAccounts.mc;"";

printTab(15);rstAccounts.zd;

PrintTab(25);rstAccounts.jz;

printTab(35);rstAccounts.jg;

printTab(45);rstAccounts.rq;

printTab(55);rstAccounts.lC;

PrintTab(60);rstAccounts.dz

rstAccounts.MoveNext

Loop

rstAccounts.Close

dbsFOX.Close

EndSub

該例打開(kāi)了一個(gè)外部FoxPro3.0表,然后從該表中建立Recordset對(duì)象,最后在窗體上輸出表的內(nèi)容。程序運(yùn)行后,單擊命令按鈕,將顯示數(shù)據(jù)庫(kù)zf01.dbf的內(nèi)容。

3.將FoxPro數(shù)據(jù)類(lèi)型轉(zhuǎn)換為MicrosoftJet數(shù)據(jù)類(lèi)型

應(yīng)用程序在讀取數(shù)據(jù)時(shí),MicrosoftJet將每個(gè)FoxPro數(shù)據(jù)類(lèi)型轉(zhuǎn)換為相應(yīng)的MicrosoftJet數(shù)據(jù)類(lèi)型,其對(duì)應(yīng)關(guān)系見(jiàn)下:

Foxpro數(shù)據(jù)類(lèi)型Microsoft數(shù)據(jù)類(lèi)型

charactertext

Numeric,F(xiàn)loatDouble

Logicalboolean

datedate/time

memomemo

GenerallongBinary

Double*double

currency*currency

integerlong

datetime*data/time

(注:*只用于MicrosoftFoxPro3.0和MicrosoftFoxProDBC。)

4.處理己刪除的記錄

當(dāng)在應(yīng)用程序中刪除FoxPro表中的記錄時(shí),該記錄被加上刪除標(biāo)記,但是該記錄并沒(méi)有從表中移走,因?yàn)樵诒肀粔嚎s之前FoxPro不會(huì)發(fā)現(xiàn)標(biāo)記為刪除的記錄。不能通過(guò)MicrosftJet壓縮FoxPro表,必須壓縮FoxPro數(shù)據(jù)庫(kù)以從物理上移走記錄。盡管加了刪除標(biāo)記的記錄實(shí)際上并未從源數(shù)據(jù)庫(kù)中移走、但它們也不會(huì)出現(xiàn)在應(yīng)用程序中,因?yàn)镸icrosoftJet可以自動(dòng)篩掉標(biāo)記為己刪除的記錄。如果希望標(biāo)記為刪除的記錄出現(xiàn)在數(shù)據(jù)集中,必須將Windows注冊(cè)表中/HKEY_lOCAL_MACHINE/SOFTWARE/Microsoft/Jet/3.5/Engines/Xbase鍵的Deleted值設(shè)置為False,并且必須重新啟動(dòng)使用MicrosoftJet的應(yīng)用程序,以反映記錄被刪除的情況。

5.處理FoxPro索引

使用適當(dāng)?shù)腇oxPro索引文件(.idx或.cdx文件),可以提高M(jìn)icrosoftJet對(duì)各種FoxPro表的訪問(wèn)速度。通過(guò)建立與FoxPro數(shù)據(jù)庫(kù)同名的文本文件并加上.inf文件擴(kuò)展名,可以在.inf文件中指定索引文件。假定有一個(gè)名為Sales.dbf的FoxPro數(shù)據(jù)庫(kù)文件,為了建立相應(yīng)的.inf文件,可按如下步驟操作:

(1)建立文本文件Sales.inf。

(2)在文本文件的第一行,指定數(shù)據(jù)庫(kù)類(lèi)型,并把它放在方括號(hào)中。例如,為了指定

FoxPro3.0的索引,可以鍵入:

[FoxPro2.0]

(3)對(duì)數(shù)據(jù)庫(kù)的第一個(gè)索引賦予一個(gè)索引號(hào)。第一個(gè)索引記為IDX1,第二個(gè)記為

IDX2,以此類(lèi)推。如果要為FoxPro數(shù)據(jù)庫(kù)指定組合索引文件(.cdx),則應(yīng)使用形如CDX1,

CDX2等的索引號(hào)。如果在索引號(hào)之前加上字符“U”,則可以指定唯一索引。

(4)在索引號(hào)之后加上一個(gè)等號(hào),再加上要指定的索引文件名(包括擴(kuò)展名)。注意,

在該項(xiàng)中不能有任何空格。例如,要指定索引custname.idx作為第一個(gè)索引,而唯一索引

custno.idx作為第二個(gè)索引,則應(yīng)在文件中添加下面的項(xiàng):

IDX1=custname.idx

UIDXl=custno.idx

(5)重復(fù)第(3)步和第(4)步,直到指定完數(shù)據(jù)庫(kù)表的所有索引。完成后的.inf文

件看起來(lái)像下面這樣:

[FOxPro3.0]

IDX1=custname.idx

UIDX1=custno.idx

(6)將.inf文件保存在FoxPro數(shù)據(jù)庫(kù)所在的目錄下。

如果不能將.inf文件與數(shù)據(jù)庫(kù)存儲(chǔ)在同一目錄下,或者為了維護(hù)方便而希望將所有的文件存儲(chǔ)在一個(gè)共享的目錄下,則可以建立一個(gè)指向存儲(chǔ).inf文件路徑的Windows注冊(cè)表項(xiàng),即在Windows注冊(cè)表中建立INFPath項(xiàng),這可以通過(guò)在注冊(cè)表編輯器中手工添加一個(gè)字符串注冊(cè)表值來(lái)實(shí)現(xiàn)。其方法是:打開(kāi)Windows注冊(cè)表的\HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/3.5\Engines\Xbase鍵,執(zhí)行“編輯”菜單中的“新建”,然后單擊“字符串值”,輸入INFPath作為名稱,再在“數(shù)據(jù)”列輸入該.inf文件的完整的目錄或者網(wǎng)絡(luò)路徑。為了使用該設(shè)置值,應(yīng)保存修改后的注冊(cè)表,并重新啟動(dòng)使用MicrosoftJet的應(yīng)用程序。

注意,F(xiàn)oxPro數(shù)據(jù)庫(kù)中的數(shù)據(jù)經(jīng)常變更,因此MicrosoftJet也要經(jīng)常更新索引文件。如果FoxPro數(shù)據(jù)庫(kù)與MicrosonJet建立了鏈接,或者FoxPro數(shù)據(jù)庫(kù)是在MicrosoftJet數(shù)據(jù)庫(kù)中打開(kāi)的,則只有在這些索引對(duì)MicrosoftJet數(shù)據(jù)庫(kù)同樣有效的情況下,才能使其與FoxPro數(shù)據(jù)庫(kù)相關(guān)聯(lián)。此外還應(yīng)注意,在沒(méi)有更新相關(guān)聯(lián)的引用(例如Windows注冊(cè)表中的INFPath項(xiàng))前,不要?jiǎng)h除或者移動(dòng)索引文件或.inf文件。如果MicrosoftJet不能獲得最新的索引信息,則不能正確地處理查詢。

6.處理備注字段

FoxPro數(shù)據(jù)庫(kù)的備注字段是存儲(chǔ)在文件系統(tǒng)中而不是數(shù)據(jù)庫(kù)中。如果希望打開(kāi)或鏈接具有備注字段的FoxPro數(shù)據(jù)庫(kù),則應(yīng)確保備注文件與數(shù)據(jù)庫(kù)文件存放在同一目錄下。否則會(huì)產(chǎn)生出錯(cuò)信息。(實(shí)時(shí)錯(cuò)誤‘3166’;不能定位所需的Xbase備注文件。)

->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江西省| 西乌| 南陵县| 阿克苏市| 全南县| 彩票| 南康市| 石柱| 新巴尔虎右旗| 微博| 高碑店市| 三亚市| 阳泉市| 金秀| 陇西县| 旬阳县| 简阳市| 义马市| 磐石市| 延边| 汪清县| 陕西省| 合山市| 疏勒县| 甘德县| 西乌珠穆沁旗| 宽甸| 稻城县| 叶城县| 凤冈县| 海口市| 衡东县| 来凤县| 光山县| 金华市| 伊宁市| 宁城县| 卢氏县| 拜城县| 洛川县| 鄂温|