VFP(Visual Foxpro)是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由于其強(qiáng)大的數(shù)據(jù)處理能力及良好的兼容性,使其成為數(shù)據(jù)庫應(yīng)用程序開發(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ì)象來調(diào)用VFP中的一些功能。其功能可簡(jiǎn)述如下:VFP數(shù)據(jù)表“學(xué)生成績(jī).DBF”中含“學(xué)號(hào)、姓名、語文、數(shù)學(xué)”等字段,示例程序?qū)腅xcel工作簿“VFP交互.XLS”的工作表“查詢”中用“條件”區(qū)域(一般為一個(gè)矩形區(qū)中的數(shù)據(jù),該區(qū)域名稱指定為“條件”,數(shù)據(jù)形如“語文>60”、“數(shù)學(xué)<90”等)中的數(shù)據(jù)作為查詢的條件,用“連接條件”區(qū)域(一般為一個(gè)單元格,其值為“or”或者“and”)來獲取組合“條件”的邏輯連接,并將該連接信息的內(nèi)容以工作表的形式顯示出來,然后調(diào)用VFP中針對(duì)給定表的SQL查詢來找出給定條件的記錄并顯示到Excel中。下列程序均在VFP 6.0與Excel 2000中調(diào)試通過。
Excel驅(qū)動(dòng)VFP
Excel內(nèi)置的VBA語言(Visual Basic For Application)為Excel功能的擴(kuò)展提供了便利的手段,用戶可使用該語言直接驅(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(“查詢”).Select
’選擇對(duì)應(yīng)的工作表“查詢”
join = Range(“連接條件”)
’在單一表格中的一個(gè)元素,其值為and或者or
choice = “” ’置連接串初值為空
first = True ’一般情況下連接串后需要加上邏輯連接符and 或 or,首次例外
For Each cell In Range(“條件”) ’產(chǎn)生連接條件,形成where語句的連接邏輯串
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
本文將結(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ì)象來調(diào)用VFP中的一些功能。其功能可簡(jiǎn)述如下:VFP數(shù)據(jù)表“學(xué)生成績(jī).DBF”中含“學(xué)號(hào)、姓名、語文、數(shù)學(xué)”等字段,示例程序?qū)腅xcel工作簿“VFP交互.XLS”的工作表“查詢”中用“條件”區(qū)域(一般為一個(gè)矩形區(qū)中的數(shù)據(jù),該區(qū)域名稱指定為“條件”,數(shù)據(jù)形如“語文>60”、“數(shù)學(xué)<90”等)中的數(shù)據(jù)作為查詢的條件,用“連接條件”區(qū)域(一般為一個(gè)單元格,其值為“or”或者“and”)來獲取組合“條件”的邏輯連接,并將該連接信息的內(nèi)容以工作表的形式顯示出來,然后調(diào)用VFP中針對(duì)給定表的SQL查詢來找出給定條件的記錄并顯示到Excel中。下列程序均在VFP 6.0與Excel 2000中調(diào)試通過。
Excel驅(qū)動(dòng)VFP
Excel內(nèi)置的VBA語言(Visual Basic For Application)為Excel功能的擴(kuò)展提供了便利的手段,用戶可使用該語言直接驅(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(“查詢”).Select
’選擇對(duì)應(yīng)的工作表“查詢”
join = Range(“連接條件”)
’在單一表格中的一個(gè)元素,其值為and或者or
choice = “” ’置連接串初值為空
first = True ’一般情況下連接串后需要加上邏輯連接符and 或 or,首次例外
For Each cell In Range(“條件”) ’產(chǎn)生連接條件,形成where語句的連接邏輯串
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

