Foxtable(狐表)用户栏目专家坐堂 → [原创] 经验谈:关于在狐表中使用SQL语句。


  共有28413人关注过本帖树形打印复制链接

主题:[原创] 经验谈:关于在狐表中使用SQL语句。

帅哥哟,离线,有人找我吗?
kylin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19229 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/11/17 8:20:00 [显示全部帖子]

以下是引用wcs在2008-11-16 17:09:00的发言:

我用一条语句,来查询会计数据库中的会计凭证,同时引用狐表中的全局变量 vars("账套")  、vars("开始日期")和 vars("结束日期")。
这条代码是可以正确执行的:
Dim q As new QueryBuilder
q.TableName = "会计凭证查询"
q.C
dim s as string
    s =  "select * from [z_tablqpz] where sszt = "&vars("账套")&" and cast(cast(pzrqn as char(4))+'-'+cast(pzrqy as char(2))+'-'+cast(pzrqr as char(2)) as datetime) between '"&vars("开始日期")&"' and '"&vars("结束日期")&"'"
q.SelectString = s
q.Build


如果将'"&vars("开始日期")&"' and '"&vars("结束日期")&"'  改成  "&vars("开始日期")&"  and '"&vars("结束日期")&" 那是没有执行结果的。
但是,同样是引用全局变量,"&vars("账套")&" , 两边不能有‘’。

为这个搞了几个小时,一直以为SQL语句本身有问题,原来问题出在这个地方。

经验小结:在where  中,如果比较的是列的值,则不用‘’,如果比较的是表达式生成的值,则要用‘’。
我不明白为什么,但这样可以搞定查询。


说明:这条查询用来查询SQL数据库中的会计凭证(几十万条),但源库里的年、月、日是分别以整数存放的,非得将它们整到一起,再用全局变量限制查询结果,没办法,只有用SQL查询来解决问题!
        SQL查询的功能很强大,有些功能也是狐表无能为力,为此,还是要研究一下SQL查询。

先收藏经验,以后有用,顶一个,呵呵


 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19229 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2008/11/17 10:17:00 [显示全部帖子]

以下是引用狐狸爸爸在2008-11-17 9:45:00的发言:

呵呵,foxtable并没有自己的sql语法的,sql的语法完全由你自己使用的后台数据库决定。

动态合成sql语句的时候,必须保证所合成的语句符合sql语法,而检察的方法也很简单,在命令窗口:

dim s as string
    s =  "select * from [z_tablqpz] where sszt = "&vars("账套")&" and cast(cast(pzrqn as char(4))+'-'+cast(pzrqy as char(2))+'-'+cast(pzrqr as char(2)) as datetime) between '"&vars("开始日期")&"' and '"&vars("结束日期")&"'"
output.show(s)

大多数时候,目测输出的语句,即可看出问题所在,实在不行,将输出的语句复制到查询表定义窗口进行测试。

2个好办法,顶


 回到顶部