回 帖 发 新 帖 刷新版面

主题:请指教这段代码有什么错误?

各位老师好
请指教这段代码有什么错误
sele 数据表
tj="地址="+ALLTRIM(thisform.combo1.displayvalue)+"and "+BETWEEN (日期) ALLTRIM((DTOC(thisform.text1.value) and DTOC(thisform.text2.value))+""
提示缺少参数。

回复列表 (共8个回复)

沙发

如果两个文本框都是字符型的,试试:
tj="地址="+ALLTRIM(thisform.combo1.displayvalue)+"and "+;
BETWEEN (日期,CTOD(thisform.text1.value),CTOD(thisform.text2.value))+""

板凳

在连接字符串的时候,要注意几个问题.
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 楼

2位老师好:我的组合框是字符型的,文本框是日期型的
你们的代码我用了,提示错误语句。

4 楼

“日期”字段是什么型的?

5 楼

我在想,是我多事了.废话了一大堆.

6 楼

字符型数据一定要加引号!!!
tj="地址='"+ALLTRIM(thisform.combo1.displayvalue)+"' and BETWEEN(ctod(日期),thisform.text1.value,thisform.text2.value)"

7 楼

如果“日期”字段是日期型:
tj="地址='"+ALLTRIM(thisform.combo1.displayvalue)+"' and BETWEEN(日期,thisform.text1.value,thisform.text2.value)"

8 楼

谢谢各位老师,能行啦

我来回复

您尚未登录,请登录后再回复。点此登录或注册