Foxtable(狐表)用户栏目专家坐堂 → 查询表代码转化


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

主题:查询表代码转化

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


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
查询表代码转化  发帖心情 Post By:2013/11/21 8:28:00 [只看该作者]

老师:您好!

      我想把通过查询表生成器生成的代码放在窗口中使用,该如何实现?能否给个示例?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/21 8:35:00 [只看该作者]

把查询表生成的SQL 直接填写到 窗口表的SQL语句中去,把表类型设置为SQLQUERY

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/21 9:01:00 [只看该作者]

还可以看看这个:
http://www.foxtable.com/help/topics/1909.htm


例如:
 
Dim jb As New SQLJoinTableBuilder("查询表1","订单")
jb.Connection Name = "Sale"
jb.AddTable("订单","产品ID","产品","产品ID")
jb.AddCols("产品名称", "日期", "数量","单价")
Tables("窗口1_Table1").DataSource = jb.BuildDataSource()

 

如果你想用2楼直接写sql语句的方法,但是自己不会写,可以看看:

http://www.foxtable.com/help/topics/2317.htm

 

例如在命令窗口执行:

 

Dim jb As New SQLJoinTableBuilder("查询表1","订单")
jb.Connection Name = "Sale"
jb.AddTable("订单","产品ID","产品","产品ID")
jb.AddCols("产品名称", "日期", "数量","单价")
output.show(jb.BuildSql)

 

就可以得到你要的SQL语句。

 

也可以可视化得到SQL语句:

http://www.foxtable.com/help/topics/2322.htm

 

一点不伤脑细胞哦,感觉foxtable体贴得有点过份了,得意....

 

 

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

[此贴子已经被作者于2013-11-21 9:02:43编辑过]

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


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
  发帖心情 Post By:2013/11/21 9:19:00 [只看该作者]

我想从员工名册和合同记录表中查询出给定日期的唯一且最后一条记录,
Select 

A2.[登记月份],A2.[编号],A2.[姓名],A2.[部门],A2.[班组],A2.[首签日期],A2.[续签日期],A2.[合同止期],A2.[辞退日期],A2.[剩余天数],A2.[性别],A2.[职务],A2.[职称],A2.[学历],A2.[专业],A2.[从业证],A2.[银行卡号],A2.[基本工资],A2.[月度考核],A2.[公积金],A2.[社会保险],A2.[起征额]

from
(
Select A.[登记月份],A.[编号],C.[姓名],A.[部门],A.[班组],A.[首签日期],A.[续签日期],A.[合同止期],A.[辞退日期],A.[剩余天数],C.[性别],A.[职务],A.[职称],A.[学历],A.[专业],A.[从业证],A.[银行卡号],A.[基本工资],A.[月度考核],A.[公积金],A.[社会保险],A.[起征额]

from 合同记录 A
inner join ( select  登记日期,姓名,编号,性别 from 员工名册 ) C on A.[编号]=C.[编号]
) A2

inner join 
( select max(合同记录.[登记月份]) as 登记月份,合同记录.[编号]
  from 合同记录
where 合同记录.[登记月份] < '2013-10-1'
  group by 合同记录.[编号]
) B  on A2.[登记月份]={B}.[登记月份] and A2.[编号]=B.[编号]

where A2.[辞退日期] is null or A2.[辞退日期] > '2013-9-30'

order by A2.[编号]

   <'2013-10-1'和> '2013-9-30' 用日期输入框输入,我不会往下做了,请帮助修改。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/21 9:21:00 [只看该作者]

没有例子不好测试,难以帮忙.   不过你的提问也有些矛盾 既然是唯一,怎么还来最后一条呢?



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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/11/21 9:46:00 [只看该作者]

你要合成的话,类似:

 

dim sql As String = "SQL 语句前半部分 where 合同记录.[登记月份] < '" & e.Form.Controls("日期输入框1的名称").Value & "' SQL 语中间半部分 or A2.[辞退日期] > '" & e.Form.Controls("日期输入框2的名称").Value & "' Sql语句的后半部分"

Tables("窗口1_Table1").Fill(sql,"数据源明黄曾",True)

 

建议看看:

http://www.foxtable.com/help/topics/1284.htm

http://www.foxtable.com/help/topics/1058.htm

 

当然最还是先按顺序系统看两三遍帮助文件,有个整体的了解比好。


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


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
  发帖心情 Post By:2013/11/22 10:50:00 [只看该作者]

过半百了,不懂外语,只能不懂就问,给添麻烦了。

 回到顶部