以下是引用客家阿哥在2013-7-16 12:15:00的发言:谢谢楼上各位老师的解答。还有具体问题要问
我记得使用 DataTables("表").Find()的时候,
如果不使用
datatables().loadfilter= ""
datatables().load
就发生找到的值不是数据现在的值问题?!,例如甲修改了数据库的值,乙找到的值仍然是加载到乙软件中的值,而不是甲修改过的值。
采用模拟关联表的时候,也一样要先清除加载条件,其实相当于重新加载整张表,不然的话,别人修改了记录,你这里就不能实时体现!
If Forms("收费操作").Opened()
DataTables("收费记录表").LoadFilter = ""
DataTables("收费记录表").Load
Dim t As Table =Tables("收费记录表")
With Tables("学生信息表")
If .Current Is Nothing Then
t.Filter="False"
Else
t.Filter="学生信息表编号= " & .current("学生信息表编号")
End If
End With
End If
===================================
DataTables("收费记录表").LoadFilter = ""
DataTables("收费记录表").Load
这两句应该就相当于重新加载所有“收费记录表”数据到foxtable了???,数据量大的话是不是影响软件效率?
为了得到数据库的某个值,而不是加载到foxtable的值,要怎么做呢?
|
[此贴子已经被作者于2013-7-16 12:18:06编辑过]
你为什么要重新加载?你一开始的时候加载的表就已经限制了加载条件了,如果加载的条件没有变化,那么你只要DataTables("收费记录表").Load就可以了,别人修改的记录就被加载了。
这主要取决于你初始加载的条件而已。还有不要太担心load的影响,除非你加载数万条乃至数十万条,否则影响几乎没有。
如果你需要加载这么多数据,你本身的思路可能就需要修改了,绝大部分都是无效数据,你加载没有意义。
如果你仅仅为了查找,那么我建议你,另外一张表进行加载或者直接加载。
不要太迷恋table.filter,这样导致你必须全部加载所有数据,得不偿失。load一样非常快