Foxtable(狐表)用户栏目专家坐堂 → [求助]SQL查询表继续求助


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

主题:[求助]SQL查询表继续求助

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 20:36:00 [显示全部帖子]

 呃,没看懂你的问题。是问a、b是什么意思?

 

 a、b 是一个别名 代表 前面的表名,用a、b写着方便一些而已。

[此贴子已经被作者于2014-6-12 20:36:05编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 20:44:00 [显示全部帖子]

 把多行显示成多列?

 

 把你的项目,做个例子上传上来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 20:48:00 [显示全部帖子]

 数据,看你的数据是怎样的。把数据做成例子发上来。
[此贴子已经被作者于2014-6-12 20:49:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 20:52:00 [显示全部帖子]

以下是引用yxinfo在2014-6-12 20:51:00的发言:
我是不是要转换成内部数据源传上来才用? 不然sql的数据你没有呀。

 

转成内部表。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 20:55:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 21:09:00 [显示全部帖子]

呃,没有数据啊.......


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 21:35:00 [显示全部帖子]

回复15楼,不是应该两个表的么?图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/12 23:02:00 [显示全部帖子]

 回复18楼,试了一下,无法用sql直接求得表。要用代码处理一下

 

Dim dtb As New DataTableBuilder("临时表")
dtb.AddDef("卡号", Gettype(String), 32)
dtb.AddDef("姓名", Gettype(String), 32)
dtb.AddDef("门卫", Gettype(String), 32)
dtb.AddDef("时间1", Gettype(Date), "", "时间")
dtb.AddDef("食堂", Gettype(String), 32)
dtb.AddDef("时间2", Gettype(Date), "", "时间")
dtb.Build()

DataTables("临时表").StopRedraw
For Each ary As String() In DataTables("对应表").GetValues("rfkh|ryxm")
    Dim drs1 As List(Of DataRow) = DataTables("对应表").Select("rfkh = '" & ary(0) & "' and ryxm = '" & ary(1) & "' and xfjh = '001'")
    Dim drs2 As List(Of DataRow) = DataTables("对应表").Select("rfkh = '" & ary(0) & "' and ryxm = '" & ary(1) & "' and xfjh = '002'")
    Dim count As Integer = iif(drs1.count > drs2.count, drs1.count, drs2.count)
    For i As Integer = 0 To count - 1
        Dim ndr As DataRow = DataTables("临时表").AddNew
        ndr("卡号") = ary(0)
        ndr("姓名") = ary(1)
        If i < drs1.count - 1 Then
            ndr("门卫") = drs1(i)("xfjh")
            ndr("时间1") = drs1(i)("xfsj")
        End If
        If i < drs2.count - 1 Then
            ndr("食堂") = drs2(i)("xfjh")
            ndr("时间2") = drs2(i)("xfsj")
        End If
    Next
Next
DataTables("临时表").ResumeRedraw
MainTable= Tables("临时表")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/13 9:20:00 [显示全部帖子]

不能直接用sql语句,你要的表,是不规则的。看19楼。

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/13 10:10:00 [显示全部帖子]

以下是引用yxinfo在2014-6-13 10:06:00的发言:

功能实现, 谢谢, 不过时间定义错了, 只有日期没有小时分钟显示了。还有 每次重新打开项目都必须重新输
入执行一遍代码?
这样不太方便。

另外: 非要通过sql 查询表, 在建立一个临时表 来实现我这个简单的要求?
这个有点打击到我的学习热情了。

 

1、你新增一个表格,设置好列,日期格式扩展成日期时间格式;

 

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

 

 

2、你在AfterOpenProject事件写入代码

 

DataTables("临时表").DataRows.Clear 

DataTables("临时表").StopRedraw
For Each ary As String() In DataTables("对应表").GetValues("rfkh|ryxm")
    Dim drs1 As List(Of DataRow) = DataTables("对应表").Select("rfkh = '" & ary(0) & "' and ryxm = '" & ary(1) & "' and xfjh = '001'")
    Dim drs2 As List(Of DataRow) = DataTables("对应表").Select("rfkh = '" & ary(0) & "' and ryxm = '" & ary(1) & "' and xfjh = '002'")
    Dim count As Integer = iif(drs1.count > drs2.count, drs1.count, drs2.count)
    For i As Integer = 0 To count - 1
        Dim ndr As DataRow = DataTables("临时表").AddNew
        ndr("卡号") = ary(0)
        ndr("姓名") = ary(1)
        If i < drs1.count - 1 Then
            ndr("门卫") = drs1(i)("xfjh")
            ndr("时间1") = drs1(i)("xfsj")
        End If
        If i < drs2.count - 1 Then
            ndr("食堂") = drs2(i)("xfjh")
            ndr("时间2") = drs2(i)("xfsj")
        End If
    Next
Next
DataTables("临时表").ResumeRedraw


 

3、请把帮助文档认真看完一次。

[此贴子已经被作者于2014-6-13 10:18:45编辑过]

 回到顶部
总数 12 1 2 下一页