Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口多表查询


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

主题:[求助]窗口多表查询

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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
[求助]窗口多表查询  发帖心情 Post By:2012/2/10 14:36:00 [只看该作者]

我想通过查询窗口,通过输入变量值,来查询表B、表C中符合条件的行,生成表A式样的查询表,查询条件可以选其中任意组合,如果在一个表中,通过代码很容易,但是多表查询不知怎么搞,请高手指点,谢谢。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多表查询.table

[此贴子已经被作者于2012-2-10 14:46:35编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/10 14:48:00 [只看该作者]

既然是结构相同的数据,你应该放在一个表中,而不是分开多个表。

 

否则只能用SQL语句:

 

Select * From {表B} Where 条件 UNION ALL Select * From {表C} Where 条件

 


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2012/2/10 14:54:00 [只看该作者]

以下是引用狐狸爸爸在2012-2-10 14:48:00的发言:

既然是结构相同的数据,你应该放在一个表中,而不是分开多个表。

 

否则只能用SQL语句:

 

Select * From {表B} Where 条件 UNION ALL Select * From {表C} Where 条件

 

因为除了几个要查询的主要字段外,后面的很多字段都不同的,为了便于输入和核对,只能分几个表。

我的问题是sql语句中,怎么组合这几个变量,请狐爸指教,谢谢!


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


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2012/2/10 14:55:00 [只看该作者]

能用sql语句的地方,就不要用狐表专用语句。


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2012/2/10 15:22:00 [只看该作者]

如何在sql语句中,组合几个变量呢?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/10 15:27:00 [只看该作者]

你原来怎么合成的条件,现在就怎么合成:

 

Dim flt As String

'合成条件保存到flt变量

DataTables("表A").Fill("Select * From {表B} Where " & flt &  " UNION ALL Select * From {表C} Where " & flt, "", False)


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2012/2/10 16:28:00 [只看该作者]

查询按钮代码如下:

 

Dim Filter As String
With e.Form.Controls("textbox1")
    If .Value IsNot Nothing Then
        Filter = "姓名 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("textbox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "车号 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StarDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("表B").Filter = Filter
Tables("表c").Filter = Filter
End If

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter &  " UNION ALL Select 日期,姓名,车号,行程  From {表C} Where " & Filter, "", False)

 

筛选可以正常筛选,但提示出错!请问错在哪里啊

 


图片点击可在新窗口打开查看此主题相关图片如下:截图04.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/10 16:29:00 [只看该作者]

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter & " UNION ALL Select 日期,姓名,车号,行程 From {表C} Where " & Filter, "", False)

 

改为

 

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter & " UNION ALL Select 日期,姓名,车号,行程 From {表C} Where " & Filter, "", True)

 

看看行不行。

 

不行再留言。


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2012/2/10 16:38:00 [只看该作者]

以下是引用狐狸爸爸在2012-2-10 16:29:00的发言:

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter & " UNION ALL Select 日期,姓名,车号,行程 From {表C} Where " & Filter, "", False)

 

改为

 

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter & " UNION ALL Select 日期,姓名,车号,行程 From {表C} Where " & Filter, "", True)

 

看看行不行。

 

不行再留言。

现在可以了,非常感谢狐爸!


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2012/2/11 0:32:00 [只看该作者]

新问题,为什么使用外部sql数据源后这段代码又不行了,提示“sql语句执行错误,请检查语法和数据源设置”?我已经在代码前设置了名称为manager的外部数据源了

 

Dim cmd As New SQLCommand
cmd.ConnectionName = "manager"
 

Dim Filter As String
With e.Form.Controls("textbox1")
    If .Value IsNot Nothing Then
        Filter = "姓名 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("textbox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "车号 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StarDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("表B").Filter = Filter
Tables("表c").Filter = Filter
End If

DataTables("表A").Fill("Select 日期,姓名,车号,行程 From {表B} Where " & Filter &  " UNION ALL Select 日期,姓名,车号,行程  From {表C} Where " & Filter, "", true)

 


[此贴子已经被作者于2012-2-11 0:33:15编辑过]

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