Foxtable(狐表)用户栏目专家坐堂 → 关于datatable的疑惑!


  共有7606人关注过本帖树形打印复制链接

主题:关于datatable的疑惑!

帅哥哟,离线,有人找我吗?
客家阿哥
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/15 22:09:00 [只看该作者]

            DataTables("学生信息表").LoadFilter = ""
            DataTables("学生信息表").LoadFilter = "学生编号 Like '%" & txt & "%'"
            DataTables("学生信息表").Load()


            DataTables("学生信息表").LoadFilter = "学生编号 Like '%" & txt & "%'"
            DataTables("学生信息表").Load()

等效??????????????????

具体在数据里面是怎么执行的?????????

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/7/16 8:37:00 [只看该作者]

两个是等效的. 设置LoadFilter 只是改变这属性的值,并不会有任何操作.



 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/7/16 9:17:00 [只看该作者]

以下是引用客家阿哥在2013-7-15 22:09:00的发言:
            DataTables("学生信息表").LoadFilter = ""
            DataTables("学生信息表").LoadFilter = "学生编号 Like '%" & txt & "%'"
            DataTables("学生信息表").Load()


            DataTables("学生信息表").LoadFilter = "学生编号 Like '%" & txt & "%'"
            DataTables("学生信息表").Load()

等效??????????????????

具体在数据里面是怎么执行的?????????

loadfilter 只是一个字符串,相当于Where语句,load才是执行,所以你怎么修改都不会有任何影响,只有当执行load后才有改变


 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
temblar
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:313 积分:2913 威望:0 精华:0 注册:2012/7/20 16:04:00
  发帖心情 Post By:2013/7/16 13:13:00 [只看该作者]

命令窗口调试看

Dim cmd As new SQLCommand
Dim s As String

cmd.C
cmd.CommandText = “select 列名 from {合同} where 确保只能找到一行的filter "
s = cmd.ExecuteScalar
Output.Show(s)

 

 

cmd.C  换成连接数据库名的那句,论坛不让显示连接数据库的代码

[此贴子已经被作者于2013-7-16 13:16:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/7/24 11:30:00 [只看该作者]

以下是引用客家阿哥在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一样非常快

 


 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/24 12:29:00 [只看该作者]

那就先简单的说起吧

我记得使用 DataTables("表").Find()的时候,
如果不使用
datatables().loadfilter= ""

datatables().load

就发生找到的值不是数据现在的值问题?!,例如甲修改了数据库的值,乙找到的值仍然是加载到乙软件中的值,而不是甲修改过的值。



如果不使用sql,怎么解决???????

==================================

以上都是采用sql2005做数据库的情况下,多台电脑同时工作


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  18楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/7/24 12:32:00 [只看该作者]

只能说你帮助看的太少:

If e.DataCol.Name = "省市" Orelse e.DataCol.Name = "县市" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow = e.DataRow
    cmd.C
    cmd.CommandText = "SELECT * From {行政区域} Where [省市] = '" & dr("省市") & "' And [县市] = '" & dr("县市") & "'" 
    dt = cmd.ExecuteReader
    If dt.DataRows.Count > 0 Then
        dr("区号") = dt.DataRows(0)("区号")
        dr("邮编") = dt.DataRows(0)("邮编")
    Else
        dr("区号") = Nothing
        dr("邮编") = Nothing
    End If
End If

  不需要加载,就可以调用.

[此贴子已经被作者于2013-7-24 12:32:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/24 12:37:00 [只看该作者]

那采用关联表或者模拟关联表的时候怎么处理?????

 回到顶部
帅哥哟,离线,有人找我吗?
客家阿哥
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:822 积分:5954 威望:0 精华:0 注册:2012/10/24 15:01:00
  发帖心情 Post By:2013/7/24 12:43:00 [只看该作者]

如果有 fromserver,直接查询后台服务器上的数据,是不是更简单????

 回到顶部
总数 37 上一页 1 2 3 4 下一页