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


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

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

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


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
[原创] 经验谈:关于在狐表中使用SQL语句。  发帖心情 Post By:2008/11/16 17:09:00 [显示全部帖子]

我用一条语句,来查询会计数据库中的会计凭证,同时引用狐表中的全局变量 vars("账套")  、vars("开始日期")和 vars("结束日期")。
这条代码是可以正确执行的:
Dim q As new QueryBuilder
q.TableName = "会计凭证查询"
q.ConnectionName = “会计数据库”
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查询。

[此贴子已经被作者于2008-11-17 21:46:54编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/11/16 19:19:00 [显示全部帖子]

以下是引用gdtgl在2008-11-16 18:03:00的发言:

注:楼主说学sql语言。我也认同sql基本的很值得学,我今天也在试用foxtable写个小管理软件的感想:
foxtable是打开表时1次加载....但不同人录单,数据已有变化,就需要使用到sql语言,了解后台数据的变化.(目的是写不重复的,按每年从新开始编号)

foxtable本身的语言+ 简单的sql语言,二者用好。做很多系统根本不成问题了。


非常认同这个观点,目前狐表是一次性加载数据,集中处理,不能实时更新数据。虽然老六说保存和同步的速度较快(只保存修改了、新增了的行),但我还是感觉慢了!

所以,在狐表中运用一下SQL查询,效率提高不少。

建议,狐表在支持SQL方面,要灵活一些,这个我已多次提出建议了!
建议,帮助文件中关于SQL查询方面的例子多些,深入一些!


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


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/11/16 20:32:00 [显示全部帖子]

数据源中有几十万条数据,计时器每一分钟用SQL查询提取一次,必需限定条件,比如日期、编号等等,否则速度还是吃不消。

这也是我在一楼提到的方法,将全局变量放到sql查询里面。

不过,有时我一分钟也等不了,只有将它放到窗口按键里,手动执行。


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


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/11/17 21:40:00 [显示全部帖子]

sql语句中字符也要用‘’包起来的,只有数字不用‘’包起来。

对于代码,我实在是看不出来的时候,通常一步步地试,到哪一步不能正常执行,就是哪一句有问题!

再就是复制一下帮助中的东西,只改一下变量,就成了自己的。所以,建议将帮助细化,具体化,例子多些。

笨办法,基础差啊!

有时,我也在CSDN去问问高手们,那里能人太多!      看不懂的东西占多数!
[此贴子已经被作者于2008-11-17 21:44:47编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1037 积分:7428 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2008/11/17 21:48:00 [显示全部帖子]

图片点击可在新窗口打开查看
小狐

复制错了一行,已改正。

 回到顶部