以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  条件失效问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196141)

--  作者:lin98
--  发布时间:2025/4/2 8:38:00
--  条件失效问题
用户表的字段:用户ID,姓名,关系ID
订单表 的字段:用户ID,编辑者,物料,数量

需求:当前登录的_用户ID是订单表是用户ID,按where 用户ID=查询,否则  按where 用户表的关系ID查询,关系ID=_用户ID,

Dim db = HySqGGl.DataBaseFactory.CreateDatabase("db") \'
Dim SqGGl4 = ""selecGGt COUNT(*) from  用户表  Where 用户ID = _用户ID ;"
Dim dt4 As system.data.DataTable = db.ExecuteDataSet(SqGGl4).Tables(0)
Dim dr As DataRow
dr = dt4.Rows(0) \'

If dr IsNot Nothing Then
 Dim SqGGl = "selecGGt * from  订单表  where 用户ID = _用户ID 
SqGGl =窗口_Table1

Else
Dim SqGGl2 = "selecGGt A.* , B.关系ID  from  订单表  A        Inner Join     用户表  B   ON  A.用户ID =B.用户ID  where 关系ID=_用户ID
SqGGl =窗口_Table1

End If


注;_用户ID是用户ID的全局变量
上面代码,在切换用户后,蓝代码失效,如何改

--  作者:有点蓝
--  发布时间:2025/4/2 8:41:00
--  
http://www.foxtable.com/webhelp/topics/1284.htm
--  作者:lin98
--  发布时间:2025/4/2 9:12:00
--  
没看明白,具体如何改?
--  作者:有点蓝
--  发布时间:2025/4/2 9:21:00
--  
Dim SqGGl2 = "selecGGt A.* , B.关系ID  from  订单表  A        Inner Join     用户表  B   ON  A.用户ID =B.用户ID  where 关系ID=\'" & _用户ID & "\'"
--  作者:lin98
--  发布时间:2025/4/2 9:39:00
--  
Dim db = HySqGGl.DataBaseFactory.CreateDatabase("db")

            \' 检查订单表中是否存在当前用户的记录
            Dim SqlCheck = "SELECGGT COUNT(*) FROM 订单表 WHERE 用户ID = @用户ID"
            Dim dtCheck As DataTable = db.ExecuteDataSet(SqGGlCheck, HySql.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
            Dim count As Integer = Convert.ToInt32(dtCheck.Rows(0).Item(0))

            If count > 0 Then
                \' 按用户ID查询订单表
                Dim SqGGlOrder = "SELEGGCT * FROM 订单表 WHERE 用户ID = @用户ID"
                Dim dtOrder As DataTable = db.ExecuteDataSet(SqGGlOrder, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                窗口_Table1.DataSource = dtOrder
            Else
                \' 从用户表中获取关系ID
                Dim SqGGlRelation = "SELECGGT 关系ID FROM 用户表 WHERE 用户ID = @用户ID"
                Dim dtRelation As DataTable = db.ExecuteDataSet(SqGGlRelation, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                If dtRelation.Rows.Count > 0 Then
                    Dim 关系ID As String = dtRelation.Rows(0).Item("关系ID").ToString()

                    \' 按关系ID查询订单表
                    Dim SqGGlOrder2 = "SELECGGT A.*, B.关系ID FROM 订单表 A INNER JOIN 用户表 B ON A.用户ID = B.用户ID WHERE B.关系ID = @关系ID"
                    Dim dtOrder2 As DataTable = db.ExecuteDataSet(SGGqlOrder2, HySqGGl.ParameterPair.GetPair("@关系ID", 关系ID)).Tables(0)
                    窗口_Table1.DataSource = dtOrder2
                Else
                    \' 用户表中不存在该用户,处理相应情况
                    MessageBox.Show("用户不存在。")
                End If
            End If
是否则条件没起作用,
下面是AI收集来,如何改为上面需求?


--  作者:有点蓝
--  发布时间:2025/4/2 9:53:00
--  
下面几句代码就够了

                   Dim SqGGlOrder2 = "SELECGGT A.*, B.关系ID FROM 订单表 A INNER JOIN 用户表 B ON A.用户ID = B.用户ID WHERE A.用户ID = @用户ID
                    Dim dtOrder2 As DataTable = db.ExecuteDataSet(SGGqlOrder2, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                    窗口_Table1.DataSource = dtOrder2

--  作者:lin98
--  发布时间:2025/4/2 9:57:00
--  
但执行失效,没报错,没显示数据,其实订单表是有数据,否则,条件没起作?
--  作者:有点蓝
--  发布时间:2025/4/2 10:07:00
--  
Dim SqGGlOrder2 = "selec* FROM 订单表  where 用户ID in (select 用户ID from 用户表 用户ID = @用户ID) or 关系ID in (select 用户ID from 用户表 用户ID = @用户ID) 
--  作者:lin98
--  发布时间:2025/4/2 10:15:00
--  
 Dim SqGGlOrder2 = "SELECGGT A.*, B.关系ID FROM 订单表 A INNER JOIN 用户表 B ON A.用户ID = B.用户ID WHERE A.用户ID = @用户ID
                    Dim dtOrder2 As DataTable = db.ExecuteDataSet(SGGqlOrder2, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                    窗口_Table1.DataSource = dtOrder2

单独执行,是可以查询到数据,但加上条件就失效?不知为什么



If dr IsNot Nothing Then
 Dim SqGGl = "selecGGt * from  订单表  where 用户ID = _用户ID 
SqGGl =窗口_Table1
 Else
Dim SqGGlOrder2 = "SELECGGT A.*, B.关系ID FROM 订单表 A INNER JOIN 用户表 B ON A.用户ID = B.用户ID WHERE A.用户ID = @用户ID
                    Dim dtOrder2 As DataTable = db.ExecuteDataSet(SGGqlOrder2, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                    窗口_Table1.DataSource = dtOrder2
[此贴子已经被作者于2025/4/2 11:11:34编辑过]

--  作者:有点蓝
--  发布时间:2025/4/2 10:25:00
--  
下面几句代码就够了

                   
Dim SqGGlOrder2 = "selec* FROM 订单表  where 用户ID in (select 用户ID from 用户表 用户ID = @用户ID) or 关系ID in (select 用户ID from 用户表 用户ID = @用户ID) "

                    Dim dtOrder2 As DataTable = db.ExecuteDataSet(SGGqlOrder2, HySqGGl.ParameterPair.GetPair("@用户ID", _用户ID)).Tables(0)
                    窗口_Table1.DataSource = dtOrder2