发现一篇好文章,不敢独亨:《Visual FoxPro 7.0漫谈》(5分)

  • 主题发起人 我爱PASCAL
  • 开始时间
misai:你这位朋友的软件我下了一个,排除其在业务方面的水平,单就VFP
连数据库都不用,就用自由表,可能发挥不了VFP的全部潜力,是我所见的VFP软件
中很一般的,单就技术方面,还不及我编的《概预算》,用了大量的存贮过程触发
器,索引字段的值可随意改而不影响数据完整性。其中对表格的使用是我在VFP任何
书上都没有看到的,是我自己练出的秘技。也就是在一个表格中显示多个表的字段,
而这几个表又是多层的主从关联的,不知有没有哪位用过此法?
当然你这位朋友的业务水平一定是很出色的,还有商业头脑。

同意影子,孙悟空寻么好的功夫还挑兵器得很呢。

 
呵呵!当然要选兵器,兵器也很重要。
但选兵器不是一定要最好的,而是要最有用的。
比如你要打死一只fly,你用苍蝇拍就很好,我们不可能去选原子弹。

的确,DELPHI很强大,能很好的完成很多工作;但在处理桌面数据库方面,不一定
比VFP快,方便或是灵活。(申明,我是Delphi的忠实追随者)

兵器是死的,人是活的,我们干什么事就选什么样的兵器,不要抱着一样不放。
 
 
  一年多没写过数据库相关的程序了(所写的程序保存的数据量不大,都用文件保存)。虽然已经遗忘得差不多,
不过对数据库的兴趣丝毫未减。所以希望BeginDelphi能举例说明:“但在处理桌面数据库方面,不一定比VFP快,方便或是灵活”,
方便写桌面数据库程序时参考用VFP(如果有下辈子的话)。
  还有人用苍蝇拍吗?我们总不能一边吃饭一边拿着苍蝇拍吧?呵呵。
  “兵器是死的”,所以苍蝇拍过时了,我们就应该放弃它。“人是活的”,
所以我们总能制造比苍蝇拍更好的工具(到饭店吃饭总能看到挂在墙上的电灭蝇器)。
  Pc 狂迷 的回复中有句名言:
    “守旧,其实是一种害怕失去了一向保持的优势,而抗拒进入新领域、接受新事物的行为。”---陈宽达
 
 
OK!Voxpro中的宏替换,能方便的实现脚本功能,能方便而有效的实现一些特殊
的查询,请问:这种功能怎么实现?

呵呵!因为要适应时代的变化,因为有苍蝇拍变成灭蝇器的必要,所以M$推出了
VFP 7.0。
 
  
本人很菜,不懂宏替换。
不明白实现脚本功能是什么意思。不过在Delphi中是不能直接使用VBScript或者JScript的。不过,有这个必要吗?优点是什么?
特殊的查询是指什么?是指根据不同的条件查询不同的DBF数据库吗?呵呵。对于多表的程序,我更喜欢用关系型数据库。

呵呵!鸡肋有的时候很烦人的。吃之无味,弃之可惜。[:)]
 
 
拉圾fox系列,这样的工具还有人用,Foolish
 
看了一半,太长,眼睛花了!
对VF 的印象在于:大学开了门课,考及格后再也没动过它.
现在拒绝使用它.
看样子VF确实有过辉煌,也有过人之处.然不得不遗憾的说它现在已经到达末落时代.
由此得感于我们的Delphi,希望 Delphi能保持现在的辉煌,不要走到VF的路子上.
希望各位Delphi的fans共同努力.更希望Borland争气些,不要再闹什么危机之类的东东.而给
注入Delphi以更强的生命力.我们正在期待Borland与Delphi再造奇迹.我们祝愿 Delphi
明天更美好!
 
下面是俺用VFP5工作时的笔记,唉,那段日子啊一提起来俺就伤心!
现在?啊!把VFP从硬盘中御载的感觉真爽呀!

1、 函数可以当作过程来调用,但其参数传递有所不同。作函数用时默认(未用SET UDFPARMS TO VALUE | REFERENCE改变)传值,用作过程使用时传指针。
2、 容器类如何管理对象成员?????
3、 对象不能取消自己。必须由其父对象管理。
4、 远程视图根本不能利用数据库服务器的数据完整性约束。
5、 如果你想使用数据库服务器的游标而不是VFP挂羊头卖狗肉的游标,须如下去做:
A、用SQLEXEC(连接句柄,'DECLARE 游标名 SCROLL] CURSOR FOR SELECT语句')声明游标,打开它。到此与正常方式并无不同。
B、使用SQLSETPROP(连接句柄,'BatchMode',.F.)取消批处理方式;
C、每执行一个SQLEXEC(连接句柄,'FETCH OR|NEXT] FROM 游标名')函数。之后,要一个SQLCANCEL(连接句柄)函数。即便游标到头/尾也要这样。否则将导致游标出错,服务器为一直等待下去并禁止往游标所指表插入。
D、如果结果集(默认为SQLRESULT)为空:bof()=eof(),则游标已移到表首或表尾。
6、 不管VFP5.0的文档说了些什么,当你想捕获一个错误时,下列语句在真有错误发生时,永远都只能输出-1:on error ? message()
7、 不管VFP5.0的文档说了些什么,子类的方法永远不会自动调用它的父类的方法,连INIT和DESTROY方法也不能。你只能在子类的方法中显式地调用,至于定义方法时所用到的关键字:NODEFAULT,只是VFP的装饰品。但FORM设计器产生的用户FORM除外。
8、 如果你从未使用某个.bmp文件,但在项目联编过程中VFP却发出“找不到xxxx.bmp的错误,并在错误信息窗口中注明在某个表单中产生了此错误,那么可以肯定:
在此表单中有一些图形按钮,VFP错误地自动将其属性:MouseIcon设定了一个文件。解决方法是按鼠标右键,选中“恢复为默认值”菜单。
9、 空串与任意字符串相等。
10、在VFP的类中,没有默认的this指针,即便是在类的方法中引用这个类的其它方法或属性,也要显式地写出this。
11、TextBox类的Format属性中的‘T’描述符,从来不起作用。如果你想删除输入串的首尾空格,最好还是在CLICK()方法中写上: this.Value=Alltrim(this.Value)
12、在VFP5.0中,最好不要用FORM的衍生类,因为FORM衍生类的实例只能以模态存在或用READ EVENTS维持,在READ EVENTS被清除前,其它FORM不能被被激活。必要时可以用 DO FROM 表单文件名 NAME 变量名 建立多文档界面。
13、如果将一COMBOBOX对象的RowSourceType属性设为“字段”,将RowSource设为一临时表的某一列,那么当表为空时,下拉框中将显示列名。应在表空时调用Clear()方法清除下拉框。
14、如果将列表原始状态的Enabled属性设为.F.,在初始化时将不会从行源RowSource读取数据。
15、在COMBOBOX对象中,新输入的值只在Text属性中,从列表中选择
的值同时在Text和Value中,当输入新值时,新值仅在Text中。但当COMBOBOX为下拉列表风格(只读)时,选择值只反映在Value中,且Text属性只读。如要为COMBOBOX赋初值,须在INIT方法中写上this.value=<字符串初值>,COMBOBOX只接受字符串。
16、如果一个COMBOBOX对象的RowSource是数据环境中某一视图的列值,且在运行时数据源发生了插入或更新,但视图并不会自动更新,需要调用数据环境对象的CloseTables()和OpenTables()强迫其更新。只有插入列表的选择项才能在输入框中存留,同时,也只有RowSourceType为1,才能插入。
17、Refresh()方法的执行与控件使能与否无关。初始化时都要执行。
18、千万不要用VFP操作真正的数据库,如果表中有两个以上的完整性约束,如一个主键加两个外键,用SQLEXEC()传递SQL的插入指令不能成功,将插入指令放在存贮过程中亦不行,但在存贮过程中的插入指令之前多加入一些其它操作则存贮过程可成功执行。
19、若用STR()转换小数,如不说明转换宽度和小数位数则小数部分会被截去。
20、执行RUN /N <WINDOWS应用程序名>命令可加载VFP的另一实例。
21、Parameters命令可以用来传送命令行参数,参数可以有多个,都以字符串型传入;但Parameters()函数却不能返回命令行参数的个数。
22、OptionGroup的Value属性被赋值时,只能先被赋为0,然后才可能接受其它的赋值。如果直接赋于一个非零值,仍被当作0值处理。
22、如使用ODBC异步连接,当前台数据处理速度高于后台数据传送速度时,将发生连接错误。使用较大的数据包(如8192BYTE)可大大改善连接性能。
23、NULL参与关系运算结果都为FALSE
24、在进行如下逻辑运算时:? .F. and error_exp 由于进行了优化,在确认表达式值不可能为.T.前提下,右侧的 error_exp不再进行计算。即便在error_exp中含有错误,也不会导致运行时错误发生。
25、如果在程序中申请一个与SQL数据库的连接,用下列SQL命令插入数据:INSERT dbo.table1(boolean1) values(?v1)其中boolean1为SQL Server数据库的BIT类型,v1是VFP的数据型变量。该命令的执行结果总是插入一条boolean1的值为1的新记录,无论v1=0.0或v1=1.0
 
我也是用VFP过来!!造诣绝对比你高!!
小伙,你认真的用一个月DELPHI后,你就不想用VFP了!!
 
哎,迟了!如果四、五年前发表此文,绝对受欢迎呀!
 
鎴戞槸浠嶥OS鏃朵唬璧拌繃鏉ョ殑锛岀紪鍐欎竴涓?竴鑸?殑鏁版嵁澶勭悊绋嬪簭濡備汉浜嬬?鐞嗙郴缁燂紝浣跨敤涓嶅悓鐨?
 
顶部