以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]老师每次模糊搜索明细表后返回一定要加载全部数据再匹配主表吗?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=161107)

--  作者:和谐
--  发布时间:2021/3/6 9:33:00
--  [求助]老师每次模糊搜索明细表后返回一定要加载全部数据再匹配主表吗?
因为这样的话删除了模糊搜索后明细不像主表,主表是全部加载,但是明细是先全部加载再和主表关联,这样明细会闪出全部数据在关联,我想直接就动态关联主表不要每次删除搜索就重新加载全部数据,怎么做呢?老师?
--  作者:有点蓝
--  发布时间:2021/3/6 9:47:00
--  
参考:http://www.foxtable.com/webhelp/topics/2228.htm
--  作者:和谐
--  发布时间:2021/3/8 9:18:00
--  
老师我就是这样明细先输入筛选条件,回车正常搜索明细,主表也会同步筛选,但是我删除了搜索名称回车,主表返回所有数据分页加载一页25条,这时明细会闪出全部数据在去对应主表,这样其实就是在临时表里加载了全部明细,这样还是不理想
--  作者:有点蓝
--  发布时间:2021/3/8 9:24:00
--  
参考上面帮助的用法,明细根据主表加载的25条记录的关联列或者编号去加载数据
--  作者:和谐
--  发布时间:2021/3/8 10:30:00
--  
老师判断(主表加载好了)再执行关联明细的代码,怎么写呢?因为我加载主表后就直接执行明细关联主表的代码,但是明细始终是空白,因为主表好像没加载好明细无依据加载一样的
可能要判断主表完全加载好再执行代码,才是正确的


--  作者:有点蓝
--  发布时间:2021/3/8 10:38:00
--  
怎么加载主表的?在加载主表的代码后面加上加载明细的代码
--  作者:和谐
--  发布时间:2021/3/8 22:08:00
--  
老师修改后明细不空白了,主表也正常,每次山删除掉搜索条件,明细就会先闪出全部数据再关联上数据,是怎么回事呢?老师?而我的明细也是筛选加载的方式了?还有什么地方不对吗?
If val = ""   Then

   With DataTables("智能AI数据_Table1")
    .LoadFilter = "" \'一定要清除加载条件
    .LoadTop = 25
    .LoadPage = 0
    .Load(False)
End With

Dim ids As String
 For Each dr As DataRow In DataTables("智能AI数据_Table1").DataRows
    ids = ids & ",\'" & dr("ExcelServerRCID") & "\'"
  Next
    ids= ids.Trim(",")


   With DataTables("智能AI数据_Table2")
    .LoadFilter = "ExcelServerRCID In (" & ids & ")" \'一定要清除加载条件
    .Load(False)
End With
End If
Dim bh As String = DataTables("智能AI数据_Table2").GetComboListString("ExcelServerRCID",Tables("智能AI数据_Table2").filter )
Tables("智能AI数据_Table1").filter = "ExcelServerRCID in(\'" & bh.replace("|","\',\'") & "\')"




Tables("智能AI数据_Table1").AutoSizeCols() \'自适应所有列的宽度
Tables("智能AI数据_Table1").Sort = "_Identify Desc"

[此贴子已经被作者于2021/3/8 22:08:54编辑过]

--  作者:有点蓝
--  发布时间:2021/3/8 22:09:00
--  
11
[此贴子已经被作者于2021/3/8 22:09:50编辑过]

--  作者:有点蓝
--  发布时间:2021/3/8 22:12:00
--  
贴出完整代码说明
--  作者:和谐
--  发布时间:2021/3/8 22:46:00
--  
Dim Filter As String = "1=2"  \'直接为变量赋值,为什么值是1=2呢,就是要这个值不成立,因为1不等于2,相当于"否"的意思
Dim val As String = e.Form.Controls("textbox2").Text \'定义一个变量是输入在控件textbox1的值


If val <> ""   Then    \'但textbox1控件的值大于空白时,执行下面代码
   
 For Each c As DataCol In DataTables("智能AI数据_Table2").DataCols  \'遍历语句,遍历地区表的所有列
    DataTables("智能AI数据_Table2").LoadPage = 0  \'重点:直接加载地区表的第一页,这样下面的模糊筛选才可以从第一页开始筛选所有数据
           Filter = Filter & " Or Convert(varchar(100), " & c.name & ") Like \'%" & val & "%\'  "   \'这句Filter & = "xxx"的意思是Filter = Filter & "xxx"  的简写,这句就是:筛选条件里的条件,这句话的含义就是把每一列列转换成字符串再用Like语句\'%" & val & "%\'意思是:筛选出所有列中包含"控件textbox1的值"
    Next










End If 



If filter IsNot Nothing  Then \'当Filter不等于空白时
    DataTables("智能AI数据_Table2").LoadPage = 0    \'加载第一页
    DataTables("智能AI数据_Table2").LoadOver = "_Identify"   \'以日期列
    DataTables("智能AI数据_Table2").LoadReverse = True  \'启用日期列倒序加载
    DataTables("智能AI数据_Table2").LoadFilter = filter \'在筛选条件里的条件等于上面的:筛选条件里的条件
    DataTables("智能AI数据_Table2").Load(False) \'重新加载按照:筛选条件里的条件来加载

End If
Tables("智能AI数据_Table2").AutoSizeCols() \'自适应所有列的宽度
Tables("智能AI数据_Table2").Sort = "_Identify Desc"






  \'*********   TextBox控件应用   **********
\'Dim lbl As WinForm.TextBox   \'定义控件变量
    \'lbl = e.Form.Controls("TextBox2") \'变量等于那个控件名称
\'If  DataTables("地区表").TotalPages =  0 Then \'当地区表的总页数等于0时
    \'lbl.TextAlign = HorizontalAlignment.Center
    \'lbl.Font = New Font("楷体", 15, FontStyle.Bold) \'设置字体
    \'lbl.text = "搜索"   \'则显示搜索文本
\'Else \' 否则
    \'lbl.TextAlign = HorizontalAlignment.Center
    \'lbl.Font = New Font("微软雅黑", 15, FontStyle.Bold) \'设置字体
    \'lbl.text =  "第" & DataTables("地区表").LoadPage + 1 & "页/总" & DataTables("地区表").TotalPages & "页" \'总页数不等于0时,控件.要显示的内容=第几页/总几页
\'End If




\'*********   上面的TextBox控件应用改成Label控件,因为上面要设置禁止选择还有禁止编辑没有这个控件方便   **********
Dim lbl As WinForm.Label   \'定义控件变量
    lbl = e.Form.Controls("Label2") \'变量等于那个控件名称
If  DataTables("智能AI数据_Table2").TotalPages =  0 Then \'当地区表的总页数等于0时
    lbl.TextAlign = ContentAlignment.MiddleCenter \'字体垂直与水平对齐
    lbl.Font = New Font("幼圆", 14, FontStyle.Bold) \'设置字体
    lbl.text = "没有您要的资料"   \'则显示搜索文本
Else \' 否则
    lbl.TextAlign = ContentAlignment.MiddleCenter \'字体垂直与水平对齐
    lbl.Font = New Font("微软雅黑", 12, FontStyle.Bold) \'设置字体
    lbl.text =  "第" & DataTables("智能AI数据_Table2").LoadPage + 1 & "页/总" & DataTables("智能AI数据_Table2").TotalPages + 2 & "页" \'总页数不等于0时,控件.要显示的内容=第几页/总几页
End If \'判断结束语句


If val = ""   Then



Dim ids As String
 For Each dr As DataRow In DataTables("智能AI数据_Table1").DataRows
    ids = ids & ",\'" & dr("ExcelServerRCID") & "\'"
  Next
    ids= ids.Trim(",")


   With DataTables("智能AI数据_Table2")
    .LoadFilter = "ExcelServerRCID In (" & ids & ")" \'一定要清除加载条件
    .Load(False)
End With


       With DataTables("智能AI数据_Table1")
    .LoadFilter = "" \'一定要清除加载条件
    .LoadTop = 25
    .LoadPage = 0
    .Load(False)
End With 




End If




Dim bh As String = DataTables("智能AI数据_Table2").GetComboListString("ExcelServerRCID",Tables("智能AI数据_Table2").filter )
Tables("智能AI数据_Table1").filter = "ExcelServerRCID in(\'" & bh.replace("|","\',\'") & "\')"




Tables("智能AI数据_Table1").AutoSizeCols() \'自适应所有列的宽度
Tables("智能AI数据_Table1").Sort = "_Identify Desc"