Foxtable(狐表)用户栏目专家坐堂 → 求助:SQLFIND条件代码


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

主题:求助:SQLFIND条件代码

帅哥哟,离线,有人找我吗?
shixia
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
求助:SQLFIND条件代码  发帖心情 Post By:2014/4/1 14:02:00 [只看该作者]

 在内部函数中有如下代码:
Dim r As DataRow = args(0)
Dim flag As Boolean = args(1)

Dim dr As DataRow
Dim drs As List(of DataRow)
dr = r.DataTable.Find("日期 < #" & r("日期") & "# or (日期 = #" & r("日期") & "# And _sortkey < " & r("_sortkey") & " )", "日期 Desc, [_SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    r("余额") = r("流入金额") - r("流出金额")
    If flag Then
        drs = r.DataTable.Select("日期 >= #" & r("日期") & "#", "日期, [_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("流入金额") - drs(i)("流出金额")
        Next
    End If
Else If dr.IsNull("余额") Then
    Functions.Execute("compute", dr, False)
Else
    drs = r.DataTable.Select("日期 >= #" & dr("日期") & "#", "日期, [_SortKey]")
    For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
        drs(i)("余额") = drs(i-1)("余额") + drs(i)("流入金额") - drs(i)("流出金额")
    Next
End If

用于计算现金流水账 中现金余额,执行正常。
近期对现金流水账实行动态加载,比如只加载本日数据,再添加数据时,调用以上内部数据执行后余额为本行发生数,没有加载到表中最后一行余额无法参与计算。
我把dr = r.DataTable.Find("日期 < #" & r("日期") & "# or (日期 = #" & r("日期") & "# And _sortkey < " & r("_sortkey") & " )", "日期 Desc, [_SortKey] Desc") '找出上一行
这行代码 中Find 改为SQLFind ,执行后报错:提示该代码中 条件语句出错

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


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

你用的是什么数据源?  SQL的话 日期用的是单引号不是 #号哦.

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/4/1 14:13:00 [只看该作者]

 Access 数据源

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


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

上例子看看,目测没发现问题.

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/4/1 15:12:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.rar

 

想实现的功能:如果只加载今年的数据,余额可以连前累计


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/1 15:23:00 [只看该作者]

 用sqlfind的时候,如果是内部数据源或access数据库,需要加[]

 

dr = r.DataTable.sqlFind("日期 < #" & r("日期") & "# or (日期 = #" & r("日期") & "# And [_sortkey] < " & r("_sortkey") & " )", "日期 Desc, [_SortKey] Desc") '找出上一行


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


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

这里有现成例子,找了半天才找到. http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42410

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


加好友 发短信
等级:三尾狐 帖子:759 积分:7038 威望:0 精华:1 注册:2008/9/2 20:04:00
  发帖心情 Post By:2014/4/1 17:28:00 [只看该作者]

谢谢

 回到顶部