主题:请指教这段代码有什么错误?
yin710
[专家分:0] 发布于 2011-02-04 14:20:00
各位老师好
请指教这段代码有什么错误
sele 数据表
tj="地址="+ALLTRIM(thisform.combo1.displayvalue)+"and "+BETWEEN (日期) ALLTRIM((DTOC(thisform.text1.value) and DTOC(thisform.text2.value))+""
提示缺少参数。
回复列表 (共8个回复)
沙发
qjbzjp [专家分:8830] 发布于 2011-02-04 18:05:00
如果两个文本框都是字符型的,试试:
tj="地址="+ALLTRIM(thisform.combo1.displayvalue)+"and "+;
BETWEEN (日期,CTOD(thisform.text1.value),CTOD(thisform.text2.value))+""
板凳
moz [专家分:37620] 发布于 2011-02-04 20:16:00
在连接字符串的时候,要注意几个问题.
1.空格,如果两个字符串的首尾相连的地方都是字母,就会出现语意上的错误,为了避免这种错误,可以添加额外的空格.
2.引号,双引号和单引号都是字符串的定界符,但要对应使用,两个匹配的引号中间的内容,会被认作是一个字符串常量
3.字符串中的引号,我们字符串中需要使用引号的时候,都会用双引号来括住单引号,单引号来括住双引号.
在你的例子当中,最后的两个双引号很明显的是没有意义的.
来看看你想连接的几个子串
第一个: "地址=" 这个子串没错,后面用加号连接
第二个: alltrim( ) 字符串函数
第三个: "and" 当上一个函数的结果,字符串的末尾是字母的时候,你得到的判断语句就有问题了,
所以这个时候,应该使用额外的空格来隔开, " and " 或者是 " .and. "
第四个: between(日期) 这个函数的书写格式明显错误,一楼已经帮你改了,但between()函数里面的三个参数的
类型一定要一致.括号配对也一定要一致.另外,对于日期的比较,
使用日期类型比字符串类型比较要好.
按照我的猜想,你应该是需要这个句子:
tj="地址="+ALLTRIM(thisform.combo1.displayvalue)+" and BETWEEN(ctod(日期),thisform.text1.value,thisform.text2.value)"
另外,我以前常哆嗦的是,在SQL的条件语句里,尽量避免使用控件属性,而应该使用中间变量.
3 楼
yin710 [专家分:0] 发布于 2011-02-04 21:54:00
2位老师好:我的组合框是字符型的,文本框是日期型的
你们的代码我用了,提示错误语句。
4 楼
qjbzjp [专家分:8830] 发布于 2011-02-04 22:39:00
“日期”字段是什么型的?
5 楼
moz [专家分:37620] 发布于 2011-02-04 22:41:00
我在想,是我多事了.废话了一大堆.
6 楼
sywzs [专家分:5650] 发布于 2011-02-05 06:59:00
字符型数据一定要加引号!!!
tj="地址='"+ALLTRIM(thisform.combo1.displayvalue)+"' and BETWEEN(ctod(日期),thisform.text1.value,thisform.text2.value)"
7 楼
qjbzjp [专家分:8830] 发布于 2011-02-05 13:37:00
如果“日期”字段是日期型:
tj="地址='"+ALLTRIM(thisform.combo1.displayvalue)+"' and BETWEEN(日期,thisform.text1.value,thisform.text2.value)"
8 楼
yin710 [专家分:0] 发布于 2011-02-05 13:47:00
谢谢各位老师,能行啦
我来回复