以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  移动端开发 怎么实现查询到姓名并将该姓名相关的多条记录一并显示到筛选结果页面呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145828)

--  作者:李孝春
--  发布时间:2020/2/8 19:02:00
--  移动端开发 怎么实现查询到姓名并将该姓名相关的多条记录一并显示到筛选结果页面呢?
有没有办法实现  麻烦老师们指导指导   谢谢!
如果查询到的姓名张三属于户主姓名的话,就查询表中所有户名姓名都是张三的所有家庭人员记录
如果查询到的姓名张三不属于户主姓名的话,就查询表中张三对应的户主姓名,并显示所有家庭成员记录
红色部分代码  怎么实现只要页面传入的姓名值    先进行判断是否为户主姓名,如果是直接导入户主下的所有成员记录,如果不是,就只显示一条记录。



代码如下:
Dim e As RequestEventArgs = args(0)
\'获取要显示的页
Dim page As Integer = 0 \'默认page为0,显示第一页
Dim pageRows As Integer = 15 \'每页10行
If e.GetValues.ContainsKey("page") Then  \'如果地址中有page参数
    Integer.TryParse(e.GetValues("page"), page) \'提取page参数
End If
Dim StartRow As Integer = page * pageRows + 1 \'此页第一行
Dim EndRow As Integer = (page + 1) * pageRows \'此页最后一行
\'获取该页数据

Dim wb As New WeUI
Se lect Case e.Path
    Case  "list.htm"
        wb.AddPageTitle("","ph1","常住人口查询结果")       
        Dim flt As String        
        If e.PostValues.ContainsKey("户主姓名") Then
            If flt > "" Then
                flt = flt & " and "
            End If
            flt = flt & "[户主姓名] = \'" & e.PostValues("户主姓名") & "\'"
        End If

If e.PostValues.ContainsKey("户主姓名") Then
            If flt > "" Then
                flt = flt & " and "
            End If
            flt = flt & "[姓名] = \'" & e.PostValues("户主姓名") & "\'"
        End If

        Dim cmd As New S QL Command
        cmd.C \'记得设置数据源名称
        cmd.CommandText = "Se lect Count(*) From {常住人口}"
        Dim Count As Integer = cmd.ExecuteScalar() \'获取总的行数  
        If flt > "" Then
            cmd.CommandText = "Se lect * From (Se lect Row_Number() Over(Order by _identify) As [序号],[_Identify],分组名称,户主姓名,姓名,身份证件号码,联系电话,与户主关系 From 常住人口 where " & flt & ") As a "
        Else
            cmd.CommandText = "Se lect * From (Se lect Row_Number() Over(Order by _identify) As [序号],[_Identify],分组名称,户主姓名,姓名,身份证件号码,联系电话,与户主关系 From 常住人口) As a "
        End If
        
        Dim dt As DataTable = cmd.ExecuteReader
        With wb.AddTable("","Table1")
            .PageNumber = page \'设置页码
            .Primarykey = "_Identify" \'设置主键
            .ActiveSheet = "menu" \'设置菜单
            .CreateFromDataTable(dt,False,"","","序号","分组名称","姓名","联系电话","与户主关系","户主姓名")
        End With
        
        With wb.AddButtonGroup("","btg2", False) \'生成上一页和下一页按钮
            If page > 0 Then
                .Add("btnPrev", "上一页","","List.htm?page=" & page - 1)
            End If
            If Endrow < count Then
                .Add("btnNext", "下一页","","List.htm?page=" & page + 1)
            End If
        End With
        With wb.AddButtonGroup("","btg1",True)
            .Add("btn1", "重新筛选", "","filter.htm")
        End With
        wb.AppendHTML("<sc ript src=\'./lib/table.js\'></sc ript>") \'引入脚本文件
        e.WriteString(wb.Build)
        
End Se lect
[此贴子已经被作者于2020/2/18 17:16:24编辑过]

--  作者:有点蓝
--  发布时间:2020/2/9 21:13:00
--  
If e.PostValues.ContainsKey("户主姓名") Then
    If flt > "" Then
        flt = flt & " or "
    End If
    flt = flt & "[姓名] = \'" & e.PostValues("户主姓名") & "\'"
End If

--  作者:李孝春
--  发布时间:2020/2/13 0:37:00
--  回复:(有点蓝)If e.PostValues.ContainsKey("户主姓...
有点蓝老师

改成楼上or后
输入户主姓名,首先查找的是姓名等于输入的值数据  
如张三      户主 张二  关系儿子

能不能实现先查找张三是不是户主,如果不是就把户主张二查出来  然后直接显示张二是户主的所有数据
如张三     户主张二  关系儿子
   张四     户主张二  关系女儿

--  作者:有点蓝
--  发布时间:2020/2/13 10:08:00
--  
先设置条件为【户主=\'张三\'】,使用SQLcommand到数据库里查询是否有户主为张三的数据,如果有就直接使用这个条件获取表格数据即可;

如果没有户主为张三的数据,再根据姓名=\'张三\',查询有没有数据,如果没有就提示没有数据返回;如果有就获取户主姓名,如张二,重新设置条件为【户主=\'张二\'】,然后使用这个条件获取表格数据



--  作者:李孝春
--  发布时间:2020/2/13 14:38:00
--  回复:(有点蓝)先设置条件为【户主='张三'】,使用S...
语句不大会写  老师可否详细指导一下
--  作者:有点蓝
--  发布时间:2020/2/13 15:05:00
--  
比如

Dim xm As String = "张三"
Dim filter As String = ""
If DataTables("常住人口").sqlfind("户主姓名=\'" & xm & "\'") IsNot Nothing Then
    filter = "户主姓名=\'" & xm & "\'"
Else
    Dim dr As DataRow = DataTables("常住人口").sqlfind("姓名=\'" & xm & "\'")
    If dr IsNot Nothing Then
        filter = "户主姓名=\'" & dr("户主姓名") & "\'"
    Else
        ‘返回错误提示,如:http://www.foxtable.com/mobilehelp/topics/0058.htm
return
    End If
End If

msgbox(filter )

--  作者:李孝春
--  发布时间:2020/2/17 23:05:00
--  回复:(有点蓝)比如Dim xm As String = "张三"Dim f...
代码修正如下  结果户主姓名输入任何值都是显示全部记录数   麻烦老师继续指导下  谢谢


Dim flt As String=""
        If e.PostValues.ContainsKey("所属社区") Then
            flt = "[所属社区] = \'" & e.PostValues("所属社区") & "\'"
        End If
        
        If e.PostValues.ContainsKey("分组名称") Then
            If flt > "" Then
                flt = flt & " and "
            End If
            flt = flt & "[分组名称] = \'" & e.PostValues("分组名称") & "\'"
        End If
        
        
If e.PostValues.ContainsKey("户主姓名") Then
Dim xm As String = e.PostValues.ContainsKey("户主姓名")
If DataTables("常住人口").sqlfind("户主姓名=\'" & xm & "\'") IsNot Nothing Then
        flt = flt & "[户主姓名] = \'" & xm & "\'"
else
    Dim dr As DataRow = DataTables("常住人口").sqlfind("姓名=\'" & xm & "\'")
    If dr IsNot Nothing Then
        flt =  flt & "[户主姓名]=\'" & dr("户主姓名") & "\'"

End If
End If
End If

    Dim cmd As New SQLCommand
    cmd.C \'记得设置数据源名称
    cmd.CommandText = "Sel ect Count(*) From {常住人口}"
    
    Dim Count As Integer = cmd.ExecuteScalar() \'获取总的行数
    If flt > "" Then
        cmd.CommandText = "Sel ect * From (Sele ct Row_Number() Over(Order by _identify) As [序号],[_Identify],分组名称,户主姓名,姓名,身份证件号码,联系电话,现居住地,与户主关系 From 常住人口 where " & flt & ") As a "
        \'MessageBox.Show(cmd.CommandText)
    Else
        cmd.CommandText = "Sele ct * From (Sele ct Row_Number() Over(Order by _identify) As [序号],[_Identify],分组名称,户主姓名,姓名,身份证件号码,联系电话,现居住地,与户主关系 From 常住人口) As a "
        \'MessageBox.Show(cmd.CommandText)
    End If
[此贴子已经被作者于2020/2/17 23:05:59编辑过]

--  作者:有点蓝
--  发布时间:2020/2/17 23:17:00
--  
Dim flt As String=""
If e.PostValues.ContainsKey("所属社区") Then
    flt = "[所属社区] = \'" & e.PostValues("所属社区") & "\'"
End If

If e.PostValues.ContainsKey("分组名称") Then
    If flt > "" Then
        flt = flt & " and "
    End If
    flt = flt & "[分组名称] = \'" & e.PostValues("分组名称") & "\'"
End If


If e.PostValues.ContainsKey("户主姓名") Then
    Dim xm As String = e.PostValues("户主姓名")
    If DataTables("常住人口").sqlfind("户主姓名=\'" & xm & "\'") IsNot Nothing Then
        If flt > "" Then
            flt = flt & " and "
        End If
        flt = flt & "[户主姓名] = \'" & xm & "\'"
    Else
        Dim dr As DataRow = DataTables("常住人口").sqlfind("姓名=\'" & xm & "\'")
        If dr IsNot Nothing Then
            If flt > "" Then
                flt = flt & " and "
            End If
            flt =  flt & "[户主姓名]=\'" & dr("户主姓名") & "\'"
            
        End If
    End If
End If

--  作者:李孝春
--  发布时间:2020/2/17 23:41:00
--  回复:(有点蓝)Dim flt As String=""If e.PostValue...
增加如果姓名和户主都查询不到记录时的弹窗提醒  结果没有弹出  是一空白页面


If e.PostValues.ContainsKey("人员姓名") Then
    Dim xm As String = e.PostValues("人员姓名")
    If DataTables("常住人口").sqlfind("户主姓名=\'" & xm & "\'") IsNot Nothing Then
        If flt > "" Then
            flt = flt & " and "
        End If
        flt = flt & "[户主姓名] = \'" & xm & "\'"
    Else
        Dim dr As DataRow = DataTables("常住人口").sqlfind("姓名=\'" & xm & "\'")
        If dr IsNot Nothing Then
            If flt > "" Then
                flt = flt & " and "
            End If
            flt =  flt & "[户主姓名]=\'" & dr("户主姓名") & "\'"
            else
With wb.AddMsgPage("","msgpage","查询失败","数据为空!")
                        .icon = "Warn" \'改变图标
                        .AddButton("btn1","返回").Attribute = ""
                    End With
return""
        End If
    End If
End If

--  作者:有点蓝
--  发布时间:2020/2/18 8:49:00
--  

示例

HttpRequest事件代码:

Select Case e.Path
    Case "test.htm"
        Dim wb As new WeUI
        With wb.
AddMsgPage("","msgpage","操作完成","内容详情,可根据实际需要安排")
            .AddButton("btn1",
"
确定")
            .AddButton("btn2",
"
取消").kind = 1
            .AddExtra(
"
详细信息","http://www.foxtable.com/")
        
End With
        e.WriteString(wb.Build) 
\'生成网页

End
 Select