大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> VFP与Excel交互编程

VFP与Excel交互编程

时间: 2021-07-31 作者:daque

◆ 何咏明 (djkhym@netease.com) vfp(visual foxpro)是一种联系型数据库处置体例,因为其宏大的数据处置本领及杰出的兼容性,使其变成数据库运用步调开拓职员强有力的东西而广为运用; 而excel则是一个特出的电子表格处置软硬件,在兼容性、操纵界面、公式演算、图表等上面有着独到的上风,变成宏大办公室运用职员必备的首要选择软硬件。上述两种软硬件在各自的运用范围均获得了普遍的运用,同声上述两种软硬件还具备杰出的交互编制程序本领,为两者相得益彰、扬长避短奠定了杰出的普通。 正文将贯串范例引见VFP与Excel交互编程的本领,在vfp中除去运用ole本领外,还可运用dde本领与外部效劳器举行数据调换,正文重要解说vfp中运用ole本领与excel调换数据,excel中借助内置的vba运用vfp供给的application东西来挪用vfp中的少许功效。其功效可简述如次:vfp数据表“学天生绩.dbf”中含“学号、全名、语文、数学”等字段,示例步调将从excel处事簿“vfp交互.xls”的处事表“查问”顶用“前提”地区(普遍为一个矩形区中的数据,该地区称呼指定于“前提”,数据形如“语文>60”、“数学<90”等)中的数据动作查问的前提,用“贯穿前提”地区(普遍为一个单位格,其值为“or”大概“and”)来获得拉拢“前提”的论理贯穿,并将该贯穿消息的实质以处事表的情势表露出来,而后挪用vfp中对准给定表的sql查问来找到给定前提的记载并表露到excel中。下列步调均在vfp 6.0与excel 2000中调节和测试经过。 excel启动vfp excel内置的vba谈话(visual basic for application)为excel功效的扩充供给了便当的本领,用户可运用该谈话径直启动vfp实行数据检索等功效。步调开始天生一个vfp东西,而后用vfp的docmd本领实行vfp探求吩咐串,其探求截止再借助于vfp的datatoclip本领正片至剪切板,结果vba将其粘贴至处事表的精确场所,为了历次运转时能将截止插入到处事表中,顺序对操纵的处事表以“探求截止”、“探求截止1”等举行编号。 sub excelusefox () dim ofox as object ’证明ofox为一个东西 dim scommand as string ’sql对应的吩咐串变量 dim cell as variant dim choice as string dim join as string dim first as boolean dim found as boolean ’探求截止标记,若表单中有探求截止,则为真 set ofox = createobject(“visualfoxpro .application”) ’启用vfp,天生vfp东西 sheets(“查问”).select ’采用对应的处事表“查问” join = range(“贯穿前提”) ’在简单表格中的一个元素,其值为and大概or choice = “” ’置贯穿串初值为空 first = true ’普遍情景下贯穿串后须要加上论理贯穿符and 或 or,初次不同 for each cell in range(“前提”) ’爆发贯穿前提,产生where语句的贯穿论理串 if first then choice = choice + cell ’产生第一次展示的where子句后的字符串 first = false ’窜改初次加入标记,此后的贯穿均须要加上论理贯穿符 else choice = choice + “ ” + join + “ ” + cell ’join的值是and大概是or end if next cell sheets.add ’ 爆发新的处事表单 ’找一个不反复的处事表名 found = false ’处事表名中前四个中国字有没有“探求截止”的标记变量 n = 1 for each cell in worksheets if instr(1, cell.name, “探求截止”) <> 0 then found = true ’找到对应的处事表 if n < val(mid(cell.name + space(2), 5, 2)) then n = val(mid(cell.name + space(2), 5, 2)) ’产生形如探求截止1、探求截止2等的表单名 end if end if next cell if not found then activesheet.name = “探求截止” else n = n + 1 ’值增1 activesheet.name = “探求截止”& n ’产生处事表名 end if scommand =“select * from d:\vfp\学天生绩表where”+choice +“ into cursor temp” ’产生vfp查问吩咐串 ofox.docmd scommand ’实行vfp吩咐串 ofox.datatoclip “temp”, , 3 ’将探求截止以文本办法正片至剪切板 range(“a1: a1”).select ’指向正片目的地区左上角单位 activesheet.paste ’粘贴探求截止 end sub 上述excel中的地区称呼(如“前提”和“贯穿前提”称呼)的设定本领是,在excel中采用菜单“插入->称呼->设置”来实行对给定地区称呼的设定,这个称呼不妨在vba中考察,如前述中的“前提”和“贯穿前提”。 vfp运用excel ole(object linking and embedding)东西链接与嵌入,是windows运用步调间彼此传播和共享数据的一种灵验本领。vfp借助于ole不只可共享其余运用步调的数据,并且还能以东西办法径直遏制其余运用步调的运转,进而进一步扩充vfp的功效。vfp扶助径直在步调中创造、运用和遏制ole东西,实行ole机动化。动作ole存户,vfp与动作ole效劳器的excel具备杰出的编制程序接口,下述步调段用ole办法实行所诉求的功效。步调开始天生一个excel的ole东西oleapp再不对其举行操纵,而后运用ole功效从excel表单中获得欲查问的前提,并遏制excel天生新的独一的处事表,经过探求暂时操纵的一切处事表白到称呼的独一,vfp的查问截止仍旧运用剪切板的办法传播至excel处事表中。 local condition,where1,first,scommand,cell,newsheet,found1,n oleapp=createobject(“excel.application”) && 翻开excel,爆发ole东西 oleapp.application.caption=“vfp交互编制程序” && 指定题目栏称呼 oleapp.application.visible=.t. && 置excel看来 oleapp.application.workbooks.open(“d:\vfp\vfp交互.xls”) && 翻开excel处事簿,用户也不妨窜改贯穿前提大概查问前提 where1=“” &&生存sql中where子句的变量 first=.t. &&置初次加入“查问”处事表中“前提”地区标记 found1=.f. n=1 do while .t. with oleapp.application nanswer = messagebox(“发端探求?”, 32+4, “探求指定命据”) &&表露探求消息 if (.not. (nanswer=6)) && 如按下“yes”按钮,则发端探求,反之退出 exit endif .sheets(“查问”).select && 采用示例中的对应处事表 condition=.range(“贯穿前提”).value &&获得“贯穿前提”地区中的论理贯穿符 for each cell in .range(“前提”).value &&将表单地区内一切单位的数据拼接以产生where的贯穿论理串 if first then where1 = where1 + cell &&初次进时髦where子句中串前不须要论理贯穿符 first = .f. &&置非初次加入标记 else where1=where1 +“ ”+condition +“ ”+ cell &&这边condition的值取and大概or endif next for .sheets.add && 兴建一处事表单 &&底下的for …each子句是用来探求有否对应的处事表,若有则在探求截止1、探求截止2……探求截止n中获得最大的n值再不爆发下一个比n大1的新处事表“探求截止&(n+1)” for each newsheet in .worksheets if “探求截止”$ newsheet.name n=max(val(subset(newsheet.name+space(2),9,2)),n) &&获得最大的n值 found1=.t. &&置找到处事表中前四个中国字是“探求截止”的处事表 endif next for if not found1 .activesheet.name =“探求截止1” && 指定处事表单的称呼 else .activesheet.name=“探求截止”+str(n+1,2) &&获得独一的处事表 endif scommand = “select * from d:\vfp\学天生绩表 where ”+alltrim(where1) + “into cursor temp” && 产生vfp查问吩咐串 &scommand && 实行vfp吩咐串 _vfp.datatoclip(“temp”, , 3) && 将探求截止以文本办法正片至剪切板 .range(“a1: a1”).select && 指向正片目的地区左上角单位 .activesheet.paste && 粘贴探求截止 endwith enddo oleapp.quit && 封闭excel,生存革新后的处事簿文献 中断语 vfp与excel的交互本领是很强的,用户不妨运用vfp处置数据库的少许演算,如插入、排序、兼并、采用等,将截止交由excel中举行少许后期的处置,以至不妨将少许抽取数据的前提径直介入到excel的前提地区中,由vfp来读取前提地区举行数据的挑选。总之,只有能充溢运用好各自的便宜,领会交互的接口本领,就确定不妨编写出较实用的步调,满意本质处事的须要。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.