|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。几近每一个完全的使用程序城市必要一个复合查询。创建一个功效壮大的复合查询起首必需要可以静态
天生查询前提,其次应当可以对查询到的数据举行修正,最初这个复合查询最好可以对一对多的两个表建
立前提举行查询。
在VFP里创建查询的办法次要有这么几种:一是利用VFP中自带的SearchClass类;二是创建一个查询;
三是创建一个视图,个中包含参数化视图、宏交换Sql语句视图;四是创建一个Grid,将其数据源设置为
SQL语句或一时表。
不论哪种办法,实在质都是利用SQL语句。
这几种办法各有各的长处,也都出缺点。
创建查询的办法最古板,只能创建流动前提的查询,而且不克不及更新数据,最不克不及满意请求。
SearchClass类功效壮大,可是它只能对一个表创建前提举行查询,而且它的源代码太庞大了,几
乎难以举行修正定制;(初学者想必都有过用表单导游创建表单后试图修正txtbtn类、SearchClass类
的履历吧!看到源代码后有几个没昏迷?)
用将Grid的数据源设置为SQL语句或一时表的办法没法修正/更新数据,革新数据也对照坚苦。(这
方面的成绩在网易假造社区VFP版上有过很多会商,人人能够往看看。)
创建视图的办法中,参数化视图也太复杂。不论是用表单控件的值作参数仍是用给参数两头加上引
号的办法都只能对流动的字段举行查询。假如是复合查询,岂非要先创建几十个视图吗?
最有出路的举措仍是用宏交换SQL语句创建视图的举措。视图有着可以对数据举行修正/更新的长处,
假如可以静态天生查询前提,那末就是最完善的查询了。
创建宏交换sql语句视图的详细举措是先静态天生一个Sql语句sqlstatement,然后用宏交换的办法使
用CreateSqlviewviewnameas&sqlstatement来静态创建视图,最初将数据静态显现在一个Grid控
件中。
看到这里,VFP年夜虾们怕会大呼:Stop!你当我是菜鸟啊!你的举措从实际上固然行的通,但实践做
起来就会碰着查询了局在表格上数据没法革新的困难。俺早就试过不可了!你想骗稿费啊!
嘿嘿,这个困难恰恰给我办理了!这就是我意气扬扬的写这篇文章的缘故原由!
成绩的办理
==========
几个月前(好不幸^0^.....),我参照VFP的Sample中的Solution里的InteractivelyBulidasql
statement示例创建了一个复合查询,想将它集成到我本人的程序中。因为该示例是用browse窗口来显现
查询了局的,而我本人的使用程序利用了顶层表单,了局编译后运转才发明Browse窗口在顶层表单中没法
显现。因而我创建了一个有两个表单的表单集,用一个表单makesql静态天生sql语句,在另外一个表单
form1上用grid来显现查询了局的数据,在给Grid设置数据源的时分,成绩来了。起首利用一时表来作为表
格的数据源,了局第一次查询准确,变动前提举行第二次查询时碰着了尽人皆知的“不克不及更新一时表“的错
误;利用sql语句却是能够,但是在表格显现数据前会稀里糊涂的先呈现一个Browse窗口,必需封闭它后
才会显现表格,因为browse窗口在利用顶层表单的程序中没法显现,了局招致程序没法持续实行,这个办
法也不可。
最初只能利用Createsqlviewviewnameas&sqlstatement的举措了,先任意创建一个视图
tempview,把表格的Recordsourcetype属性设置为1-别号,Recordsource属性设置为视图别号tempview,
在表单makesql上创建sql语句后的代码中利用createsqlviewtempviewas&sqlstatement创建视图
Tempview.
实行后发明,第一次查询准确,变动查询前提后再次查询,呈现“视图已存在,要改写吗?“的情形,
按下“断定“后,呈现的表格中没无数据。
制止呈现对话框的成绩好办理,在创建视图前先用renameviewtempviewtooldview,然后用
Deleteviewoldview将旧的视图删除就能够了。代码以下:
****************************************************************************
setdatabasetodatabasename&&databasename是你的数据库称号
&&注重:即便你翻开了数据库也必需写这个语句!不然会呈现“找不到数据库“的毛病。
ifused(“tempview“)
renameviewtempviewtooldview
deleteviewoldview
endif
Createsqlviewtempviewas&sqlstatement
=requery()
IF_TALLY=0
#DEFINEMSG_LOC“没有找到切合前提的记录!“
#DEFINETITLE_LOC“没有找到记录“
=MESSAGEBOX(MSG_LOC,64+0+0,TITLE_LOC)
ELSE
thisform.hide
thisformset.form1.show
Endif
*****************************************************************************
可是如许做了今后,表格上没无数据的成绩仍旧存在。查找材料后发明,用Createsqlview语句编
程创建视图的办法,创建视图后要先保留视图界说,再翻开视图后视图中才无数据。因而,必需将Creat
sqlview语句部分代码修正以下:
************************************************
Createsqlviewtempviewas&sqlstatement
use
usetempview
************************************************
满觉得这下成绩办理了,了局更惨。呈现的表格上不仅没无数据,连表头、网格都不见了!这个成绩
百思不得其解,查找材料也没有了局,最初不了了之,一向困扰了我几个月。
就在昨晚,我上床的时分俄然灵光一现:既然表格没法静态加载数据源视图,那末爽性连包括表格的
表单也静态天生!只需表单静态天生,那末表单上的表格工具的数据源不就完整从头加载了吗?也用不着
革新甚么的了!并且,用这个办法也用不着先创建一个tempview视图,完整在程序中静态天生就能够了。
主张必定,即刻下床下手。将本来包括表格的表单form1删除,在上述的代码中最初一句
thisformset.form1.show前拔出以下代码:
*************************************************************
thisformset.addobject(“form1“,“form“)
withthisformset.form1
.</p>ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊! |
|