VFP小程序

VFP小程序
VFP小程序

给VFP做一个智能日期识别控件

出处:网络

1、新建一个类,派生于TextBox,取类名如InputDate。

2、对InputDate的LostFocus 和GotFocus 分别写入如下代码:

LostFocus:

IF !EMPTY(THIS.V ALUE)

cY ear=allt(str(year(date())))

cMonth=allt(str(month(date())))

nPoint=0

cInput=allt(this.value)

nLenInput=len(cInput)

if left(cInput,1)=="."

cInput=right(cInput,nLenInput-1)

nLenInput=Len(cInput)

endif

if right(cInput,1)=="."

cInput=left(cInput,nLenInput-1)

nLenInput=Len(cInput)

endif

n=1

DO WHILE n<=nLenInput

cChar=subst(cInput,n,1)

if cChar=='.'

nPoint=nPoint+1

endif

n=n+1

ENDDO

DO CASE

CASE nPoint=0

cOutPut=cY ear+'.'+cMonth+'.'+cInput

CASE nPoint=1

cOutPut=cY ear+'.'+cInput

CASE nPoint=>2

cOutPut=cInput

ENDCASE

dOutPut=ctod(cOutPut)

if empty(dOutput)

??chr(7)

this.value="日期错误!"

else

this.value=dOutPut

endif

ENDIF

GotFocus:

if type('this.value')='D'

this.value=dtoc(this.value)

endif

3、对InputDate的属性设置如下:

SelectOnEntry=.T.

Century=1 - 开

DateFormat=14 - 汉语

4、注意事项,因以上代码必须设置:

Set date ansi

Set cent on

如果绑定其数据源ControlSource时,运行会出错,可以根据具体情况改写上述两段代码,如果提示是“日期错误!”则数据类型是字符型的,如果给出正确的日期,则数据类型是日期型的。

5、用法:

在表单上放入类InputDate1,运行时,输入一个有效的日期数字,如输入2,则返回当前年当前月的2日,如输入2.2,则返回当前年的2月2日。

本文来自编程入门网:https://www.360docs.net/doc/008603177.html,/VFPwz/kjsy/kj49.htm

VFP9.0 对较于之前VFP6.0 有哪些重大的改进出处:本站整理作者:佚名人气:1904次评论: 1 | 我要发表看法

象VFP8一样,VFP9的许多改进建议也是来自全球的各个VFP社区。(大大小小的建议,很难知道是谁提出了这些好建议)。不过尽管改进很多,我们也必须承认,VFP的很多方面还没被照顾到。

总的看来,VFP9带给我们的是:修补了很多BUG;弥补了一些功能的缺陷或实现了过去曾提出过的一些设想;某些功能被重写发生了翻天覆地的变化……当然,你所渴望的某些功能或许在或许不在这个版本里面,但可以确定你能从那个“What's New”文档中发现一些有价值的东西。记住,尝试测试版总要带点探险精神的。我写这篇文章的时候,是在VFP测试版发布前的几个星期,VFP文档有些地方跟不上VFP软件的更新,这就意味着你拿到的测试版拷贝会和文档有些出入,所以很自然,尝试测试版软件总要带点探险精神的,呵呵。如何在BROWSE窗口显示MEMO提示(移动鼠标到MEMO字段上面显示4095个字符);如何禁止打开表对话框并返回一个错误(SET TABLEPROMPT OFF);如何用SET REFRESH 指定更快的刷新率;如何在命令按钮/选项按钮/检查框中隐藏CAPTION后还能使用热键/图像(通过设置一个新的属性PicturePosition=14-No Text)。嗯……或者我应该介绍这个?:为CURSOR对象提供的新属性OrderDirection ,在数据环境中将它设为升序或降序;工具栏纵横向改变时动态调整分隔对象;用Listbox.AutoHideScrollBar 属性来隐藏滚动条。

VFP6.0 中文版下载:https://www.360docs.net/doc/008603177.html,/k/vfp/

我苦思冥想,因为我要从这个万众瞩目的VFP9.0中选出10个典型的特性来阐述。注:因为这篇文章基于VFP9的一个早期测试版,所以有的特征可能和现在有点出入。

1、文本框自动完成

你是否曾梦想过给文本框添加一种看起来更流行的“输入常用的单词或短语就出现一个下拉列表”的外观?通过使用VFP 智能感知的核心引擎,VFP 开发组给了我们这样一种很酷的新功能,并且不但令人惊讶的易于使用,而且完全可以扩充。让我们来尝试一下,将一个文本框拖放到表单上(或者打开一个有文本框的任何一个表单),将文本框新的AutoComplete 属性设置为一个非零值,这样就搞定了!运行几次这个表单,在文本框里输入一些内容,然后就看魔术表演吧!你也可以用下面这样的代码来让表格中的文本框支持AutoComplete: THISFORM.Grid1.Column1.Text1.AutoComplete = 1 AutoComplete 属性控制着自动完成的行为表现,可用的值如下:

※0 ——不使用自动完成;

※1 ——按字母顺序;

※2 ——最常用的;

※3 ——最近使用的;

※4 ——用户自定义的加权排序(Weighted Order);

这些选项中的最后一个需要特别注意一下。当AutoComplete 的值在1-3 之间的时候,自动完成的功能是系统自维护的,而用户自定义加权排序的值4则让你可以通过给

AutoComp.DBF 表中的Weight 字段赋以一个数值型值来指定各个数据项的显示顺序(最大的Weight值显示在下拉列表的顶部)。默认的AutoComp.DBF 表位于HOME(7) 目录下(译者注:使用参数7,该函数返回用户应用程序的数据目录。),但你可以通过在全局的层次上设置_SCREEN.AutoCompTable、或者在单个文本框的层次上设置

Text1.AutoCompTable来覆盖默认的设置。不管你在哪个属性中指定一个表,如果这个表不存在,则系统会自动为你新建一个。你可以同时拥有多个AutoComp表,而每个表也可以服务于一个或多个文本框,VFP会管理这些在一个隐藏的数据工作期内的表的打开和关闭。在AutoComp 表中,除非你给文本框设置了AutoCompSource 属性,否则这个文本框的Name 将作为决定显示哪些数据项的查询关键字,反之,则使用AutoCompSource 属性指定的值。要想让多个文本框共享自动完成提供的值的话,只要简单的把这些文本框的AutoCompSouce 属性设置为相同的值就可以里,例如设置为NameAutoComp或者Cities。通过在运行时将AutoCompSource 动态的设置为一个代表某个用户的特定代码的字符串、或者在属性表中设置如下的代码,你甚至可以为你所在组织中的每个人启用独特的自动完成列表:= "Custs_" + LoginName 不过,如果采用了这种办法,你需要注意的是在AutoComp 表中作为搜索关键字的Source 字段只有20个字符大小。当然,你可以自己建一个有着更大长度的Source 字段的表作为AutoComp 表,可是如果在为一个特定的文本框初次使用AutoComplete功能的时候你让VFP 自动为你建立这个表,那么这个表中的Source 字段的长度默认就是20个字符。要在测试的时候看看AutoComp 表中发生了什么事情,你可以从VFP 的另一个数据工作期内共享打开这个表来浏览它的内容,或者也可以在命令窗口中执行如下代码:

USE HOME(7) + "autocomp.dbf" SHARED IN 0

SELECT autocomp

BROWSE

2、使用新的报表引擎来建立HTML 或者XML

** 取得一个对HTMLListener 类的引用

DO (_reportoutput) WITH 5, olistener ** 在执行下面的命令后会关闭用户界面的返回和提示

olistener.quietmode = .T. ** 指定自己的文件名和目录

olistener.targetfilename = "c:\htmltest.htm" ** 运行一个将会引用我们已经设置好了的listener 的报表

REPORT FROM (_samples + "solution\reports\ledger.frx") ;

OBJECT olistener ** 在浏览器中显示结果

RUN /n Explorer.exe c:\htmltest.htm 你可以用类似的途径来使用XMLListener 以建立一个带有所有数据的XML 文件。注意:由于_reportoutput 也许并非总是指向默认的ReportOutput.app,所以,更安全的办法是从FFC基础类库中新的_reportlistener.vcx 类库来建立XMLListener 或者HTMLListener 的实例,入下面的示例所示:** 在我手里的Beta 版需要Set safety off

SET SAFETY OFF

LOCAL olistener

** 获得对FFC 基础类库中的_Reportlistener.vcx

** 类库中的XMLListener 类的一个引用

olistener = NEWOBJECT("XMLListener", ;

HOME(0) + "ffc\_reportlistener.vcx")

** 在执行下面的命令后会关闭用户界面的返回和提示

olistener.quietmode = .T. ** 只包含数据,不带布局信息

olistener.xmlmode = 0 && 只包含数据** 指定自己的文件名和路径

olistener.targetfilename = "c:\xmltest.xml" ** 运行一个将会引用已经设置好了的listener

的报表

REPORT FROM (_samples + "solution\reports\ledger.frx") ;

OBJECT olistener ** 在浏览器中显示结果

RUN /n Explorer.exe c:\xmltest.xml 当XML 数据弹出在浏览器中的时候,注意它的段,其中包含着许多表示报表中原有的带区的标志,例如表示页标头,表示细节带区,而则表示页注脚。这些东西会很有用的,例如可以将你自己的XSLT 样式表应用给这个XML 文件,以通过高度自定义的布局来展示数据。此外,你还可以通过在前面的代码中改变这一行来获得与报表布局一样的XML 表现:olistener.xmlmode = 1 && 只用报表布局报表布局的信息在一个名为 的XML 段中,也许你已经猜到了这个名字所代表的意思:“Visual FoxPro 报表定义语言”。这一段的XML 包含大量的标记,它描述了定义在报表的FRX 中的所有显示元素,并可以通过如下设置来选择包含关于数据来源的信息:olistener.IncludeDataSourceInVFPRDL = .T. 下面这行代码可以一次就返回同时包含了

报表布局段和段的一个XML文件:olistener.xmlmode = 2 && 报表布局和数据还要等一段时间才会知道微软是否会提供某种能够将VFP-RDL 定义转换为SQL Server新的报表服务使用的RDL格式的转换工具。不过,即使没有,VFP 9.0 也已经给了你足够让你自己实现它的资料和工具!这两个演示VFP 报表新的输出能力的示例只是冰山的一角。我希望你明白,你完全可以使用自己的ReportListener 子类来超越VFP 自带的listener 类的能力,并通过在报表引擎中使用钩子(hook)来驱动你自己的输出、预览以及用户返回的行为特性。是的,它仍然可以运行你已有的报表。惊讶吧?但这是真的。

3、组合多个ReportListener 以提供多种输出

从前面的例子上再走远一点,让我们来看看你可以怎样通过组合多个ReportListener 来实现在同一个运行中的报表上提供多种输出方案。在默认的ReportOutput.app(以及在新的_reportListerer.vcx FFC 基础类库中)提供的ReportListener 的子类有一个属性叫Successor,可以用这个属性记录下对另一个个ReportListener 实例的引用,而个被引用

的实例将被挂钩到报表生成引擎上,因而是起着主导作用的“主控Listener”。在下面的示例中,我通过执行DO (_reportoutput) 两次来建立两个listener,每次执行的时候都传递给它一个变量,以返回一个对带有正确的输出类型的Listener的对象引用,输出类型是(_reportoutput)程序决定的。在下面的代码中,olistener 接收到一个对一个输出类型为0 (打印输出)的listener 的对象引用,而olistener2 则接收到一个输出类型为4的XMLListener对象的引用。现在,我们有一个全局的集合(_oReportOutput),该集合中拥有对缓存中的打印和XML两个Listener的引用,而我们则将这两个Listener 引用为olistener 和olistener2。现在,为了演示从ReportOutput.app 来取得一个ReportListener 的引用的另一种办法,我们象这样给集合添加另一个将被放入缓存中的HTMLListener 的实例:DO (_reportoutput) WITH 5 注意,现在我们可以通过集合引用的办法来操作HTMLListener 的属性,象这样:_ReportOutput("5").targetfilename = "c:\htmltest2.htm" 现在剩下的活是将这三个Listener 象链条一样的串连起来,输出类型为0的打印Listener 放在链条的最前面。

这个Listener 将是我们在使用REPORT FROM 命令的时候放在OBJECT 子句里面去的那个,这样一来,它就变成了一个“驱动,或者主控”lis tener,而它会与另外两个与它在一条链条上的listener 进行通讯。将它们链接起来的代码是:olistener.successor = olistener2

olistener2.successor = _oReportOutput("5") 就是这样。现在,运行这个报表,从同一次运行你就会获得三种类型的输出——在默认打印机上的一个报表、一个只带着数据的XML 文件、以及一个显示着报表的HTML 页面。LOCAL olistener, olistener2 * 获得一个对打印类的引用

DO (_reportoutput) WITH 0, olistener * 获得一个对XMLListener 类的引用

DO (_reportoutput) WITH 4, olistener2 * 关闭用户界面的返回和提示

olistener2.quietmode=.T. * 只包含数据,不带布局信息

olistener2.xmlmode=0 * 指定文件名和路径,并关闭文件名提示

olistener2.targetfilename = "c:\xmltest2.xml"

olistener2.quietmode=.T. * 现在为HTML 输出做准备,但使用另一种办法来从全局的

* _oreportoutput 集合中获得一个对listener 的引用

DO (_reportoutput) WITH 5 * 通过集合引用来设置HTMLListener 的属性

_oReportOutput("5").targetfilename = "c:\htmltest2.htm"

_oReportOutput("5").quietmode=.T. * 把三个listeners 象链条一样的链接在一起

* 其中,用打印listener 作为驱动

olistener.successor = olistener2

olistener2.successor = _oReportOutput("5") * 运行一个雇员电话号码列表,引用在列表中的第一个listener

REPORT FORM (_samples+"solution\reports\ledger.frx") ;

OBJECT olistener * 在浏览器中显示XML 和HTML 结果

* 并在打印机上打印报表

RUN /n Explorer.exe c:\xmltest2.xml

RUN /n Explorer.exe c:\htmltest2.htm

VFP9.0 中文汉化版下载:https://www.360docs.net/doc/008603177.html,/k/vfp/

4、将报表保存为图形文件

ReportListener 的另一种很大的用途是通过在你专门的子类中覆盖OutputPage 方法来将一个报表保存为图形文件。可以保存的图形文件格式包括EMF、JPEG、GIF、PNG、BMP、TIFF、以及多页的TIFF(这种格式对于用传真发送报表来说特别有用)。注意,在这个示例的代码中,我将ListenerType 属性设置为了2,这意味着让你自己来控制输出,每次用参数nDeviceType = -1 调用OutputPage 方法就打印一页,但并不将输出发送到一个打印设备。MyReportListener 有一个自定义的OutputPage 方法,它先检查nDeviceType 的参数是否为-1,然后再次调用OutputPage 方法(给方法传递一个文件名和图形文件类型),再执行一个NODEFAULT。这个示例在生成第一页的时候建立一个TIFF 文件,然后将其它的页添加到同一个图形文件中去。LOCAL olistener * 建立一个ReportListener 的实例

olistener = CREATEOBJECT("MyTiffListener")

olistener.tifffilename = "c:\tifftest.tif" * 运行一个将会引用我们设置好了的Listener的报表REPORT FORM (_samples+"solution\reports\invoice.frx") ;

OBJECT olistener RANGE 1,2 * 在浏览器中显示结果

RUN /n Explorer.exe c:\tifftest.tif DEFINE CLASS MyTiffListener AS ReportListener tifffilename = []

listenertype = 2 && 一次一页,不输出FUNCTION OutputPage(nPageNo, eDevice, nDeviceType)

* 由于ListenerType 指定了"不打印输出"

* 在报表引擎调用这个方法的时候,nDeviceType 将会是-1

* 而我们现在则捕捉这个条件,然后自己来调用

* OutputPage 方法,调用时带上文件名和图形类型参数

IF nDeviceType = -1 ;

AND NOT EMPTY(THIS.tifffilename)

IF nPageNo = 1

* 如果是第一页,则建立TIFF文件

THIS.OutputPage(nPageNo, THIS.tifffilename, 101)

ELSE

* 否则,则向TIFF 文件添加剩下的页

* (这段代码要运行,首先TIFF 文件必须已经存在)

THIS.OutputPage(nPageNo, THIS.tifffilename, 201)

ENDIF

* 我们已经用需要的设置调用过OutputPage 方法了

NODEFAULT

ENDIF

ENDDEFINE

5、使用新的超小型二进制索引

VFP9引进了一个新的索引类型---二进制索引,它可以在任何逻辑表达式中被使用。据一些测试者讲,这种新型索引的访问速度和一般索引差不多,但是它的大小比一般索引要小90%,插入记录时要快80%。

要建二进制索引标志,你要在表设计器中设置索引类型为二进制,或者在Index命令中加入关键字BINARY:

INDEX ON MyNonNullableLogicalExpression TAG MyBinary BINARY

INDEX ON DELETED() TAG DELETED BINARY

要注意的是,你建二进制索引或索引TAG的时候,不要包含FOR子句或INDEX ON一个会得出NULL值的表达式。你也不能在SEEK或SET ORDER TO语句中使用二进制索引。不过你可以在优化的FILTER条件和SQL SELECT的WHERE子句中使用并得到好处。为了配合新的二进制索引,VFP9.0在SET DELETED ON环境中优化了DELETED()。因为二进制索引已经是“位”级了,VFP可以在内存中更快地建立Rushmore,并且使用更少的局域网数据流量,从而大大提高了查询的性能。现在你可以拿几个变量和别人讨论下在索引中使用DELETED()究竟会降低还是提高性能了。

6、用新的ICASE()函数一行搞定

当一个判断点出现在你的程序中(特别是SQL SELECT命令),你以前只能用一连串的IIF()来解决。

新的ICASE()函数可以让你建立更可靠更优雅的代码,它允许你使用包括OTHERWISE在内的100个条件。比如,在你的SQL SELECT查询中要用到一个字符串,这个字符串是根据销售员的业绩得出的一系列结果,代码如下:CREATE TABLE lineitems (custcode I, purchases N)

FOR i = 1 TO 10

INSERT INTO lineitems valueS (i,800*(i-2))

E□□□OR

SELECT li.custcode, li.purchases, ;

PADR( ;

ICASE( li.purchases <= 0, "Drag on Profits", ;

li.purchases < 500, "Bread and Butter", ;

li.purchases < 2000, "Send Gift Box", ;

li.purchases < 5000, "Take to Ballgame", ;

"Trip to Hawaii" ;

), 20) AS CustStatus ;

FROM lineitems li 我指定了4个条件组,最后的那个"Trip to Hawaii"是OTHERWISE段。而且我把返回值用空格填充到固定的20个字符,因为在SQL SELECT中有时需要这么做。另外,不管你有偶数个参数还是奇数个参数,每个CASE段的最后一个参数就是OTHERWISE的值。

7、停靠你的表单

你现在可以用新的表单Dockable属性把停靠行为加入到你的程序中。默认的Dockable值是0,跟以前版本的行为一致。然而,如果你把Dockable设为1或2,表单的标题栏高度就会变成原来的一半,这时表单就支持停靠了(设为1表示表单已停靠)。

表单支持停靠(Dockable设为1或2)后,你可以用WINDOWS菜单的Dockable项或在表单的标题栏点击鼠标右键来切换这2种设置。当Dockable=1时,你可以将表单拖放到可停靠的位置,你也可以用以下代码实现停靠:* 1=top, 2=left, 3=right, 4=bottom THISFORM.Dock(nPosition)

* tab-dock to another form

THISFORM.Dock(4, oFormTarget)

* tab-dock to a window

DOCK NAME oFormRef POSITION 4 WINDOW WindowName 一个已停靠的表单也可以通过WINDOWS菜单的Dockable项或在表单的标题栏点击鼠标右键来终止停靠,或用以下的代码:* set form to "supports docking, but not docked"

THISFORM.Dockable = 2

* or call the form's dock method

THISFORM.Dock(-1) 你可以运行下面的代码看看停靠的过程。这些代码建了3个表单,并设定了TOP/LEFT,然后把它们停靠到COMMAND窗口上。你可以用上面的Dock/Undock 按钮来实现表单的停靠/不停靠,点击3个中任一一个表单的X按钮会关闭演示。

选中一个表单后,你可以用菜单来切换它的Dockable属性,当表单处于可停靠状态时,你可以把它拖放到屏幕上的任一个可停靠的位置。图2显示了3个可互相切换的已停靠表单。图二:

LOCAL oform1 as Myform

oform1=CREATEOBJECT("Myform")

oform1.Caption="Customers"

oform1.lblName.Caption = "Customers"

oform1.top = 100

oform1.left = 0

LOCAL oform2 as Myform

oform2=CREATEOBJECT("Myform")

oform2.Caption="Employees"

oform2.lblName.Caption = "Employees"

oform2.top = 100

oform2.left = 325

LOCAL oform3 as Myform

oform3=CREATEOBJECT("Myform")

oform3.Caption="Invoices"

oform3.lblName.Caption = "Invoices"

oform3.top = 275

oform3.left = 0

DOCK NAME oform1 POSITION 4 WINDOW Command

DOCK NAME oform2 POSITION 4 WINDOW Command

DOCK NAME oform3 POSITION 4 WINDOW Command

oform1.show()

oform2.show()

oform3.Show()

READ EVENTS

DEFINE CLASS MyForm AS Form

Dockable = 1 && supports docking and is dockable

Height = 150

Width = 300

ADD OBJECT lblName AS MyLabel

ADD OBJECT btnUndock AS MyUndockButton

FUNCTION Destroy()

CLEAR EVENTS

ENDDEFINE DEFINE CLASS MyUndockButton AS CommandButton Height = 25

Width = 100

Left = 180

Top = 100

Anchor = 12 && fixed distance bottom/right

Caption = "Dock/Undock"

FUNCTION Click()

IF THISFORM.Docked

THISFORM.Dock(-1)

ELSE

IF THISFORM.Dockable = 1

* error if not dockable

DOCK NAME THISFORM POSITION 4 WINDOW Command

VFP常见编程实例(免费下载)

VFP常见编程实例 1、1-100的累加 ** 求1到100的累加值 CLEAR s=0 i=1 DO WHILE i<=100 s=s+i i=i+1 &&一定记住先累加后循环ENDDO ?s RETURN 2、阶乘 ** 求5的阶乘 CLEAR j=1 i=1 DO WHILE i<=5 j=j*i

i=i+1 ENDDO ?j RETURN 3、求阶乘和 ** 求1至5的阶乘和CLEAR s=0 i=1 j=1 DO WHILE i<=5 j=j*i s=s+j i=i+1 ENDDO ?s RETURN 4、条件定位

** 查询定位记录指针在赵伟上 CLEAR USE 学生 LOCATE FOR 姓名="赵伟" IF FOUND() DISPLAY ELSE CANCEL ENDIF CONTINUE 5、用scan语句查询定位 ** 用scan语句查询定位记录在赵伟上 CLEAR SCAN FOR 姓名="赵伟" DISPLAY ENDSCAN RETURN 6、用scan语句扫描符合条件的记录,并显示出来** 把年龄小于30岁的人显示出来

SCAN FOR 年龄<30 DISPLAY ENDSCAN RETURN 7、查找男性职工 ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE FOUND() DISPLAY CONTINUE ENDDO RETURN ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE NOT EOF() DISPLAY CONTINUE

vfp程序中常用的命令

程序中常用的命令 一、赋值命令 命令一: STORE <表达式> TO <内存变量> 命令二: <内存变量> = <表达式> 功能:对内存变量赋值 说明:命令一可以对多个内存变量赋值;命令二只能对一个变量赋值。 例:store 5*2 to a,b c=3*1 ?a,b,c,5,7*7 z=c*a ??z ? ?a*b*c,5 二、交互式输入命令 1、字符串输入命令 ACCEPT [提示信息] TO <内存变量> 2、表达式输入语句 INPUT [提示信息] TO <内存变量> 3、单字符输入语句 WAIT [提示信息] [TO <内存变量>] 说明: 系统在执行上述三种命令时会自动停下,等待用户从键盘输入数据到内存变量中,系统接受到后再继续执行。 Input适用于全部类型内存变量,数据输入时需要加定界符,若输入的是表达式,则先计算表达式的值,再将结果赋值给内存变量。 Accept只适用于输入C型数据,并且输入时不用加定界符 Wait只能输入一个字符(C型)。WAIT命令若没有选项,则其功能为:暂停程序执行,显示提示信息“press any key to continue…(按任意键继续…)”,然后等待用户按键。 提示信息是C型,它会在屏幕上原样输出 例:input “请输入一个值:” to a1 *数值:123;日期:{^1986-12-12}或ctod(“12/12/86”);逻辑型:.T.;字符串:”张三’

accept “请输入一字符串:” to a2 *字符串:张三 wait “你想彻底删除这条记录吗?(y/n)” to ask wait display memo like a* 4、定位输入命令 命令:@<行,列> say <提示信息> get <变量> READ 功能:该命令在屏幕指定的坐标位置上显示提示信息,然后通过READ命令激活GET子句的变量值,然后等待用户对变量的值进行修改。 说明:的 ①<行,列>用来指屏幕窗口位置 ②say <提示信息>用来给出提示信息 ③get <变量>用来取得变量的值,GET后面的变量可以是内存变量或表文件中的字段变量,若是内存变量必须先 赋初值才能使用,若是字段变量则,应打先开相关的表文件。 ④变量的输入值类型应该与初值类型相同。 ⑤READ与GET必须配合使用。多个GET可以只用一个READ与之配合。 ⑥如果命令后面没有跟read则表示只显示内容,不输入值。 例: abc=7 @2,10 say “修改变量anc的值” get abc read clear use 学生 list @5,40 SA Y “姓名”GET 姓名 @7,20 SA Y “性别”GET 性别 READ list 三、格式输出 命令:@ <行,列> say <表达式> 功能:在指定的位置输出表达式的值 说明: ①输出位置由<行,列>确定,<表达式>可以为数值、字符、内存变量、字段变量等 ②行和列都可以是表达式,常常可以使用函数ROW( )和COL( )ROW( )表示返回当前行的行号,COL( )表示返 回当前列的列号 例:store 5*2 to a,b @5,10 say a @5,30 say b use 学生 @5,10 say 学号 @5,30 say 姓名 四、其它程序运行命令 见书

常用算法VFP程序

1.求最大、最小数问题 Dime x(30) Maxx=0 &&极小数 Minx=300 &&极大数 For k=1 to 30 X(k)=1+rand()*300 If x(k)>maxx Maxx=x(k) Endif If x(k)0 X=y Y=R R=x%y Enddo ?y, M*N/y 3.素数(质数)问题 Input to x For k=2 to x-1 If x%k=0 exit endif endfor if k=x ?x,”is prime” Else ?x.”not prime” endif 4.阶乘问题 Input to x F=1 For k=x to 2 step -1 F=f*k

Endfor ?F 5.百钱百鸡问题 for i=0 to 33 for j=0 to 50 k=100-i-j if 3*i+2*j+int(0.5*k)=100 ? i,j,k endif endfor endfor 6.倍数问题 一个正整数与3的和是5的倍数,与3的差是6的倍数,编程序求出符合此条件的最小正整数。 num=1 do While (num+3)%5<>0 or (num-3)%6<>0 num=num+1 enddo ? num 7.判断回文数 Accept to s L=len(s) For k=1 to int(L/2) if subs(s,k,1)<>subs(s,L-k+1,1) exit endif Endfor If k<=int(L/2) ?s,”不是回文数” else ?s, ”是回文数” endif 8.完全数(因数和)问题 所谓“完全数”是指一个数恰好等于它的所有因子之和,例如,6=1+2+3,6是“完全数”。编程序求1000以内的“完全数” Clear For n=1 to 1000 m=0 for i=1 to n-1 if n%i=0 m=m+i endif endfor if m=n

我vfp程序连编的问题知道

我vfp程序连编的问题_百度知道liutaoqq123 助理二级(171) | 我的提问 | 我的回答 | 知识掌门人 | 我的消息(0/0) | 百度首页 | 退出 新闻网页贴吧知道 MP3 图片百科 帮助 百度知道 > 电脑/网络 > 其他编程语言订阅该问题 黑体炉-专业黑体辐射源生产商 黑体炉.中科院上海福源光电技术有限公司从事黑体辐射源的研制开发已有二十多年历史,为... https://www.360docs.net/doc/008603177.html, zox氧量分析仪显示表 它是ZO型系列氧化锆氧气含量分析仪的二次显示仪表(俗称氧量显示仪). 安装方式有二种:... https://www.360docs.net/doc/008603177.html, LCD/LED显示表 全系列二线制LED/LCD智能显示表,全系列压力变送器及散件现货供应,价格优惠.欧利德电子... https://www.360docs.net/doc/008603177.html, 湖南维修软启动首选特洛伊 专业维修变频器伺服系统 PLC 软启动技术雄厚,服务周到,信誉第一,质量第一 https://www.360docs.net/doc/008603177.html, 鸡西市申通电抗器制造 专业制造各种电抗器,启动电抗器,并联电抗器 https://www.360docs.net/doc/008603177.html, 掉电再启动保护监控器-上海神引双... 双华电器是一家集科研,生产,销售于一体的专业电动机保护器制造公司.在同行业率先通过I... https://www.360docs.net/doc/008603177.html,

找软启动就到西安启能高端电器公司 提供的晶闸管软起动装置,是一种用于高压大型鼠笼式电机频繁起动的装置,利用先进的晶闸... https://www.360docs.net/doc/008603177.html, 您想在自己的网站上展示百度“知道”上的问答吗?来获取免费代码吧! 如要投诉或提出意见建议,请到 百度知道投诉吧反馈。 添加到搜藏已解决 我vfp程序连编的问题 悬赏分:5 - 解决时间:2007-3-20 09:30 我的一个vfp主程序执行重新连编项目时没有错误,可是要联编成exe文件时,会提示连编程序名.app文件时出错,这是为什么?还有我做了一个主界面的表单,可是执行完以后却不能执行以后的程序了,是不是缺少什么命令了? 提问者: lixuejiang16 - 试用期一级最佳答案 其实,这个问题之所以被频繁地提出,并非是由于初学者的理解能力有问题,而实在是VFP 的设计混乱所致,以至于造成初学者理解上的混乱。笔者曾在"济南万千"的"软件、编程、数据库"新闻组就此问题发过"窗口问题到此为止"的帖子,反响很大,现根据该帖进行整理,修正补足该帖中的一些不准确之处及遗漏。 本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个: 属性意义可选值(黑体为默认值) DeskTop 指定表单是否包含在VFP主窗口中 F./.T. WindowType 指定表单对象运行时的动作 0-无模式/1-模式 ShowWindow 指定在创建过程中表单窗口显示表单或工具栏 0-在屏幕中/1-在顶层表单中/3-做为顶层表单 下面针对上述表单属性以及VFP中"桌面(DeskTop)、屏幕(Screen)、表单(Form)"等概念谈一谈我的理解。正因为VFP在此方面的设计混乱,也就决定了我不能系统地、有条理地分析这些问题,我做的只能是阐述一些事实。 1.表单是一个对象,外观表现上是一个窗口。VFP的主窗口也可以说是一个"表单"对象,它有一个固定的名字叫"_Screen","_Screen"是一个特殊的表单对象; 2."ShowWindow"是规定表单在"显示方面的从属关系"的属性 ShowWindow属性实际上仅有两种选择:"作为顶层表单"与"在顶层表单中"。为了表达方便,我们把具有前者属性值的表单称为"顶层表单",后者称为"从属表单"。二者在显示方面的不同地位是:顶层表单在Windows任务栏上有一席之地,从属表单却没有这种待遇;顶层表单最小化时,从属表单随之被隐藏,当顶层表单关闭后,从属表单随之关闭。

VFP程序设计各种代码

系统首页 点击进入系统:do form 用户登录.scx release thisform 用户登录 登陆:use password Locate For 用户密码= thisform.text1.value and 用户名= https://www.360docs.net/doc/008603177.html,bo1.displayvalue If Eof() ?Messagebox("密码错误,请重新输入!!",0+48+0+0,"确定") Thisform.Refresh Close Database Else Thisform.release Do form 主表单.scx EndIf 退出:thisform.release 影碟登记 首页:goto top thisform.refresh 上一页:skip -1 if bof() messagebox("不好意思,已是第一个记录",48,"信息窗口") endif thisform.refresh 下一页:skip if eof() messagebox("不好意思,已是最后一条记录",48,"信息窗口") skip -1 endif thisform.refresh 末页:goto bottom thisform.refresh 添加:if len(thisform.影片编号.value)=0 go bottom dele pack wait window "影片编号不能为空" timeout 1 endif append thisform.refresh 删除if messagebox("确实要删除本记录么?",1+64+256,"提示")=1 delete pack skip -1

创建一个Vfp应用程序的主要步骤

创建一个Vfp应用程序的主要步骤 创建一个Vfp应用程序的主要步骤如下: 1.创建应用程序的界面。 应用程序的界面一般由菜单、表单、控件等组成。根据我们所编制的程序的规模大小和应用需求,来选择需要使用哪些对象,规划最合适的界面。建议创建一个项目文件,使用项目管理器来统一创建和管理这些文件和数据。 2.设置界面上各个对象的属性。 根据具体情况来设置界面上各个对象的属性,如:对象的外观、名称、颜色等。在Vfp中,大多数属性值既可以在设计时通过属性窗口来设置,也可以使用程序代码在程序运行时设置修改。 3.编写对象对应的程序代码。 界面仅仅决定了程序的外观,设计完界面后就要为对象的事件添加代码。实际上,Vfp程序的主要功能是通过程序代码来实现的。 4.调试程序。 程序编制完成后,在交付用户使用之前,程序员需要运行和调试自己的程序,查找和排除各种错误。 5.生成可执行文件。 程序经过调试,如果没有问题,就可以对其进行编译,生成可执行文件。再通过安装向导将所有相关的文件打包,这样我们的程序就可以脱离Vfp环境,作为一个软件产品在Windows 环境下运行了。 下面,我们做一个实例,让大家体验一下编制Vfp程序的大致过程。但要提醒大家,做完这个实例,不要急于进行Vfp的面向对象操作。还是应该踏踏实实学好后续的课程,打好基础,才能编制出漂亮的程序呀!千万不要太心急了! 例:计算圆的面积。 一.设计界面设计步骤: 1.打开我们之前创建的项目文件myvfp.pjx,出现项目管理器窗口,在“全部”选项卡中展开“文档”选项,选中“表单”,单击右侧的“新建”按钮,弹出“新建表单”对话框,,单击该对话框中的“新建表单”按钮,出现“表单设计器”窗口. 2.“表单设计器”窗口的右侧有一个“表单控件”工具栏,选择“标签”按钮(把指针指向该工具栏上的按钮,会出现一个消息框,显示该按钮的名称),单击表单空白处,表单上显示标签控件label1,。同样方法,再做一个标签控件label2,两个文本框控件Text1和Text2,一个命令按钮Command1,,紧接着,我们要设置这些对象的属性。 3.刚才我们向表单添加控件时发现,刚添加的控件,外围有8个小黑方块,我们称之为“控制点”,有控制点出出,说明此控件处于选到状态。以后,我们若想选取一个控件,用鼠标单击它就可以了。 选取一个控件后,我们可以按Delete键将其删除,按组合键Ctrl+z可撤消删除。如果按Shift 键单击各个控件,可同时选取多个控件。另外,选到控件后,也可以利用“常用”工具栏上的“复制”和“粘贴”按钮来复制控件,这和在Windows的“我的电脑”中复制图标操作方法是一样的。 二.设置对象的属性: 我们使用“属性”窗口设置对象的属性,正常情况下,打开“表单设计器”后,“属性”窗口

VFP中调用其他应用程序的方法

VFP中调用其他应用程序的方法 在用VFP进行应用程序设计中,经常需要调用其他的应用程序。这时候我们立即会想到RUN命令。使用RUN命令只需知道应用程序的文件名及其路径即可。 下面的示例是以最大化方式启动Windows目录下的图画板程序并同时打开c:\windows\Bubbles.bmp文件: RUN/n3 C:\Windows\Pbrush.exe c:\windows\Bubbles.bmp RUN命令的参数用法可以参考Visual FoxPro的帮助文件。 但是令人失望的是,在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其安装的路径。比如我们需要启动用户机器上的浏览器并连接到某一个网址,该机器可能安装的是IE,也可能是NetScape,还有可能是其他的浏览器软件,安装的路径更是无从确定。下面给出我在工作中找到的两种解决方法,这两种方法都是通过Win32 API函数来解决问题,因此其解决思路也可以用到其他编程语言中去。 (一)从注册表中获取被调用软件的名称及路径。 我们只需要提供被调用的软件所处理的文件类型(由文件扩展名来确定),即可通过查找注册表中该软件注册的可以处理的文件类型的数据项来得到该软件的文件名及安装路径。 *主函数 PROCEDURE lookreg

Parameter filetype && 文件类型 * 申明要用到的API 函数 DECLARE Integer RegOpenKey IN Win32API ; Integer nHKey, String @cSubKey, Integer @nResult DECLARE Integer RegCloseKey IN Win32API ; Integer nHKey DECLARE Integer RegQueryvalueEx IN Win32API ; Integer nHKey, String lpszvalueName, Integer dwReserved,; Integer @lpdwType, String @lpbData, Integer @lpcbData #DEFINE HKEY_CLASSES_ROOT -2147483648 #DEFINE C_EXTNOFOUND_LOC "查找失败!" LOCAL cExtn,cAppKey,cAppName,nErrNum LOCAL oReg,regfile cAppKey = "" cAppName = "" nCurrentKey = 0 nErrNum =GetAppPath (filetype,@cAppKey,@cAppName)

关于VFP连编后运行程序一闪而过的解决方法

关于VFP连编后运行程序一闪而过的解决方法 [日期:2006-06-05] 来源:作者:[字体:大中小] 笔者在两年多的新闻组生活中,曾数十次遇到过初学者对VFP的表单窗口属性所提出的问题,特别是"为何系统编译后运行时一闪而过"的问题,更是被频繁地提出。现根据我的经验进行一下总结,以帮助初学者打掉这只拦路虎。 其实,这个问题之所以被频繁地提出,并非是由于初学者的理解能力有问题,而实在是VFP的设计混乱所致,以至于造成初学者理解上的混乱。笔者曾在"济南万千"的"软件、编程、数据库"新闻组就此问题发过"窗口问题到此为止"的帖子,反响很大,现根据该帖进行整理,修正补足该帖中的一些不准确之处及遗漏。 本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个: [list=a] 属性意义可选值(黑体为默认值) DeskTop 指定表单是否包含在VFP主窗口中 F./.T. WindowType 指定表单对象运行时的动作 0-无模式/1-模式ShowWindow 指定在创建过程中表单窗口显示表单或工具栏0-在屏幕中/1-在顶层表单中/3-做为顶层表单 [/list] 下面针对上述表单属性以及VFP中"桌面(DeskTop)、屏幕(Screen)、表单(Form)"等概念谈一谈我的理解。正因为VFP在此方面的设计混乱,也就决定了我不能系统地、有条理地分析这些问题,我做的只能是阐述一些事实。 1.表单是一个对象,外观表现上是一个窗口。VFP的主窗口也可以说是一个"表单"对象,它有一个固定的名字叫"_Screen","_Screen"是一个特殊的表单对象; 2."ShowWindow"是规定表单在"显示方面的从属关系"的属性ShowWindow属性实际上仅有两种选择:"作为顶层表单"与"在顶层表单中"。为了表达方便,我们把具有前者属性值的表单称为"顶层表单",后者称为"从属表单"。二者在显示方面的不同地位是:顶层表单在Windows任务栏上有一席之地,从属表单却没有这种待遇;顶层表单最小化时,从属表单随之被隐藏,当顶层表单关闭后,从属表单随之关闭。ShowWindow的第三种选择"在屏幕中(默认)"仅是"在顶层表单中"的一个特例,即为"在_Screen这个特定的顶层表单中"之意,选择此种属性值时,它一定是个"从属表单"了。_Screen具有"顶层表单"的一切显示特征。 从属表单不能独立地被显示,必须与他的"主表单"一起显示,这个"主表单"要么是一个顶层表单要么是VFP的窗口(_Screen)。不需要为一个"从属表单"指定一个"主表单","从属表单"打开时,自动选择当前的活动顶层表单作为其"主表单",当然,如果选择了"在屏幕中",则这个从属表单自然就以_Screen为其主表单了。 3."DeskTop"是规定表单在"显示方面的活动范围"的属性。 DeskTop仅对"从属表单"有意义,当从属表单的DeskTop=.f.时,它只能显示在它的"顶层表单"的尺寸之内,当这个顶层表单的尺寸比它的尺寸还小时,它将会被部分地遮住;当从属表单的DeskTop=.t.时,它的活动范围将不受它的顶层表单尺寸的限制,它可以显示

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全.txt16生活,就是面对现实微笑,就是越过障碍注视未来;生活,就是用心灵之剪,在人生之路上裁出叶绿的枝头;生活,就是面对困惑或黑暗时,灵魂深处燃起豆大却明亮且微笑的灯展。17过去与未来,都离自己很遥远,关键是抓住现在,抓住当前。VFP命令、函数及程序语句大全(1) 学过VFP(Microsoft Visual FoxPro)的朋友都知道它是微软公司开发的数据库管理系统。它 经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。本文便以VFP 6.0为例介绍它的命令、函数 及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。 一、主要命令: 1、CREATE 作用:建立一个新的表。 格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下 同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下 同。) 说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出 对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用 户输入想要建立的表名。 2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。 格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。 3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。 格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK 参数 时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。 4、INSERT 作用:在表文件中间插入一个新记录。 格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录; INSERT BEFORE 在当前记录前插入一记录; INSERT BEFORE BLANK 在当前记录前插入一空记录。 INSERT - SQL命令追加记录 INSERT INTO 表名[(字段1[,字段2…])];

VFP常用命令详解

VFP常用命令详解 VFP命令、函数及程序语句大全(1) VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。 ?VFP常用命令分类表 类别命令 建立文件类CREATE,MODIFY,COPY,SAVE等 数据库操作类USE,CLOSE,COPY,MODIFY STRUCTURE等 数据编辑类BROWSE,EDIT,CHANG,REPLACE,UPDATE等 记录指针操作类GOTO,LOCATE,SEEK,FIND,SKIP等 记录操作类APPEND,DELETE,INSERT等 数据显示类BROWSE,LIST,DISPLAY等 数据统计类SUM,COUNT,AVERAGE,TOTAL等 存变量操作类ACCEPT,INPUT,READ,SAVE等 程序控制类DO,DO WHILE…ENDDO,IF…ENDIF等 系统设置类SET TALK,SET DEFAULT TO等 ?命令格式 VFP命令一般由命令动词和控制短语构成。 一般格式: 命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>] [FIELDS<字段名表>] [ ]表示可选,<>表示必选, / 表示或选

例如: (1)APPEND FROM C:\RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。 从C:\RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。 (2)COUNT FOR 职称="高工"TO GG 统计高工的记录数到内存变量GG。 控制短语规定了对数据库操作的限制条件: 1.指向输入输出目标 FROM/TO APPEND FROM,COPY FILE TO <目标文件> 2.限制记录范围(SCOPE) ALL 所有记录 NEXT 本记录后的第几个记录 RECORD<1> 第1个记录 REST 当前记录之后所有记录 3.选择字段 FIELDS<字段表>选择输入/输出的字段。 4.限制条件 FOR/WHILE<条件> FOR 基本工资>100 .AND.基本工资<200 命令格式规则 命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。

VFP程序基础习题

红色部分为选作题目 利用brow for 命令完成如下内容 1、查询入学成绩十位数字为5的同学信息(请用至少2种方式) 1、 brow for int(入学成绩/10)%10=5 brow for substr(str(入学成绩,5,1),2,1)="5" 2、查询学号尾数为偶数的同学(至少2种方式)brow for (val(right(学号,1)))%2=0 brow for right(学号,1)$"24680" 3、查询12月出生的同学brow for month(出生日期)=12 4、查询1985年出生的同学brow for year(出生日期)=1985 5、查询2月14日出生的同学brow for month(出生日期)=2 and day(出生日期)=14 利用排序命令完成如下内容 sort 1、按入学成绩降序排列生成学生信息1 sort to 学生信息1 on 入学成绩/d 2、先按性别升序,性别相同按入学成绩降序排列生成学生信息2 sort to 学生信息2 on 性别,入学成绩/d 3、先按性别升序,性别相同按出生日期升序排列生成学生信息3sort to 学生信息3 on 性别,出生日期/a 利用index on 命令建立索引 1、按学号升序建立索引a index on 学号 tag a 2、按入学成绩降序建立索引 b index on str(入学成绩,5,1) desc tag b 3、按性别升序建立索引c index on 性别 tag c 4、先按性别升序,性别相同按姓名升序建立索引d index on 性别+姓名 tag d 5、先按性别降序,性别相同按入学成绩降序建立索引e index on 性别+str(入学成绩,5,1) desc tag e 6、先按性别升序,性别相同按入学成绩降序建立索引f index on 性别+str(750-入学成 绩,5,1) tag f 7、先按性别升序,性别相同按出生日期升序建立索引g index on 性别+dtoc(出生日期,1) tag g

VFP程序设计典型例题汇总

Visual FxoPro程序设计题 1.编写程序,从键盘输入一个日期,查询STUDENT表中该日期以后出生的学生信息并显示在浏览窗口中。 use student &&运行前单击教学管理数据库 input “请输入某日期:” to r q *输入时有提示,或input to rq输入时无提示,输{^1987-01-01} browse for 出生日期>rq 2.有一函数: x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10) 编写程序,输入x,输出y的值。 clear input "Enter x please!" to x if x<1 y=x else if x<10 y=2*x-1 else y=3*x-11 endif endif 'x=',x,'y=',y 3.编写程序,从键盘输入一个年份,判断它是否闰年。 clear input "Enter year number please!" to y if y%4=0 and y%100<>0 or y%400=0 y,"is a leap year!" else y,"is not leap year." Endif

4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。 clear input “请输入一百分制成绩” to cj do case case cj>=90 ”A” case cj>=80 ”B” case cj>=70 ”C” case cj>=60 ”D” otherwise ”E” endcase 5.编写程序,从键盘输入一个正整数M,输出M内(包括M)所有偶数。 clear input to m for i=0 to m step 2 str(i,5) Endfor 6.编写程序,从键盘输入一个正整数M,计算M内(包括M)所有偶数之和。 clear input to m s=0 for i=2 to m step 2 s=s+i Endfor s

新编VFP程序设计教程课后答案

思考题参考答案 第1章数据库系统概述 (1)数据库、数据库管理系统及数据库系统的概念分别是什么? 答:数据库是存储在计算机存储设备上的、结构化的相关数据集合;数据库管理系统是数据库系统中对数据进行管理的软件系统,是数据科系统的核心;数据库系统是指引入了数据库技术的计算机系统。 (2)在关系数据模型中,关系、元组、属性是什么概念? 答:一个关系就是一张二维表,由行和列构成;元组也称记录,是表中的一行;属性也称字段,是表中的一列。 (3)关系模型允许定义哪几类完整性约束? 答:实体完整性;参照完整性;用户定义完整性。 (4)关系的基本运算有哪几类? 答:传统的集合运算(并、交、差等);专门的关系运算(选择、投影、连接)。 (5)Visual FoxPro主要提供了哪几种设计工具? 答:略。 (6)如何设置当前工作目录? 答:界面方式:选择“工具|选项”菜单命令,打开“选项”对话框,在“文件位置”选项卡中选中“默认目录”列表项,单击“修改”命令按钮,打开“更改文件位置”对话框,选中“使用默认目录”复选框,单击“定位默认目录”文本框后的“…”命令按钮,选择一个目录后确定即可。 命令方式:SET DEFAULT TO <路径说明>。 (7)项目管理器的功能有哪些? 答:对项目中的表、数据库、查询、表单、报表、菜单等对象进行组织和管理;实现对项目中各个对象的创建、修改、删除等操作;将应用程序编译成可独立运行的可执行文件等。 第2章Visual FoxPro的数据与数据运算 (1)Visual FoxPro有哪几种常用的数据类型? 答:字符型、数值型、整型、浮点型、双精度型、货币型、日期型、日期时间型、逻辑型、备注型、通用型。 (2)字段变量与内存变量有何区别? 答:字段变量是数据表中的一个字段,变量名即字段名,针对不同的记录,同一字段可以有不同的字段值;内存变量是用户在程序中定义的,当程序运行时,在内存中临时创建内存变量,用于存放程序运行的中间结果和最终结果。 (3)什么是函数?如何调用函数? 答:函数是一段预先编写好的程序代码,用于实现某个特定功能,每个函数有一个函数名,可以接收若干个参数,返回一个确定值。 函数的一般调用格式为:函数名([参数列表])。 (4)什么是表达式?常见的表达式类型有哪几种? 答:表达式是把常量、变量、函数和字段名等用运算符连接起来的式子。常见的表达式类型有:算术表达式、字符表达式、日期和时间表达式、关系表达式、逻辑表达式。 第3章数据表的建立和使用 (1)Visual FoxPro中的表分为哪两类?它们有什么不同?

vfp程序与程序文件

一、程序与程序文件 1、程序的概念:由命令动词或短语参数以及语法结构所组成的能够自动处理的命令文件,扩展名为PRG。 2、程序的特点 ⑴可以利用编辑器,方便地输入、修改和保存程序。 ⑵可以用多种方式,多次运行程序。 ⑶可在一个程序中调用另一个程序。 ⑷它是一种自动处理方式。 3、编程中要遵循的原则: ⑴在输入命令动词或短语时,命令动词的输入要求与命令窗口中要求一致即:不分字母大小写、命令动词可缩写前四个字母、命令动词或短语之间至少有一空格隔开。 ⑵一行只能写一条语句,输入完后必须回车,才能在第二行输入下面的内容。 ⑶当一行输入不完语句时,在该行的最后输入“;”,再回车,转到下一行,系统回默认下一行是上一行的继续。 ⑷在程序中允许使用注释语句:用“*”或“&&”或NOTE开头,命令行后也可以用注释,用“&&”开头,当然注释语句可以有可以无,在程序运行时不运行注释语句。 ⑸在编辑程序中,并不是每句都执行,只有在运行时才执行程序,而且是按照自然顺序执行。 4、程序文件的建立与执行 ⑴程序文件的建立 步骤1:点击“文件”,在弹出的下拉菜单中选择“新建”,然后在“新建”的对话框中选择“程序”,再单击“新建文件”按钮。 步骤2:在弹出的“程序”框中,可以输入语句。 步骤3:保存文件。从“文件”的下拉菜单中选择“保存”或“另存为”或用快捷键“CTRL+W”,在“另存为”对话框中指定程序存放的路径和文件名,并单击“保存”按钮。 ⑵编辑或修改程序 步骤1:点击“文件”,在弹出的菜单中选择“打开”,弹出“打开”对话框。 步骤2:从文件类型中选择“程序”。 步骤3:从“搜寻”后下拉框中选择保存程序的路径。 步骤4:从文件列表框中选择要修改的文件,并单击“确定”按钮。 步骤5:编辑完成后,从“文件”选择保存按钮或按下“CTRL+W”来保存文件。 也可以用命令动词来建立或修改程序文件,格式:modify command <文件名>该格式中文件名前可以指定路径。无须加扩展名,系统会默认.PRG。当执行该命令时,系统首先检索该磁盘的文件,如果指定文件存在,则打开修改;否则系统认为要建立一个指定的文件。 ⑶执行程序文件 方法1:从“程序”菜单中选择“运行”,打开运行窗口。再选择要运行的文件名,此时系统默认运行的类型为程序,并单击“运行”按钮。 方法2:在命令窗口输入“DO 文件名”,也可以运行程序 二、交互式输出输入命令 有时,为了让程序多样化、灵活化,可以对程序的运行加以用户的要求,从而使程序更加符合用户的要求,对程序的控制一般通过交互式命令来控制程序运行。 1、INPUT 命令格式:INPUT 字符串表达式TO 内存变量 该格式表示程序暂停,按照给定的字符串的提示信息,从键盘上另外赋值给指定的内存变量。从键盘上输入数据后,程序继续运行。

大学计算机VFP编程题

11、输入圆的半经,计算圆的面积和周长。 评析: input "r=" to r s=3.1415*r*r c=3.1415*2*r ? "s=",s ? "c=",c 12、输入三角形的底和高,计算三角形的面积。 评析: input "a=" to a input "b=" to b s=(a*b)/2 ? "s=",s 13、编写一个程序,求三个数中的最大值。 评析:

Input "a=" to a input "b=" to b input "c=" to c max=a if max

关于VFP主程序

关于主程序和主窗口 1.VFP主程序的一般写法 *-------------------main.prg set talk off 对于主程序设计具有一定的通用性,一是对系统 set esca off 环境的设置;二是对自定义菜单和工具栏的设计, set exact off 以及启动画面或登录画面的设计。在左边列出的 set excl Off *设定表为共享方式这段程序是我编制的建设银行计算机台帐的主称SET REPROCESS TO AUTOMATIC *设定数据加锁序,希望能对您有所帮助。 set help to comp_help.chm *设定帮助文件 set cons on *激活从程序中向Visual FoxPro 主窗口或活动的用户自定义窗口的输出。set date ansi *设置日期格式 set score off *设定Num Lock、Caps Lock 和Insert 键状态 set safe off *关闭对话框 set stat bar on *打开状态栏 set cent on *设定日期格式年为4位数 set color to *设定配色方案 set sysmenu off *关闭系统主菜单 clea *刷新屏幕 clear all *清理变量 ON ERROR DO err.PRG *设定出错处理程序 on shutdown do qUIT1.prg *指定当试图退出FoxPro时,要执行的命令,否则提示不能退出FoxPro with _screen *设定FoxPro主窗口属性 .visible=.f. *设定主窗口不可见 endwith do form begin *执行启动画面(包括版权、版本、使用者等) read event *占用进程,启动事件处理 do form login *执行登录表单,对用户进行身份验证 read event *占用进程 with _screen *对主窗口进行再次设定 .visible=.t. .closable=.t. .controlbox=.t. .maxbutton=.t. .minbutton=.t. .movable=.t. .top=0 .left=0 .windowstate=2 *将主窗口最大化 .caption='中国建设银行计算机台帐管理' .icon='screen2.ico' *设定图标 endwith

VFP程序设计典型例题汇总

V i s u a l F x o P r o程序设计题1.编写程序,从键盘输入一个日期,查询STUDENT表中该日期以后出生的学生信息并显示在浏览窗口中。 use student &&运行前单击教学管理数据库 input “请输入某日期:” to r q *输入时有提示,或input to rq输入时无提示,输{^1987-01-01} browse for 出生日期>rq 2.有一函数: x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10) 编写程序,输入x,输出y的值。 clear input "Enter x please!" to x if x<1 y=x else if x<10 y=2*x-1 else y=3*x-11 endif endif 'x=',x,'y=',y 3.编写程序,从键盘输入一个年份,判断它是否闰年。 clear input "Enter year number please!" to y if y%4=0 and y%100<>0 or y%400=0 y,"is a leap year!" else y,"is not leap year." Endif 4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。

input “请输入一百分制成绩” to cj do case case cj>=90 ” A” case cj>=80 ” B” case cj>=70 ” C” case cj>=60 ” D” otherwise ” E” endcase 5.编写程序,从键盘输入一个正整数M,输出M内(包括M)所有偶数。 clear input to m for i=0 to m step 2 str(i,5) Endfor 6.编写程序,从键盘输入一个正整数M,计算M内(包括M)所有偶数之和。 clear input to m s=0 for i=2 to m step 2 s=s+i Endfor s 7.编写程序,从键盘输入5个数,找出其中的最大数和最小数。 clear input "请输入第一个数" to max min=max for i=2 to 5 "请输入第"+str(i,2)+"个数" input to a if a>max

相关主题