标题:在VFP中,怎么把这个动态查询条件到SQL2000执行
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
已结贴  问题点数:10 回复次数:6 
在VFP中,怎么把这个动态查询条件到SQL2000执行
在VFP中,怎么把这个动态查询条件到SQL2000执行啊。。
bh1=allt(thisform.text1.value)
sex1=allt(thisform.text2.value)

cwhere=''
if not empty(bh1)
   cwhere=iif(empty(cwhere),'bh=?bh1','bh=?bh1'+' and '+cwhere)
endif
if not empty(sex1)
   cwhere=iif(empty(cwhere),'sex=?sex1','sex=?sex1'+' and '+cwhere)
endif
**不知道是不这样

TEXT TO sql_str NOSHOW
SELECT BH ,XM,SEX,
  FROM sql_dbf
  where          ---这理这么写啊?如果不用参数,直接写 where bh=?bh1 and sex=?sex1,是可以查到数据
  ORDER BY bh
ENDTEXT
SQLEXEC(nhandle,sql_str,'sql_dbf')
求完善。。
搜索更多相关主题的帖子: where 动态 
2015-07-08 00:29
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
得分:5 
bh1=allt(thisform.text1.value)
sex1=allt(thisform.text2.value)
cwhere=''
IF not empty(bh1)
   cwhere=cwhere+"bh=?bh1 and "
ENDIF
IF not empty(sex1)
   cwhere=cwhere+"sex=?sex1 and "
ENDIF
IF NOT EMPTY(cwhere)
    cwhere=" where "+LEFT(cwhere,LEN(cwhere)-4)
ENDIF
sql_str="SELECT BH,XM,SEX,FROM sql_dbf"+cwhere+" ORDER BY bh"
SQLEXEC(nhandle,sql_str,'sql_dbf')
2015-07-08 09:13
hepingfly
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:195
专家分:657
注 册:2015-5-21
得分:5 
2楼答案很正确。或者:
......
......
TEXT TO sql_str noshow text pretext 7
 SELECT BH ,XM,SEX,
   FROM sql_dbf
   where <<cwhere>>      
   ORDER BY bh
 ENDTEXT
 SQLEXEC(nhandle,sql_str,'sql_dbf')


星际花草
2015-07-08 10:46
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
TEXT TO sql_str noshow text pretext 7
 SELECT BH ,XM,SEX,
    FROM sql_dbf
    where <<cwhere>>      
   ORDER BY bh
 ENDTEXT
 SQLEXEC(nhandle,sql_str,'sql_dbf')
 
你这个红字的部分,TEXT TO sql_str noshow text pretext 7,好像有他,<<CWHERE>>能正常,没他,不正常,什么意思。
2015-07-08 16:39
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
还有就是<<   >>,是什么意思,好像要配合text pretext 7?我在VFP中显示
?SQL_STR
有text pretext 7时,<<CWHERE>>位置显示CWHERE的值,没text pretext 7时,显示的是<<CWHERE>>,,,
什么意思?我在网上查了,还有text pretext 2的??
有这个TEXT TO的用法不?
2015-07-08 16:57
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
TEXT TO sql_str NOSHOW  TEXTMERGE PRETEXT 4
好像只要有TEXTMERGE,<<CWHERE>>就显示值
set textmerge 命令
指定是否对文本合并分隔符括起的字段、内存变量、数组元素、函数或表达式进行计算,并允许指定文本合并输出。
剩下的就是<< >>不知道什么意思了。
我把<< >>换成( )没用,换成&,也没用,换成&( )也没用。
换成?EVALUATE("CWHERE"),也没用。


[ 本帖最后由 mywisdom88 于 2015-7-8 17:24 编辑 ]
2015-07-08 17:16
hepingfly
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:15
帖 子:195
专家分:657
注 册:2015-5-21
得分:0 
楼主好学好问,精神可佳呀。vfp 的帮助文件介绍的比较详细。不难的,看看肯定明白。
我只简单的说一下:当设定了 TEXTMERGE 允许计算,或 PRETEXT 插入文本模式,text ....endtext 的参数,会以计算结果值出现。参数值一定要用 <<...>>,括起来,表示是‘是一个可变的参数’,让这个参数显示出他的计算值。



星际花草
2015-07-08 18:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455176-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017749 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved