以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口多表查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=16350)

--  作者:游山玩水
--  发布时间:2012/2/10 14:36:00
--  [求助]窗口多表查询

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

 

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

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

--  作者:狐狸爸爸
--  发布时间:2012/2/10 14:48:00
--  

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

 

否则只能用SQL语句:

 

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

 


--  作者:游山玩水
--  发布时间: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
--  发布时间:2012/2/10 14:55:00
--  

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


--  作者:游山玩水
--  发布时间:2012/2/10 15:22:00
--  
如何在sql语句中,组合几个变量呢?
--  作者:狐狸爸爸
--  发布时间: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)


--  作者:游山玩水
--  发布时间: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
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间: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)

 

看看行不行。

 

不行再留言。


--  作者:游山玩水
--  发布时间: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)

 

看看行不行。

 

不行再留言。

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


--  作者:游山玩水
--  发布时间: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编辑过]