




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
你从VFP教程上看不到的编程小经验 第11页你从VFP教程上看不到的编程小经验这是我历年使用VFP编程过程中的小经验,许多问题在高手看来不值一提,但当时我可花了时间尝试后才解决的(那时互联网还不普及,许多问题在教材上又找不到)。希望对初学VFP编程的网友有所帮助。另外,虽然现在VFP被认为落伍了,但其实如果你真正学会了(不一定要精通),在日常数据处理工作中还是会有很大用处的。我最喜欢的是它的命令窗口,灵活好用,可以说无能出其右者1、当程序运行之初,与字段绑定的控制显示的值不一定与被绑定的字段的值相同。因此,要取得字段的值,不能用 Object.Value 属性值来取得。2、编增加条码部分的“换条码”功能时,当选定表格中的条码号后,击”换条码“按钮,换条码窗口中出现欲替换的条码号总是为表格中的第一个条码号的情况,如欲删除条码号“D0100009”,却删除了“D0100001”(表格中出现的第一个条码),后将“换条码”的 Click 事件的方法中的Thisform.Refresh()这句去掉后,即解决了问题。3、在编类别库 Ts_libs 中的 frm_Cxflmx 类别时,设定下拉列表框的 RowSourceType 属性为“字段”,RowSource 属性为字段名。每一下拉列表框影响 GotFocus 事件的方法为依据对应字段的索引,影响 InternateChange 事件的方法包含有“IF !EMPTY(THIS.DisplayValue).ENDIF”的条件判断语句,结果引用该类别的例程执行时死锁。经查试,用“变量=ALLTRIM(THIS.DisplayValue)”和“IF !EMPTY(变量).ENDIF”语句后,死锁现象消除。初步分析:这是由于在重新建立不同关键词的索引时,“THIS.DisplayValue”的值与依据该作为判断条件的索引都在不断刷新的缘故。4、激活其它表单时,当引用当前表单控件数据时,一定要指明全称。如当前表单的控件 Text1 的 LostFocus 事件中引用自身控件的值时(例:SET FILTER TO 字段=Thisformset.Form1.Text1.Value),如果只用This.Value ,当其它表单里的控件(例:表格)引用到该值时,将会出错。5、在编报刊订阅模块时,在读者栏输入过信息后,再在“个人”与“单位”选项中切换到个人时,数据表 td_dzmx 指向表尾。反复查看代码,发现是由于在读者栏输入过信息后,数据表 td_dzmx 经过了 SET FILTER 过滤。在“个人”与“单位”选项的 INTERCHANGE 事件代码中在选定“个人”项代码的选择 SELECT td_dzmx 后加上 SET FILTER TO ,问题得到解决。所以,在选择数据表后,一定要注意其原选的 SET ORDER 和 SET FILTER 设置,尤其是 SET FILTER 。6、在编报刊推荐模块时,遇到过在表格控件中无法浏览互相关联的子表 td_bkmx(报刊明细库) 的全部记录而在浏览窗口中却可以,解除两表(父表为 td_bkflm)之间的关联并将记录指针移到表头也不行,后将子表的与关键字有关的索引取消即解决了问题(两表之间的关联没解除也没关系)。7、一定要注意将工作区切换回要操作的工作区。8、在设计报刊管理系统的随机更换壁纸的功能时,总是出现重复显示一两张画的情况,用 VAL(RIGHT(SYS(3),2) 获取任意序号的文件名后加在_SCREEN.Picture=(任意序号文件名) 也好,还是获取任意序号的文件名后改为统一文件名后调用再改回原文件也好,都无法解决问题,但在 Bmps 目录下的位图文件大多是小文件的时候却能随机更换壁纸。后来在 DO WHILE.ENDDO 语句循环获取 VAL(RIGHT(SYS(3),2) 时加上一句 II=INKEY(0.00001),即解决了此问题。9、编按班级号顺序+班内分组随机号获取考号时,以“索引”作为临时存放排序号的字段,并以此字段为分组依据。由于设置的结构索引表达式是为“索引”字段为依据的,导致考号与“索引”字段值相对应。经反复试验,找到原因,即:执行 LOCATE ALL FOR VAL(索引)=lnStartIndexInGroup .AND. VAL(索引)60”,再在报表的文本框数据源设为 (bb/aa)*100,这样就得到了及格率。由于找到了这个办法,甚至积各班分数段的统计都可用这个方法。一句话,只要不想长期保留的统计信息,都可以打印报表时取得。(2000.08.04)13、昨天的经验让又我解决了表格控件的列控制源 ControlSource 的属性值不能用函数“&”的问题。如设 aaa=IIF(ISNULL(cj_ksnj1.语文),0,cj_ksnj1.语文)+IIF(ISNULL(cj_ksnj1.数学),0,cj_ksnj1.数学)+. 然后在 Grid 控件在设列控制源的 ControlSource 属性为 EVLAUATE(aaa) 就可以了。如果表达式长度超过255个字符的话,还可以用两个或更多的变量如 bbb=.、ccc=.,ControlSource 属性相应可设为EVLAUATE(aaa) +EVLAUATE(bbb) +EVLAUATE(ccc) 就可以了。如果表达式纯是字段表达式如cj_ksnj1.语文+cj_ksnj1.数学+cj_ksnj1.外语+.,可直接不要 EVLAUATE 函数而直接赋给 ControlSource 就可以。这一点我以前好象也试过,但不知为什么没成功,可能不是这样设的。现在成绩库设几个总分字段还需要吗?看来只需要一个就可以了,其它在浏览或用 Grid 控件时临时设置吧!(2000.08.05)14、又解决了一个在自定义类 GrdClickHeaderOrder 中不能对包含 .NULL. 值的字段进行排序的问题。原用到 grdOrderField = This.&lcCurrColumnName .ControlSource 和 INDEX ON EVALUATE(grdOrderField) TAG temp OF c:tempcdx DESCENDING 这两条命令,第一条用于取得当前列的控制源(包含别名的字段名,控制源包含别名还是经过多次试验后才在自动获取列控制源的方法中加上去的,开始没有加时,得不到预期的显示信息),第二条用于索引。索引命令时,原来用的是“&”函数,但没有索引,后来改用 EVALUATE 函数才达到索引目的,可是却不能对包含 .NULL. 值的字段索引,为此增加了自定义方法,以获取可以接受 .NULL. 的字段,索引时需要判断该字段是否接受 .NULL. 值,接受则不索引并提示。今天上午我在试验中发现在命令窗口中可以对包含 .NULL. 值的字段进行索引,索引时可以用变量加宏替换“&”代替字段名。那为什么在自定义类中不能呢?再试验后得知,原来问题的关键是别名,用变量代替字段名时,不能包含别名,如 aa=cj_ksnj1.语文 和 bb=语文 索引时就会出现不同情况,前者不能对包含 .NULL. 值的“语文”字段进行索引,后者却行。原来担心这样一来,当工作区改变时可能出现找不到字段的错误,试验的结果没有,证明这个方法是行的。于是我在 grdOrderField = This.&lcCurrColumnName .ControlSource 命令行后加了 grdOrderField=SUBSTR(grdOrderField,AT(.,grdOrderField)+1) 这一行,以去掉别名。用这种方法索引时,只能用宏替换“&”,不能用 EVALUATE 函数。(2000.08.05)15、将自定义类 GrdClickHeaderOrder 的列控制源 ControlSource 用 EVLAUATE() 函数代替后,同样可以对这个列进行自动排序。现在可以完全不要去考虑统计的问题了,除非要长期保留。成绩库中可以去掉总分1、总分2字段,但总1、总2的班名次、年级名次可能还不能去掉。(2000.08.05)16、今天用 SQL 语句创建了一个自定义过程和自定义的类(功能一样),用于统计学科各班的分析数据。用了它以后,一个学科的各班分析数据,只需要数秒钟就统计出来了,以一个班10班计,也只需要最多一分钟。这比我以前的方法可简单多。(2000.08.07)17、对于 ComboBox 控件来说,当 Enabled 设为 .F. 后,即始将其 DisplayValue 属性设为空,其 ListItemID 值也不一定是 0 ,因此表单启动后如果 ComboBox 的 Enabled 是 .F. 的话,不能用 ListItemID 是不是等于 0来判断其有没有选定过选项,即使 DisplayValue 为空时也是这样。这是我在修改任意条件查询的自定义类时得出的经验。(2000.08.08)18、当一个表处表尾时,将不管是否被其它用户锁定都不能锁定,也就是 FLOCK() 和 RLOCK 都返回.F.。(2000.08.10)19、在编查询当前成绩表单时,在执行到以自定义类 GrdClickHeaderOrder 创建的控件 Form2.Grid1 时速度大大降低,并出现了超过 DO 嵌套层数的错误信息。原来在表单集的自定义的方法 ResetGrid 中调用了浏览工具栏的 AfterLookStyleChange 方法,而后者又调用执行了表单集的ResetGrid 方法,导致不断循环。(2000.08.25)20、今天又彻底解决了一个在自定义类 GrdClickHeaderOrder 中存在的困惑问题。我在用该类建立表格后,在单击列标题时有时会出现“找不到变量(如报刊名称、半年价之类)”的提示信息。这种情况出现在第二次调用该类建立的表格的时候。以前一直弄不清楚是什么原因,只是后来用“&”命令后有好长一段时间没有出现此问题,以为已经解决了。今天当我对该类作了一些修改(对“INDEX”命令行增加了“ADDITIVE”子句,用不加别名的字段名作索引标识,以便对增索引过的列用索引标识排序,避免对同一列重复使用“INDEX”命令)后,又出现了此问题,我下决心要找到原因。我“WAIT WINDOW”命令步步搜索,发现问题就出现在“INDEX”命令行上。我反复用“&”、“()”、“EVALUATE”方式对变量进行替换,都没有解决,甚至我直接用“INDEX ON 报刊名称 TAG 报刊名称 .”命令还是不能解决问题。为什么呢?我真是百思不得其解。后来我突然想到查看一个单击列标题后有关数据表(bk_bkys)的索引标识,于是我在单击列标题后立即进入命令窗口,键入“MODI STRU”出现数据结构窗口后,发现索引标识多了10多个,有“报刊名称”、“半年价”、“季价”、“一季份数”等,其中有些索引标识对应的同名字段在数据表(bk_bkys)中是没有的,是选前执行过的用该类建立的表格数据源表(bk_dymx),这下子我完全明白了,原来用问题正是出现在“ADDITIVE”子句上,由于用了该子句后,并没有替换了同名非结构复合索引文件,导致了原来的索引标识也保留着,这样自然就出现有些索引标识对应的同名字段在后来的数据表中不存在的情况。原因找到后,解决起来就容易了,我在用该类的“INIT”事件中删除了同名非结构复合索引文件,一切解决了。(2000.10.13)21、在表单中对表进行过滤或排序时,尽可能直接不要使用“SET FILTER TO 报刊名称=THISFORMSET.Text1.Value”之类的表达式,否则当表在单表启动就已之前致使表不能自动关闭时,再使用该表时,会出现找不到“THISFORMSET.”之类的提示信息,就是在打印时,也会出现错误信息,最好的方式还是使用全局变量。(2000.10.26)22、当编译项目时,能自动找到主程序调用的子程序、表单、报表、图片等,这此调用都是须在命令或自带的属性中明确声明的,如果在自定义的属性中调用的图片,编译时不能加进来,结果执行时出现找不图片的出错信息,因此这些图片需要自己加到项目中。另编译时要排除的文件,也需要自己加进去,并设定为排除,否则将自动编译到执行程序中。(2000.10.26)23、用 SELECT-SQL 命令查询时可选择排序(ORDER)的方式即降序还是升序,用升降时可用 DESCENDING,但不能用 ASCENDING 指定降序(默认值),因此当指定降序时,不加参数就可以了。这就是我在编自定义的 CboAddItemFromField (由数据表添加数据项 Item 标题)时指定用降序时出错的原因(我指定了 ASCENDING 参数)。(2000.10.26)24、项目编译时,只要加入主程序,就可以自动将调用的程序添加进来,因此,当不清楚项目中的文件是否有用时,可将项目中主程序以外的文件通通移走,这样项目编译后自动添加进来的文件即为有用文件。但如果需要指定某文件排除即不编译到执行文件中,则必须将此文件事先手动添加到项目文件中,并设定为排除。另对于控件的自定义属性中指定的文件(如图标文件),必须必须手动添加到项目文件中,才能编译到执行文件,否则不能自动添加到项目文件中,并不能编译到执行文件中,这样可能会出现执行时找不到文件的错误。(2000.11.02)25、在判断 ComboBox 选定项时,用 DisplayValue 属性值比用 ListItemID 属性值更可靠,尤其在经常执行 ComboBox 的 Clear 方法时。我在编打印登分表的表单时,原设计的是在选定不同年级时,执行 List1(ComboBox类) 的 InteractiveChange 方法,根据 List1 值是否是全年级还是班级名来确定显示在 Grid1 在的注册学生信息,由于每次选定不同年级时,需要根据选定年级的班级数对 List1 的选择项进行更新(执行 Clear 方法),结果对 List1 用是否 ListItemID=1 (即是否显示为“全年级”)进行判断时,得不到应有的结果,改用 DisplayValue=全年级 进行判断,问题解决了。(2001.01.23)26、将一些经常要用到的必须要设成全局性质的变量,可放 _SCREEN 对象的自定义属性中。(2001.02.22)27、本人习惯在 FOR.ENDFOR 语句中循环变量用 i ,当在被调用的程序或类中用这个循环变量时,会影响调用程序中在 FOR.FOR 语句中调用该程序或类可能使用的同名变量(i),因此应在程序特别是类库中使用时,最好加 LOCAL i 语句。(2001.04.10)28、在对学生成绩进行全科总分、排名次等操作时,因使用 BAGIN TRAN.END TRAN (事务处理)语句,不能用 INDEX ON.TAG.OF.命令建立非结构索引文件,于是用不带 OF 的 INDEX .TAG.命令在结构索引文件中追加索引标识,然后再用lnTagCount=TAGCOUNT()FOR i=1 TO lnTagCountlcTagName=TAG(i)IF lcTagName=.DELETE TAG &lcTagNameENDIFENDFOR命令删除追加的索引标识,可总是不能全部删除,经过仔细查找,发现了原因,原来当删除了一个索引标识后,索引标识号立即改变,在其后的索引标识号自动减小一个号,而这个号在 FOR.ENDFOR 循环中已跳过,所以导致删除索引标识时是一个间一个删除,这样待删除的索引如果是紧挨着的话,就不能全部删除。后来改用下列命令后,问题解决。lnTagCount=TAGCOUNT()FOR i=10 TO lnTagCount& 假如原有的索引标识总共有9个,新增的临时用的索引号即从10号开始lcTagName=TAG(10)DELETE TAG &lcTagNameENDFOR(2001.04.10)29、在教师档案新教师建档表单集的主表单 frmJbxx 的 Activate 事件是加入下列代码后,在快速按移动指镇时,总是出现异常错误(错误码C000005 ),可能的错误是当按记录移动按钮时,表单都重新一资激活,系统来不及处理,所以出错。另外,由于有了这些代码,按编辑按钮进行修改后,再按恢复按钮没有恢复。这是由于 GO TOP 代码使记录指镇移动了。THISFORMSET.FrmJbxx.参加工作期1.LostFocus()THISFORMSET.FrmJbxx.从事教育期1.LostFocus()SELECT js_jbxxGO TOP结论,当按按钮组中的按钮时,表单都进行一资重新激活。很大的可能还与按钮中的 THISFORM.Refresh() 代码有关。(2001.04.28)30、编辑教师档案录入表单期间,曾改变 Js_jbxx 的表结构(最高学历的“取得时间”改为“修毕时间”,但后来又变回去),后来在 VFP 环境下执行直接点表单文件执行时能顺利执行,但在执行编译好主程序(表单文件没编译进去),在菜单下执行时,却总是出现“找不到变量修毕时间”的错误信息,根本就没有出现录入界面。从错误的信息看,是由于更新表单的代码行引起。可是我在类库中将这一行注释掉后,还是有问题。我也仍想可能是由于本地视图在原表修改后没有更新,但重建视图后依然如故。后来我改变一下表单环境的 BeforeOpenTable 事件中的原提示信息时,发现在编译后环境下执行没有仍是原提示信息,于是我想这可能有两种情况:一种可能是主程序中调用的表单文件不是修改后的表单文件(即在 VFP 环境下执行的表单文件),另一种可能是表单修改后没有重新编译。这重新编译一下主程序后(表单还是没有编进去,但进行了重新编译),问题解决了。这一折腾花了去不少时间(半天多)。(2001.05.01)31、在对表建立结构化索引时,如果要到复合索引,且字段中包含字段和数值型,此可用“VAL(字符字段)+数值字段”方式,也可“字符字段+STR(数值字段)”,两者看似差不多,但用前一个方法,没有按照预定的要求排序或排序不正确,而后一个方法却没有出现这种现象。(2001.06.07)32、表单集的激活事件(Activate)并不只是在首次启动时发生,每次切换表格集中的不同表单(使其可见)时,都会发生 Activate 事件。所以如果在表单集的 Activate 事件中加类 SET FILTER TO 的命令,该表单集运行期间再设成 SET FILTER TO 姓名=XXXX 之类的过滤在不同的表单时,将全部重置为 SET FILTER TO 。也就是说,表单的 Activate 事件与表单集的 Activate 事件同时发生。(2001.11.06)33、在编程中设定 Combobox 或 ListBox 的 RowSourceType 属性的值为 6 时,应先清除 RowSource 属性值,否则可能会出现“找不到字段表达式”的错误信息。(2001.11.09)34、在编录入教师基本信息的表单,发现一个控件(“姓名1”)中的 LostFocus 事件中如果有代码,须在全部代码执行完后才会离开该控件,所以如果在 LostFocus 中有显示其它表单的代码,当其它表单关闭后,焦点依旧在该控件中,于是就会出现不能离开该控件的情况。所以,如果要离开该控件,须在其它表单的相关代码中加上设置其它控件获取焦点的语句。(2001.11.23)35、切记:在表单或表单集的 Load 事件中不能调用表单中控件的事件或方法,否则会出现不易发觉的错误。在编“报刊订阅登记”模块时,我在表单集的 load 事件中调用了 form1 中的 Dirandiniinfo 控件中的 getinistr() 自定义方法(“lcLastChangeWay=thisformset.form1.Dirandiniinfo1.getinistr()”),结果返回值是莫名其妙的类型:用 type() 函数返回类型是“L”型,可是在 IF lcLastChangeWay=网上 语句没有提示类型不匹配的错误(如果人为的将 lcLastChangeWay=.F.,却会出错);用 Wait windows lastchangeway 语名,该语句不执行也不提示错误;而语句“lcLastChangeWay=thisformset.form1.Dirandiniinfo1.getinistr()”本身也没有提示错误。真地莫名其妙啊!(2002.10.31)35、切记:在用 lcOrder=SET(ORDER) 得到的原索引标识,再用 SET ORDER TO &lcOrder 试图恢复原索引标识时,在下列情况下会出错:原索引标识用的是结构索引文件,且程序安装在类似 Program Filed 的包含空格的文件夹时,将会出错。解决的办法是用 lcOrder=STRTRAN(lcOrder,OF ,OF )+ 命令在结构索引文件(.CDX)的两端加上引号。(2004.01.08)36、在编通用动态报表打印程序时,建立了几个基于 Container 基类的容器控件(有的是直接用 MoverLists 类建立的控件),目前是单击“上一步”、“下一步”按钮时,根据当前操作步骤自动显示或隐藏控件,其中有两三个容器控件中有基于 ListBox 基类的控件。结果运行过程中发现这样的问题:处于前面层的容器中的 ListBox 控件,尽管容器 Visible 设为.F.,还是挡住了后面的层的容器中的 ListBox ,使鼠标不能正常点击后面层容器中的 ListBox 上前层中的 ListBox 控件所处于的地方,而如果程序行将前层中的容器移除,鼠标就可正常点击后面层容器中的 ListBox。解决的办法是:在设置以 Container 基类的容器 Visible 为 .F. 时,同时设置容器中控件(目前只发现 ListBox 类控件)的 Visible 也为 .F.,才不将后面的层中的容器中的 ListBox 控件。(2004.04.08)37、当使用函数 LEN() 或 LENC() 时,需要考虑参数是否为 .NULL. 值,如是,返回值也是 .NULL. ,而不是具体的数值。(2004.04.24)38、在一个 Combo 控件的 InteractiveChange 方法中,用了以下语句,结果其本身不能更新为新值:lnCurrArea=SELECT(0)/SELECT sm_县区代码/lcDsmc=this.DisplayValue/LOCATE ALL FOR 大市名称=lcDsmc/thisform.Txt大市代号.Value=sm_县区代码.大市代码/thisform.Txt县区代号.Value=sm_县区代码.县区代码/thisform.所在县区.DisplayValue=sm_县区代码.县区名称/SELECT(lnCurrArea)后来加了以下语句,解决了问题REPLACE userinfo.所在大市 WITH this.DisplayValue/this.Refresh()(2004.05.14)38、为录入师生档案信息建立一个“师生档案”项目,在编译时总是出现“Ole error code 0x8002802d: Name already exists in ther library”的错误信息。最后找到的原因是有两个类库(Ty_bbfile和Ty_custom)用了相同的类名(dirandiniinfo)。进一步试验后知道,两个下同的类库中用了两个相同的类名,且类的同名方法中都用“DECLARE INTEGER”命令注册了相同的API函数(本例中是“WritePrivateProfileString”),就会出现上述编译错误。解决的方法有两个,一是删除一个类库中的同名类;另一种方法是更改一个类库中的同名类的类名。(2005.02.26)38、一个整数与 RAND() 的返回值比较时,总是不相等的,因为,RAND() 返回 14 位小数,除非将它乘以10的14次方值,否则总是带有小数的,哪怕设置 SET DECIMALS TO 0 也这样。因此,如果需要一个随机整数,一定要用 INT() 函数返回随机数的整数部分。(2005.03.15)39、从表单预览报表或标签时,注意报表或标签的数据环境是否是私有环境,如果是私有环境,即使选择了一个别名,仍然不被报表或标签环境接受。(2005.07.17)40、注意:PADL()和PADR()函数使用时,如果源表达式长度大于设定的长度时,多出的部分将会截断。例如:x=12PADL(x,3,0)=012(正党)x=1269PADL(x,3,0)=126(后面的截断)在编通用单数据表报表时,设定添加的字段对象时用到下列程序行:FOR x=lnAddRecCount+1 TO 100FOR y=1 TO lnSelFieldCountlcBBField=Field+PADL(ALLTRIM(STR(x),2,0)+ALLTRIM(STR(y)IF TYPE(this.&lcBBField)=Othis.RemoveObject(lcBBField)ENDIF ENDFOR ENDFOR 执行的结果,当x=100时,得到的 lcBBField 变量的值是 “Field101”、“Field102”等(而不是“Field1001”、“Field1002”),结果将本不该移除的对象“Field101”移除了,导致不能设定打印超过9个字段。后来将命令行“FOR x=lnAddRecCount+1 TO 100”改为“FOR x=lnAddRecCount+1 TO 99”,问题解决。当然也可以改变 PADL() 中的参数,使其等于或超过 x 达到最大值时的数据位数。(2005.07.20)41、将不同文件夹的文件(超过1个文件的情况)用重命名命令 RENAME 移到同一文件夹下,即使重命名的文件名不同,也会产生文件已经存在的冲突,这大概是因为缓冲的问题,但把不同文件夹的文件(不重名)移到同一文件夹下则不产生冲突。(2006.05.10)42、受 SET COMPATIBLE 影响的命令和函数有 LIKE( ),PLAY MACRO,SELECT( ) 以及 STORE(当 STORE 同数组一起使用时)。如当 SET COMPATIBLE 设置为DB4时,STORE 命令用于数组时,数组将会成为普通变量,引用下标方式使用该数组将会出错。(2010.05.13)疑难问题:1、在 TextBox 等控件的 Value 事件中返回值为 .F. 时,如何用自定义的信息取代默认的“输入无效”信息?自解:自定义输出信息命令,如 WAIT WINDOW 不能为空 NOWAIT ,然后返回空字符串 ,即可达到目的。2、在编写年级建档表单时,需要在Cbo年级1控件的 InteravtiveChange 事件中改变年级建档号和注册号,为此调用了一个自定义的类DirAndIniIfno ,调用该类的 GetIniStr() 方法(内部调用 Win32API 例程)取得学校代码,存放在表单集的 SchoolCodes 属性中。但在Cbo年级1控件的 InteravtiveChange 事件中使用 SchoolCodes 属性值时,却出现了异常现象:表达式 THISFORMSET.SchoolCodes+学年度+学期 中THISFORMSET.SchoolCodes 后面的 学年度+学期 值丢失,只剩下学校代码值,而如果在该表达式前赋给 THISFORMSET.SchoolCodes 一个明确的值如“DJ”,却不发生这种现象,用过程文件的 GetIniStr 自定义函数(内部也调用 Win32API 例程)给 THISFORMSET.SchoolCodes 赋值却不会发生这种现象。这是为什么?(百思不得其解)3、有一个问题:能不能将自定义类 GrdClickHeaderOrder 的列控制源 ControlSource 用 EVLAUATE() 函数,这样设了后能不能根据这个列进行自动排序?(2000.08.05)4、在编通用的查询表单集类“Frm浏览式查询”时,当前索引表格“GrdIndex”的列数由多变少时,会出现异常错误,不知为何?(2000.09.07)5、在编年级班级建档表单时,设计在新建年级的状态下,当改变控件“CBO年级1”的选项,如果还没有建档,则赋给年级建档号(学校代码当前学年度当前学期年级代码)。当年级建档号控件由“THISFORMSET.cSchoolCodes + THISFORMSET.cCurrXndXq + CBO年级1.cNjcodes”赋值时,只显示 THISFORMSET.cSchoolCodes 的值(“DJ”),后面的值都不能显示,哪怕后面直接加字符串如“DSF23”也不能显示。THISFORMSET.cSchoolCodes 属性值通过自定义类的方法中调用 Window 的 API 函数获取,用 WAIT WINDOW THISFORMSET.cSchoolCodes 时亦能正确显示“DJ”,如果用前面用了 THISFORMSET.cSchoolCodes = DJ 语句,则能正确显示。这个问题是否与 THISFORMSET.cSchoolCodes 属性值获取的方法有关,一时弄不清楚。(2001.02.07)6、当对表进行过滤时,使用了后面的表达式:“SET FILTER TO bj_bjzc.学年度=_SCREEN.CurrXnd.AND.bj_bjzc.学期=_SCREEN.CurrXq”,用lcFilter=SET(FILTER) 取得的表达却是“Bj_bjzc.学期.AND._SCREEN.=(CurrXnd)”,以致于用 SET FILTER TO &lcFilter 恢复原过滤表达式时出错。(2001.02.22)7、事务处理期间不能支持非结构化索引,建立结构化索引又必须以独占方式打开数据表,这是个矛盾。(2001.04.10)8、在 ListBox 和 ComboBox 框中,在 AddItem 时,在添加项目前面加“”(如 AddItem(设置字段关联))可使该项不可用(不能选择),可是如果使其可被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能家居系统配备下的二手房交易物业服务合同范本
- 2025年度油气田采矿权出让合同范本
- 2025年度爆破拆除工程安全生产责任及事故赔偿合同
- 2025年免疫治疗对自身免疫性多发性硬化症治疗的应用进展报告
- 2025房产代持及不动产交易保障服务合同
- 2025版聘用外籍IT专家合同范本
- 2025年度绿色建筑推广房屋代销合作协议
- 2025年拆墙工程智能化管理系统租赁合同
- 2025年度国有企业财务共享服务中心升级改造合同
- 2025年度企业高级管理人员综合素质提升协议
- 眼的生物化学讲义
- GB/T 3098.15-2023紧固件机械性能不锈钢螺母
- 陈琦《教育心理学》课件
- 封头理论重量计算公式
- 护理副高职称答辩5分钟简述范文
- (3)-2-1-药物的跨膜转运
- 幼小衔接资料合集汇总
- 八年级数学平面直角坐标系测试题
- GB/T 28575-2020YE3系列(IP55)三相异步电动机技术条件(机座号63~355)
- 储油罐有限空间作业安全技术措施表
- 传媒公司员工劳动合同(标准版)
评论
0/150
提交评论