六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VFP與Excel交互編程

[摘要]◆ 何詠明 ([email protected]) VFP(Visual Foxpro)是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由于其強(qiáng)大的數(shù)據(jù)處理能力及良好的兼容性,使其成為數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)人員強(qiáng)有力的工...
◆ 何詠明 ([email protected])

VFP(Visual Foxpro)是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由于其強(qiáng)大的數(shù)據(jù)處理能力及良好的兼容性,使其成為數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)人員強(qiáng)有力的工具而廣為使用; 而Excel則是一個(gè)優(yōu)秀的電子表格處理軟件,在兼容性、操作界面、公式運(yùn)算、圖表等方面有著獨(dú)到的優(yōu)勢(shì),成為廣大辦公應(yīng)用人員必備的首選軟件。上述兩種軟件在各自的應(yīng)用領(lǐng)域均得到了廣泛的應(yīng)用,同時(shí)上述兩種軟件還具有良好的交互編程能力,為兩者相輔相成、取長(zhǎng)補(bǔ)短奠定了良好的基礎(chǔ)。

本文將結(jié)合實(shí)例介紹VFP與Excel交互編程的方法,在VFP中除了使用OLE技術(shù)外,還可使用DDE技術(shù)與外部服務(wù)器進(jìn)行數(shù)據(jù)交換,本文主要講解VFP中使用OLE技術(shù)與Excel交換數(shù)據(jù),Excel中借助內(nèi)置的VBA使用VFP提供的Application對(duì)象來(lái)調(diào)用VFP中的一些功能。其功能可簡(jiǎn)述如下:VFP數(shù)據(jù)表“學(xué)生成績(jī).DBF”中含“學(xué)號(hào)、姓名、語(yǔ)文、數(shù)學(xué)”等字段,示例程序?qū)腅xcel工作簿“VFP交互.XLS”的工作表“查詢(xún)”中用“條件”區(qū)域(一般為一個(gè)矩形區(qū)中的數(shù)據(jù),該區(qū)域名稱(chēng)指定為“條件”,數(shù)據(jù)形如“語(yǔ)文>60”、“數(shù)學(xué)<90”等)中的數(shù)據(jù)作為查詢(xún)的條件,用“連接條件”區(qū)域(一般為一個(gè)單元格,其值為“or”或者“and”)來(lái)獲取組合“條件”的邏輯連接,并將該連接信息的內(nèi)容以工作表的形式顯示出來(lái),然后調(diào)用VFP中針對(duì)給定表的SQL查詢(xún)來(lái)找出給定條件的記錄并顯示到Excel中。下列程序均在VFP 6.0與Excel 2000中調(diào)試通過(guò)。

Excel驅(qū)動(dòng)VFP

Excel內(nèi)置的VBA語(yǔ)言(Visual Basic For Application)為Excel功能的擴(kuò)展提供了便利的手段,用戶(hù)可使用該語(yǔ)言直接驅(qū)動(dòng)VFP完成數(shù)據(jù)檢索等功能。程序首先生成一個(gè)VFP對(duì)象,然后用VFP的DoCmd方法執(zhí)行VFP搜索命令串,其搜索結(jié)果再借助于VFP的DataToClip方法拷貝至剪切板,最后VBA將其粘貼至工作表的正確位置,為了每次運(yùn)行時(shí)能將結(jié)果插入到工作表中,依次對(duì)操作的工作表以“搜索結(jié)果”、“搜索結(jié)果1”等進(jìn)行編號(hào)。

Sub exceluseFox ()

Dim oFox As Object ’聲明oFox為一個(gè)對(duì)象

Dim SCommand As String

’SQL對(duì)應(yīng)的命令串變量

Dim cell As Variant

Dim choice As String

Dim join As String

Dim first As Boolean

Dim found As Boolean ’搜索結(jié)果標(biāo)志,若表單中有搜索結(jié)果,則為真

Set oFox = CreateObject(“VisualFoxPro

.Application”)

’啟動(dòng)VFP,生成VFP對(duì)象

Sheets(“查詢(xún)”).Select

’選擇對(duì)應(yīng)的工作表“查詢(xún)”

join = Range(“連接條件”)

’在單一表格中的一個(gè)元素,其值為and或者or

choice = “” ’置連接串初值為空

first = True ’一般情況下連接串后需要加上邏輯連接符and 或 or,首次例外

For Each cell In Range(“條件”) ’產(chǎn)生連接條件,形成where語(yǔ)句的連接邏輯串

If first Then

choice = choice + cell ’形成第一次出現(xiàn)的where子句后的字符串

first = False

’修改首次進(jìn)入標(biāo)志,以后的連接均需要加上邏輯連接符

Else

choice = choice + “ ” + join + “ ” + cell

’join的值是and或者是or

End If

Next cell

Sheets.Add ’ 產(chǎn)生新的工作表單

’找一個(gè)不重復(fù)的工作表名

found = False

’工作表名中前四個(gè)漢字有沒(méi)有“搜索結(jié)果”的標(biāo)志變量

n = 1

For Each cell In Worksheets

If InStr(1, cell.Name, “搜索結(jié)果”) <> 0 Then

found = True ’找到對(duì)應(yīng)的工作表

If n < Val(Mid(cell.Name + Space(2), 5, 2)) Then

n = Val(Mid(cell.Name + Space(2), 5, 2))

’形成形如搜索結(jié)果1、搜索結(jié)果2等的表單名

End If

End If

Next cell

If Not found Then

ActiveSheet.Name = “搜索結(jié)果”

Else

n = n + 1 ’值增1

ActiveSheet.Name = “搜索結(jié)果”& n

’形成工作表名

End If

SCommand =“SELECT * FROM d:\vfp\學(xué)生成績(jī)表WHERE”+choice +“ INTO CURSOR TEMP” ’形成VFP查詢(xún)命令串

oFox.DoCmd Scommand ’執(zhí)行VFP命令串

oFox.DataToClip “temp”, , 3

’將搜索結(jié)果以文本方式拷貝至剪切板

Range(“a1: a1”).Select

’指向拷貝目標(biāo)區(qū)域左上角單元

ActiveSheet.Paste ’粘貼搜索結(jié)果

End Sub

上述Excel中的區(qū)域名稱(chēng)(如“條件”和“連接條件”名稱(chēng))的設(shè)定方法是,在Excel中選擇菜單“插入->名稱(chēng)->定義”來(lái)完成對(duì)給定區(qū)域名稱(chēng)的設(shè)定,這個(gè)名稱(chēng)可以在VBA中訪問(wèn),如前述中的“條件”和“連接條件”。

VFP使用Excel

OLE(Object Linking and Embedding)對(duì)象鏈接與嵌入,是Windows應(yīng)用程序間相互傳遞和共享數(shù)據(jù)的一種有效方法。VFP借助于OLE不僅可共享其他應(yīng)用程序的數(shù)據(jù),而且還能以對(duì)象方式直接控制其他應(yīng)用程序的運(yùn)行,從而進(jìn)一步擴(kuò)展VFP的功能。VFP支持直接在程序中創(chuàng)建、使用和控制OLE對(duì)象,實(shí)現(xiàn)OLE自動(dòng)化。作為OLE客戶(hù),VFP與作為OLE服務(wù)器的Excel具有良好的編程接口,下述程序段用OLE方式實(shí)現(xiàn)所要求的功能。程序首先生成一個(gè)Excel的OLE對(duì)象OleApp以便對(duì)其進(jìn)行操作,然后利用OLE功能從Excel表單中獲取欲查詢(xún)的條件,并控制Excel生成新的唯一的工作表,通過(guò)找尋當(dāng)前操作的所有工作表達(dá)到名稱(chēng)的唯一,VFP的查詢(xún)結(jié)果仍然使用剪切板的方式傳遞至Excel工作表中。

local condition,where1,first,scommand,cell,newsheet,found1,n

OleApp=CreateObject(“Excel.Application”)

&& 打開(kāi)Excel,產(chǎn)生OLE對(duì)象

OleApp.Application.Caption=“VFP交互編程”

&& 指定標(biāo)題欄名稱(chēng)

OleApp.Application.Visible=.T.

&& 置Excel可見(jiàn)

OleApp.Application.WorkBooks.Open(“d:\vfp\VFP交互.xls”)

&& 打開(kāi)Excel工作簿,用戶(hù)也可以修改連接條件或者查詢(xún)條件

where1=“”

&&保存SQL中where子句的變量

first=.t.

&&置首次進(jìn)入“查詢(xún)”工作表中“條件”區(qū)域標(biāo)志

found1=.f.

n=1

DO WHILE .T.

WITH OleApp.Application

nAnswer = MessageBox(“開(kāi)始搜索?”, 32+4, “搜索指定數(shù)據(jù)”)

&&顯示搜索信息

IF (.NOT. (nAnswer=6))

&& 如按下“Yes”按鈕,則開(kāi)始搜索,反之退出

EXIT

ENDIF

.Sheets(“查詢(xún)”).Select

&& 選取示例中的對(duì)應(yīng)工作表

condition=.range(“連接條件”).value

&&得到“連接條件”區(qū)域中的邏輯連接符

for each cell in .range(“條件”).value

&&將表單區(qū)域內(nèi)所有單元的數(shù)據(jù)拼接以形成where的連接邏輯串

If first Then

Where1 = Where1 + cell

&&首次進(jìn)入時(shí)where子句中串前不需要邏輯連接符

first = .f. &&置非首次進(jìn)入標(biāo)志

Else

Where1=Where1 +“ ”+condition +“ ”+ cell

&&這里condition的值取and或者or

EndIf

next for

.Sheets.Add && 新建一工作表單

&&下面的for …each子句是用于找尋有否對(duì)應(yīng)的工作表,若有則在搜索結(jié)果1、搜索結(jié)果2……搜索結(jié)果n中得到最大的n值以便產(chǎn)生下一個(gè)比n大1的新工作表“搜索結(jié)果&(n+1)”

for each newsheet in .worksheets

if “搜索結(jié)果”$ newsheet.name

n=max(val(subset(newsheet.name+space(2),9,2)),n) &&得到最大的n值

found1=.t. &&置找到工作表中前四個(gè)漢字是“搜索結(jié)果”的工作表

endif

next for

if not found1

.ActiveSheet.Name =“搜索結(jié)果1”

&& 指定工作表單的名稱(chēng)

else

.activesheet.name=“搜索結(jié)果”+str(n+1,2)

&&得到唯一的工作表

endif

SCommand = “SELECT * FROM d:\vfp\學(xué)生成績(jī)表 WHERE ”+ALLTrim(where1) +

“INTO CURSOR TEMP”

&& 形成VFP查詢(xún)命令串

&Scommand && 執(zhí)行VFP命令串

_VFP.DataToClip(“TEMP”, , 3)

&& 將搜索結(jié)果以文本方式拷貝至剪切板

.Range(“a1: a1”).Select

&& 指向拷貝目標(biāo)區(qū)域左上角單元

.ActiveSheet.Paste

&& 粘貼搜索結(jié)果

ENDWITH

ENDDO

OleApp.Quit

&& 關(guān)閉Excel,保存更新后的工作簿文件

結(jié)束語(yǔ)

VFP與Excel的交互能力是很強(qiáng)的,用戶(hù)可以使用VFP處理數(shù)據(jù)庫(kù)的一些運(yùn)算,如插入、排序、合并、選擇等,將結(jié)果交由Excel中進(jìn)行一些后期的處理,甚至可以將一些抽取數(shù)據(jù)的條件直接加入到Excel的條件區(qū)域中,由VFP來(lái)讀取條件區(qū)域進(jìn)行數(shù)據(jù)的篩選。總之,只要能充分利用好各自的優(yōu)點(diǎn),理解交互的接口方法,就一定能夠編寫(xiě)出較適用的程序,滿(mǎn)足實(shí)際工作的需要。


標(biāo)簽:VFP與Excel交互編程 
主站蜘蛛池模板: 中国国产一国产一级毛片视频 | 天天色天天射天天干 | 小泽玛利亚久久一区二区三区 | 天堂网在线播放 | 香蕉网站狼人久久五月亭亭 | 欧美一级免费 | 亚洲高清免费视频 | 亚洲国产情侣偷自在线二页 | 天堂视频网站 | 欧美在线观看一区二区三 | 一二三四影院在线观看视频 | 日本免费乱理伦片在线观看2018 | 婷婷色爱区综合五月激情韩国 | 日韩中字在线 | 日本一区高清视频 | 日本在线观看中文 | 午夜小影院 | 一级做性色a爰片久久毛片免费 | 亚洲手机在线手机观看高清hd | 日韩成人精品 | 欧美无遮挡国产欧美另类 | 日韩一二区 | 亚洲乱码一区二区三区国产精品 | 亚洲成人影院在线 | 中文字幕天堂网 | 日韩不卡在线 | 青娱乐福利 | 偷拍免费视频 | 在线天堂新版在线观看 | 日本一道本中文字幕 | 日本欧美一区二区三区在线观看 | 色国产精品一区在线观看 | 亚洲福利一区二区精品秒拍 | 日本不卡视频在线观看 | 中文字幕日韩专区 | 亚洲第一国产 | 五月激情视频 | 日本美女爱爱视频 | 西瓜影院日韩大片在线观看 | 日韩成人高清 | 中文字幕精品波多野结衣 |