一个简单的VFP问题

fanshao 2003-10-16 07:02:43
我在用SQL语言创建TABLE时,想让表中的name 这一行不能为空语句如下:
CREATE TABLE **(name CHAR(20) not null,id integer null)
但我在创建后添加数据时却仍能用空格略过
我记得在学习SQL时不是说若设置为NOT NULL,则不能略过吗?
请大家指点!
...全文
24 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanshao 2003-10-16
  • 打赏
  • 举报
回复
那我该怎么办呢 ?能指点我一下吗?就是让输入为空不能跳过.
谢谢
编译失败 2003-10-16
  • 打赏
  • 举报
回复
空格不等於NULL,其實就算是一個空字符串""頁不等於NULL
VFP中实现选择排序 时间:2009-06-07来源:编程入门网 作者:老马   众所周知在常用的简单排序方法中,前文所介绍的起泡排序(冒泡排序)是效率最差的一个了。我们今天所介绍的这个选择排序也是简单排序中的一种,不过比起泡排序的效率要高,并且也比较容易实现。   这些常用的排序方法多见诸于C/C++方面的资料中,如果要在vfp中实现这些排序方法,原理是一样的,只是在代码实现上略有差别。例如,在C/C++中数组的下标是从0开始,而vfp中数组的下标是从1开始;C/C++中的for语句可以采用for(i=0;ivfp的for语句则有些弱,它的变量终值不能采取i一个范围。因为以上的区别,在VFP中书写代码时要特别注意数组下标问题及循环变量的初值及终值,在以后的文章中不会再特别提及这些问题。   我们先看一下选择排序的基本思想和排序过程。(此部分内容引用自百度百科:http://baike.baidu.com/view/547263.htm)   基本思想   每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。   选择排序是不稳定的排序方法。n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:    ①初始状态:无序区为R[1..n],有序区为空。    ②第1趟排序   在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。   ……    ③第i趟排序   第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。   这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。   排序过程   【示例】:    初始关键字 [49 38 65 97 76 13 27 49]   第一趟排序后 13 [38 65 97 76 49 27 49]   第二趟排序后 13 27 [65 97 76 49 38 49]   第三趟排序后 13 27 38 [97 76 49 65 49]   第四趟排序后 13 27 38 49 [49 97 65 76]   第五趟排序后 13 27 38 49 49 [97 65 76]   第六趟排序后 13 27 38 49 49 65 [97 76]   第七趟排序后 13 27 38 49 49 76 [97 76]   最后排序结果 13 27 38 49 49 76 76 97   知道这个排序方法的基本思想和排序过程,在vfp中书写代码就简单了,只是需要注意vfp中数组的下标及循环变量的初值及终值与C/C++的区别。实例的运行界面如下图:   本例依然采取生成10个随机整数的方式取得数据,然后用选择法对这10个整数进行从小到大的排序。实现过程:   一、新建表单,向表单添加一个编辑框控件及三个命令按钮,按上图设置这三个命令按钮的caption属性。   二、添加代码:   1.“生成10个随机整数”按钮的click事件: public s(10) for i=1 to 10 s(i)=int(rand()*100) &&产生两位数的随机整数 thisform.edit1.value=thisform.edit1.value+str(s(i),5) endfor   2.“清屏”按钮的click事件:thisform.edit1.value=""   3.“选择排序”按钮的click事件: local i,j,k,t as integer for i=1 to 9 k=i for j=i+1 to 10 if s(j)
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows 的常见问题 这些是有关 Microsoft Visual FoxPro 最常见的问题。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: --------------------------------------------------------------------- 部分 1. 技术支持与市场 部分 2. Visual FoxPro 6.0 新增功能 部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植 部分 4. Visual FoxPro 常见问题 --------------------------------------------------------------------- 部分 1. 技术支持与市场 问题 1-1: 从何处可以获得产品的更新版本? 答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 和更新的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 如何获得技术支持,以及如何报告软件错误? 答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见问题的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。 问题 1-4. 什么是 Knowledge Base?如何使用它? 答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: support.microsoft.com 问题 1-5: 是否会有 Visual FoxPro 6.0a? 答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不会使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还会在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。 问题 1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品? 答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。 问题 1-7: 哪里可以找到 Visual FoxPro 的使用示例? 答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的新示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运行 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用新的 HOME(2) 函数方便地找到已安装示例的位置。 除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供新的示例。
水仙花数的vfp实现 时间:2009-05-08来源:编程入门网 作者:老马   本文作者“老马”为编程入门网VFP专栏作家,转载请保留这句话。   记得看过朋友的文章中有句话大致是这个意思:一个人编程的水平与实现同一目的所需的代码数量成反比。其实这句话很有道理,如果用这个观点来评价我自己,我应该是一个苍老的菜鸟,我做出来的东西勉强可用,但代码在高手看来却是惨不忍睹。我所走过的轨迹与常人大概也有所不同:计算机专业科班的可能在毕业后从事coding多年之后,当感觉自己力不从心时转行做管理或教师;而我恰恰相反,外贸专业毕业后狂热地自学了一些东西,教了几年C语言、vb、vfp及asp等课程,几乎所有的业余时间都用到了接活来做上,这一点也差不多达到了狂热的程度。不过后来发现自己似乎是走进了死胡同:我试图走进VC的世界,可是被MFC、SDK这些东西折磨得痛苦之极;当我为自己开始能用asp做些东西而沾沾自喜的时候,一个强调代码与界面分离的asp.net一天比一天时髦起来,而它的身后是一个.NET家族。更新的技术何时出现?天知道,或许就在明天。我终于开始明白,我实际并不象身边的人说的那样聪明,我也只是一个平庸的人;我终于开始明白,如果在我所从事的这个没有任何保障的“挨踢”行业继续做下去,过几年我会成为40、50人员,那时恐怕连愿意为我交社保、医保的地方都找不到了。所以现在我进入了企业,不再是教师,因为这需要很大的精力来证明自己的能力和水平;也不再为了些“水票管理”之类的东西而通宵达旦,因为这样做得到的是几个小钱,失去的却是最宝贵的健康。   今天和几个高中同学小聚了一下,或许是人岁数大了愿意回忆从前的事,或许是还有些酒意,所以有了上面的这一段话。不过我想这不应该算是牢骚,应该说是一个菜鸟对自己的可笑经历的总结。   我始终认为C语言是一个基础性的语言,以前无论是VB或VFP课,我总会要求同学自己找本谭浩强的《C程序设计》,把预处理命令、指针、结构体与共用体等几部分内容pass过去,阅读其基础部分的内容;而在课时充足的情况下,我也会经常拿C程序书中诸如“鸡兔同笼”这样有趣的题来“折磨”一下班上的同学。   而现在有些日子了,有两个高中同学总跑到我家里来。人活到老、学到老,这本是件好事,不过我还是有些苦恼。因为他们到我家里来学习,不仅不交学费,我还得管他们饭。他们问到的vfp的东西比较多,所以我打算继续把这方面的一些东西翻出来晒晒。从本文开始会探讨一下C程序书中比较经典的几个算法在VFP中实现的问题,当然纯属菜鸟之见,有没有用那可两说,得自己去分析。觉得有用的话,或许可以开拓思路、扩充您的知识面,我很高兴;觉得没用的话,您权当我是吃撑了,您能忍受我罗嗦了这么长时间,我一样很高兴,呵呵。   水仙花数的实现是一个比较经典的算法题,今天我们首先在vfp中来实现它。   首先我们了解一下什么是“水仙花数”。所谓水仙花数是指一个n位数,其各位数字立方和等于该数本身的值,例如:153=13+53+33 ,所以153是一个水仙花数。   我们来做一个简单点儿的:求解3位数的水仙花数,即100至999之间的水仙花数。很明显这个程序需要使用循环,并且从水仙花数的概念可知,其重点是求解出循环变量当前值的各位数字的值。剩下的工作就简单了,把求解出的各位数字的立方和与循环变量当前值进行比较,如果相等则说明这是一个水仙花数,输出它即可。相关说明见代码注释。本文发表于编程入门网:www.bianceng.cn   我们用表单来实现这个例子,运行时如下图:   参照上图开始我们的制作:   一、新建表单,向表单上添加一个标签控件,caption属性值设置为“显示100到999间的水仙花数”;添加两个命令按钮command1和command2,并将它们的caption属性值分别设置为“开始”和“清除”;添加一个编辑框控件Edit1,属性值均采用默认的。   二、添加事件代码:   1、“清除”按钮的click事件: thisform.edit1.value="" thisform.refresh   2、“开始”按钮的click事件: local i,a,b,c for i=100 to 999 a=int(i/100) &&百位的值等于这个三位数除以100后取整 b=int((i-100*a)/10) &&用这个三位数减去它的百位数字与100乘积, &&对得到的差除以10后进行取整,结果就是十位的值 c=i-int(i/10)*10 &&与上面原理相同,这是求个位的值 if i=a^3+b^3+c^3 &&成立说明是水仙花数并输出 thisform.edit1.value=thisform.edit1.value+str(i,5)+chr(13) &&用chr(13)换行 endif endfor
介绍数据类型   表中的每一个字段由于其数据代表的意义的不同,因而都有特定的数据类型,例如:编号、姓名、出生年月三个字段的类型是各不相同的,在Visual FoxPro中,分别是用数值型(或整型)、字符型、日期型来表示的。熟悉各种数据类型可以帮助我们更快更好地对表进行操作。Visual FoxPro 6.0 表中的数据类型及简单的说明如下: 字符型:用于包含字母、汉字、数字型文本、符号、标点等一种或几种的字段,其中的数字一般不是用来进行数学计算的,如电话号码、姓名、地址。 货币型:货币单位,最多可有四位小数,如果小数部分超过四位则将通过四舍五入只保留四位,如商品价格。 数值型:整数或小数。如:成绩、年龄、 订货数量。如果有小数,需要指定小数位数,小数点包含在字段宽度中,占一个字节。它还支持十六进制数值。 浮点型:同数值型。 整 型:不带小数点的数值。 日期型:用来存放日期数值,Visual FoxPro 6.0(5.0)支持2000年型的日期数值。格式为:月/日/年。如:04/28/97。其中的年份如果输入97,则系统默认为1997,将光标条移到表中该字段时就会显示“04/28/1997”,如果输入小于48的数(如45)则系统默认为2045,因此,最好输入完整的年份。 日期时间型:格式为:月/日/年 时:分:秒 AM或PM。如:04/28/97 06:26:00 AM。 双精度型:双精度数值,如实验所要求的高精度数据。 逻辑型:当存储的数据只有两种可能时使用,用True(.T.)和False(.F.)表示。如:是否结婚。 备注型:又称内存型,它的长度随输入数据的长度而定,它的存储和表中其他数据是分开的,存放在扩展名为.FPT的文件中。 通用型:可以链接或嵌入OLE对象,如由其他应用程序创建的电子表格、WORD文档、图片。当链接OLE对象时,表中只包含指向数据的链接和创建OLE对象的应用程序的链接;当嵌入OLE对象时,表中包含OLE对象复件及指向创建此OLE对象应用程序的链接。 另外还有字符型(二进制)和备注型(二进制):前者同“字符型”相同,但是当代码页更改时字符值不变;后者同“备注型”相同,但是当代码页更改时备注不变。本课程中不涉及这两种类型,这里不做介绍。  1.2 使用“表设计器”创建表 使用“表设计器”可以方便、直接地创建表,我们既可以通过“项目管理器”的“数据”选项卡使用“表设计器”创建;也可以从“文件”菜单中使用“表设计器”创建。前一种方法在以后创建“项目管理器”时再介绍,这里仅介绍从“文件”菜单中创建表。  1.2.1 创建表结构 操作步骤:  从“文件”菜单中选择“新建”。出现如下对话框: 在复选框中选取“表”。  2、选取“新建文件”按钮,在“输入表名”中输入我们要建的表名,例如“职工表”,选取“保存”按钮。即出现表设计器:  这里有三个选项卡:“字段”、“索引”和“表”,默认的是“字段”选项卡。  3、从第一行开始依次输入(或选择): 在“字段名”选项卡中键入字段名。 在“类型”区域中,选择列表中的某一字段类型。注意,字段的数据类型应与将要存储在其中的信息类型相匹配 在“宽度”列中,设置以字符为单位的列宽,使字段的宽度足够容纳将要显示的信息内容。注意,一个汉字需占两个字符。 如果“类型”是“数值型”或“浮点型”,请设置“小数位数”框中的小数点位数。 如果希望为字段添加索引,就在“索引”列中选择一种排序方式。 如果想让字段接受 null 值,选中“NULL”。NULL无明确的值,它不等同于零或空格。一个 NULL 值不能认为比某个值(包括另一个 NULL 值)大或小,相等或不同。 字段名前的双向箭头表明是当前行。一行各项目之间用Tab键移动。  4、表的结构设置完毕后, 选取“确定”按钮,这时会出现一个选择框,询问“现在输入数据吗?”。此时,可以选择是立即开始输入记录,还是在以后准备好所有记录后再打开表进行输入。   1.2.2 在表中添加记录 1、在“文件”菜单中选择“打开”。  2、从“搜寻”下拉框中选择文件所在目录,从“文件类型”下拉框中选择“表”,即出现该目录下所有的表。如下图:  3、选择“职工表.dbf”,点取确定按钮。 4、从“显示”菜单“中选择“浏览”。如图:  5、这时出现“职工表”浏览窗口,并且“显示”菜单的内容发生变化,如下图,选择“追加方式”。  6、在“浏览”窗口中输入新的记录。当输入内容满一个字段时,光标会自动跳到下一个字段。内容不满时,用Tab键或回车键将光标移到下一字段。 7、当编辑备注型(memo)字段时,将光标条移到memo上,双击它或按Ctrl+Home键就可进入memo字段的输入窗口进行输入、修改。完成后,单击窗口上的关闭按钮“X”或按Ctrl+w可以保存并关闭窗口。如不想保存,则按Esc键或Ctrl +Q。  8、进入通用型(gen)字段与备注型方法相同。进入编辑窗口后,打开“编辑”菜单,选择“插入对象”进入插入对象窗口。选择“新建”可以创建多种格式的图象。我们选择“由文件创建”,在“文件”框中输入插入对象的文件名,包括路径。   如果选择“链接”则只存储该图象的链接,而不把整个图象包括进通用型字段中。如果选择“显示为图标”则可以用图标表示插入的图象对象。这里我们两者都不选择。   按“确定”按钮,即完成照片的插入。  9、为方便输入,也可以从“显示”菜单中选择“编辑”来切换到“编辑”方式。在“编辑”方式下,列名显示在窗口的左边。   这样,一个表就创建完成了。这个表称为自由表。之所以称它自由表,是指它是孤立存在的,和其他表没有发生联系,既不能控制其他表,也不被其他表控制。它独立存在于任何数据库之外。   还可以在 Visual FoxPro 中创建另一种表--数据库表,它是数据库的一部分。我们将在数据库一课中讲到。 1.3 使用“表向导”创建表   创建新表还可以借助于“表向导”。利用“表向导”,可以随时创建新表。向导会提出一系列的问题,并根据回答建立一个表。这里只把步骤说一下,不详细介绍了。 步骤: 从“文件”菜单中选择“新建”。 选择“表”。 选择“表向导”按钮。如本节图一所示。 按照向导屏幕的指示进行操作。 也可以用其他方法使用“表向导”,例如:在“项目管理器”中使用。 返回 下一节 电脑报首页 网络学院首页
第六章 VFP程序设计基础 6.1 程序设计的基本概念 6.1.1 VFP程序设计的概念 程序: 能够完成一定任务的命令的有序集合。这组命令被存放在一个称为程 序文件或命令文件的文本文件中。当运行程序时,系统会根据一定的次 序自动执行包含在程序文件中的命令。 6.1.2 算法介绍 1. 算法概述 算法: 是解决"做什么"和"怎么做"的问题。广义地说,为解决一个问题 而采取的方法和步骤,就称为"算法"。 一个程序可以描述如下: 程序=算法+数据结构+程序设计方法+语言工具和环境 2. 简单算法举例 【例6.1】求半径为2的圆的面积 步骤1:假设半径用R、面积用S表示。令R=2 步骤2: S=3.14^R2 步骤3:输出S的值 程序清单如下: SET TALK OFF CLEAR r=2 s=3.14*r^2 ? "面积s=",s SET TALK ON RETURN 3. 算法的特性 (1)有穷性。 (2)确定性。 (3)有零个或多个输入。 (4)有一个或多个输出。 (5)有效性。 4. 算法的表示 (1)自然语言 【例6.5】 将两个变量X和Y的值互换。 用自然语言描述如下: 步骤1 将X值存入中间变量Z中:X Z 步骤2 将Y值存入变量X中:Y X 步骤3 将中间变量Z的值存入Y中:Z Y (2)伪代码(pseudo code) 一般介于自然语言与程序设计语言之间,它具有 自然语言灵活的特点,同时又接近于程序设计语 言的描述。 【例6.6】 将两个变量x和y的值互换,可以用伪 代码描述如下: BEGIN X Z Y X Z Y END (3)流程图 流程图是用一些图 框、流程线以及文 字说明来表示算法。 用图来表示算法, 直观、形象、容易 理解。 传统流程图 n n 起止框 输入输出 处理框 判断框 流程线 连接点 注释 结构化流程图 语句2 A B (A) (B) 条件? 语句序列1 语句序列2 B 成立 不成立 A 语句1 顺序结构与选择结构流程图 循环结构流程图 A B 条 件 ? 语句序列1 成立 不成立 A B 语句序列1 条 件 ? 成立 不成立 A B 判 断 一 个 数 是 否 是 素 数 的 算 法 用 流 程 图 6.2 VFP6程序设计步骤 对问题进行说明。 分解问题。 编制各模块。 测试并完善各模块。 组装全部模块。 整体测试。 总体来讲,VFP应用 程序设计的步骤包括: 应用程序的建立、应 用程序的运行和应用 程序的修改调试。 6.2.1 应用程序的建立 1. 菜单方式下应用程序的建立 在"文件"菜单中选择"新建"命令,在"新建"对话框 中选择"程序",选择"新建文件"按钮,便进入到程序编辑 窗口, 2. 命令方式下应用程序的建立 格式:MODIFY COMMAND [ <程序名> ] 在程序编辑窗口中,输入并编辑程序内 容,输入完毕后,可以单击"文件"菜单下 的"关闭"选项退出,或按Ctrl+Esc键放弃 当 前 编 辑 的 文 件 退 出 , 也 可 按 Ctrl+W或 Ctrl+End键存盘退出 6.2.2 应用程序的运行 在"程序"菜单中选择"运行"菜单项。在程序 列表中,选择想要运行的程序,单击"运行 "按钮。 在"命令"窗口中,按如下方式键入 DO 以及 要运行的程序名: 格式:Do <应用程序名> [WITH <参数表>] 功能:将指定文件调入内存并运行。 6.2.3 应用程序的修改 在"命令"窗口中按如下方式键入要修改的程序名。 MODIFY COMMAND [程序名] 按下Ctrl+W或Ctrl+End键存盘退出。同时系统自动将修 改前的程序内容复制到一个同名的备份文件(.Bak)中。 按下Esc键或CTRL+Q,即放弃本次修改操作。 6.3 VFP程序设计语言基础 1. 工作方式 VFP系统支持两种工作方式:交互方式、程序方式。 2. 语言类型 既是一种解释型语言,也是一种编译型语言。 3. 程序结构 可使用结构化的程序结构、面向对象的程序结构。 4. 程序功能 提供了大量的命令、系统变量和函数、预装的类库 6.3.2 源程序的组成 前 言: 多为一组注释语句。 设置区: 用以指出设置程序的运行环境。 程序体: 包含数据的输入输出、数据的处理以及结果输出等有关命令。 整理部分: 如关闭各种文件,使系统状态恢复到其标准预定值。 程序的退出: 设置有关命令关闭文件返回到系统的命令窗口状态或操 作系统状态。  2. 常用的输入语句 (1)INPUT命令 格式:INPUT [<提示信息>] TO <内存变量> 功能:暂停程序的执行,等待用户从键盘上键入表 达式并将表达式的值赋给指定的内存变量,待按回 车键后,继续运行程序。 说明: 若选用提示信息,系统将先显示提示信息的值 作为提示信息,

2,718

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧