你甚至可以稍作修改就在你自己的程序中使用该表单。
我曾经就其原理写了一篇文章《交互式建立sql复合查询-vfp示例应用程序详解》贴在网易虚拟社区
VFP版,有兴趣的朋友可以在精华区查到,读完该篇文章,你应该可以自行修改该程序使之能够对一对多数
据库进行查询了。因为该文篇幅很长,又比较枯燥,就不在这儿解说了。
要注意的是:原示例程序用于生成sql语句查询。要改为用于建立sql视图,必须作一些修改:
1、在sql查询中不必限定表别名和数据库名,而建立sql视图却必须这样做。因此需要修改makesql表单的
自定义方法bldsql的代码,将源代码下面的部分:
**************************************************************************
IF !EMPTY(lcOperand)
lcValue2 = THISFORM.ValidateType(THIS.cboField2.Value,lcValue2)
lcWHERE = lcOperand + " " + lcField2 + " " + ;
lcRelation2 + " " + lcValue2
ENDIF
** Create the first part of the WHERE condition
lcWHERE = "WHERE " + lcField1 + " " + lcRelation1 + " " + lcValue1 + " " + lcWHERE
** Create the full SQL command using the base table for the form
lcSQL = "SELECT * FROM " + lcAlias + " " + lcWHERE
****************************************************************************
修改为:
****************************************************************************
If !empty(lcOperand)
lcValue2 = thisform.ValidateType(this.cboField2.value,lcValue2)
lcWhere = lcOperand + " " + lcAlias + "." + lcField2 + " " +;
lcRelation2 + " " +lcValue2
Endif
lcWhere = "Where "+ lcAlias + "." + lcField1 + lcRelation1 + " ";
+ lcValue1 + " " + lcWhere
lcSql = "Select * From " + "DatabaseName!" + lcAlias + " " + lcWhere
****************************************************************************
DatabaseName是你的数据库的名字。以上修改的实质是,给要查询的字段名限定其所在的表别名,给
select form的表别名限定所属的数据库。
2、修改Run
| 对此文章发表了评论 |
