以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  外部数据查找  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92333)

--  作者:刘林
--  发布时间:2016/11/1 9:25:00
--  外部数据查找
textchanged事件中设计的查找

Dim txt As String = e.sender.Text
Dim tbl As Table = Tables("学生信息")
If txt = "" Then
    tbl.Filter = ""
Else
    txt = "\'%" & txt & "%\'"
    tbl.Filter = "身份证件号 Like " & txt & " Or 学生姓名 Like " & txt & " Or 家庭成员姓名 Like " & txt & " Or 联系电话 Like " & txt 
End If

这是找出的加载了的记录里查找,请问老师如果要直接查找外部数据表中未加载的怎么办,也就是后台数据查找并加载显示?

--  作者:有点蓝
--  发布时间:2016/11/1 9:59:00
--  
参考:http://www.foxtable.com/webhelp/scr/1928.htm

DataTables("订单").LoadFilter = "[日期] = #" Date.Today & "#"
DataTables(
"订单").Load

--  作者:刘林
--  发布时间:2016/11/1 10:53:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable = DataTables("成绩")
cmd.connect  i
cmd.CommandText = "SE  LECT * From {成绩}"
dt = cmd.ExecuteReader()
\'\'\'\'Dim dt As DataTable = DataTables("成绩")

    Dim Arys As List(Of String())  = dt.GetValues("考试名称|学校代码|年级代码")
    For Each Ary As String() In Arys
        Dim drs As List(Of DataRow) = dt.Select("[考试名称] = \'" & ary(0) & "\'And [学校代码] = \'" & ary(1) & "\'and [年级代码] =\'" & ary(2) & "\'", "折总 DESC")
        For n As Integer = 0 To drs.Count - 1 \'遍历所有行
            If n > 0 AndAlso drs(n)("折总") = drs(n-1)("折总") Then \'如果总分和上一行相同
                drs(n)("校序") = drs(n-1)("校序") \'则排名等于上一行
            Else
                drs(n)("校序") = n + 1 \'设置排名
            End If
        Next
    Next
    Dim Arys1 As List(Of String())  = dt.GetValues("考试名称|学校代码|年级代码|班级")
    For Each Ary1 As String() In Arys1
        Dim drs As List(Of DataRow) = dt.Select("[考试名称] = \'" & ary1(0) & "\'And [学校代码] = \'" & ary1(1) & "\'and [年级代码] =\'" & ary1(2) & "\'And [班级] = \'" & ary1(3) & "\'", "折总 DESC")
        For m As Integer = 0 To drs.Count - 1 \'遍历所有行
            If m > 0 AndAlso drs(m)("折总") = drs(m-1)("折总") Then \'如果总分和上一行相同
                drs(m)("班序") = drs(m-1)("班序") \'则排名等于上一行
            Else
                drs(m)("班序") = m + 1 \'设置排名
            End If
        Next
    Next
    dt.save()


请问老师我想将原来的加载数据排序,改为后台直接排序,上面代码提示找不到折总列,是什么原因,怎么办?

--  作者:有点蓝
--  发布时间:2016/11/1 11:17:00
--  
折总是表达式列来的吧
--  作者:刘林
--  发布时间:2016/11/1 14:57:00
--  


--  作者:有点蓝
--  发布时间:2016/11/1 14:59:00
--  
数据库是没有狐表的表达式列的,不用SQLCommand,按2楼的方式加载数据进来
--  作者:刘林
--  发布时间:2016/11/1 15:18:00
--  
老师,我就是想不加载进来就排序好呢,因为数据库大了加载就麻烦了,请问有什么办法?


--  作者:有点蓝
--  发布时间:2016/11/1 16:35:00
--  
那就不用表达式列进行比较,想办法用其它的数据列替代。

或者给dt动态增加一列表达式列

--  作者:有点色
--  发布时间:2016/11/1 18:53:00
--  
以下是引用刘林在2016/11/1 15:18:00的发言:
老师,我就是想不加载进来就排序好呢,因为数据库大了加载就麻烦了,请问有什么办法?

 

那一列根据什么得到的?如果是跨表的话,比较麻烦。如果可以直接得到,比如 金额列=单价*数量,直接写公式就好。