一个参数视图的问题

myperry 2003-08-23 10:00:14
一个参数视图如下:
SELECT L_cansh.bianh, L_cansh.minch, L_cansh.lib;
FROM ;
L_cansh;
WHERE L_cansh.lib = ?lc_m1 ;
ORDER BY L_cansh.minch

当lc_m1='C'时返回内容如下:
bianh minch lib
1012 "焊接面" "C"
1023 "无字符" "C"
1011 "元件面" "C"

请问:当lc_m1为何值时,可以返回L_cansh表中的所有内容?
或者说以上视图应该如何写,才能按要求返回部分内容或全部内容?
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiolig 2003-08-29
  • 打赏
  • 举报
回复
刚才对最后一情况进行了简单的测试,证明用手工方式建立视图是可行的,如:
*PROCEDURE myProc
PARAMETERS pcLib,pcMl
RETURN EMPTY(pcMl) OR pcLib=pcMl

CREATE VIEW 视图1 AS SELECT ... WHERE myProc(L_cansh.lib,?lc_ml)

*如果输入的参数为空,则返回全部数据
xiolig 2003-08-29
  • 打赏
  • 举报
回复
核心问题是:如何解决同一参数的多次引用问题?
根据执行查询前参数是否已经存在,分两种情况讨论:
一、参数在执行查询前存在(即已经赋值):
这种情况下最简单,不必担心参数的重复引用问题,如:
SELECT ... WHERE ISNULL(?lc_ml)=.T. OR L_cansh.lib=?lc_m1 ...
二、参数在执行查询前不存在,查询时自动弹出对话框要求用户输入
这种情况下重复引用会导致多次输入提示,就象是不同的查询参数
也许可以用自定义函数的办法解决,但无法在视图设计器中调用自定义函数
不用视图设计器建立视图的情况下未经测试。
xiolig 2003-08-29
  • 打赏
  • 举报
回复
SELECT-SQL 在进行字符串比较时,似乎总是用不完全比较(若不是,SET EXACT OFF)
利用这一点,只需要把对查询参数赋值为空串(长度为零)即可返回所有记录。
myperry 2003-08-29
  • 打赏
  • 举报
回复
更正一下:

当lc_m1='A'时返回内容如下:
1017 "GG1 " "A "
myperry 2003-08-29
  • 打赏
  • 举报
回复
一个L_cansh表的内容如下:
bianh minch lib
1012 "焊接面" "C"
1023 "无字符" "C"
1011 "元件面" "C"
1013 "M1" "B"
1014 "N1" "B"
1017 "GG1" "A"
1019 "GG3" "D"

一个参数视图如下:
SELECT L_cansh.bianh, L_cansh.minch, L_cansh.lib;
FROM ;
L_cansh;
WHERE L_cansh.lib = ?lc_m1 ;
ORDER BY L_cansh.minch

当lc_m1='C'时返回内容如下:
bianh minch lib
1012 "焊接面" "C"
1023 "无字符" "C"
1011 "元件面" "C"

当lc_m1='C'时返回内容如下:
1017 "GG1" "A"
------------------------------------------------------

请问:
当lc_m1为何值时,返回表全部内容:
bianh minch lib
1012 "焊接面" "C"
1023 "无字符" "C"
1011 "元件面" "C"
1013 "M1" "B"
1014 "N1" "B"
1017 "GG1" "A"
1019 "GG3" "D"
mgan 2003-08-23
  • 打赏
  • 举报
回复
SELECT L_cansh.bianh, L_cansh.minch, L_cansh.lib;
FROM (sele lc_m1 from 表 where lc_m1='c' ) order by L_cansh.minch


不知道是不是符合你的意思?

2,749

社区成员

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

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