Foxtable(狐表)用户栏目专家坐堂 → Sortkey 问题


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

主题:Sortkey 问题

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
Sortkey 问题  发帖心情 Post By:2023/8/3 15:44:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:图片8.jpg
图片点击可在新窗口打开查看


下面 datacolchanged 里面的代码,老是会出现上面图中的提示,请问是什么原因?谢谢
If e.DataCol.Name = "生产日期" Then 
    Dim d3 As String = Format(e.DataRow("生产日期"), "yyyyMMdd")
    msgbox(d3)
    e.DataRow.BaseRow("_SortKey") = d3.Substring(0, 8) 
End If


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/3 15:49:00 [只看该作者]

去掉msgbox

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/8/3 16:55:00 [只看该作者]

气死我了,这个地方都没有看到问题。谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/8/3 17:21:00 [只看该作者]

If e.DataCol.Name = "冲头更换日期" Then
    If e.NewValue IsNot Nothing Then
    Else
        MsgBox(1)
        For Each dr3 As DataRow In DataTables("生产模数记录").Select("模具型号 = '" & e.DataRow("模具型号") & "' and 冲头更换日期 > '" & e.oldvalue & "'") 
            MsgBox(2)
            dr3("上次更换冲头模数") = Nothing
        Next
    End If
End If

上面的代码,MsgBox(1) 会有提示,MsgBox(2) 就没有提示了,请问是什么问题?是不是因为 newvalue 是空值,就无法执行代码?谢谢。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/8/3 17:23:00 [只看该作者]

没有符合条件的数据:

..........Select("模具型号 = '" & e.DataRow("模具型号") & "' and 冲头更换日期 > '" & e.oldvalue & "'"

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/12/16 8:41:00 [只看该作者]

Dim drs As List(Of DataRow) = DataTables("出入库2").SQLSelect("[物料编号] = '" & e.DataRow("物料编号") & "'", "[_SortKey]")
Dim drs As List(Of DataRow) = DataTables("出入库2").SQLSelect("[物料编号] = '" & e.DataRow("物料编号") & "'")
msgbox("cnt=" & drs.Count)
上面两个SQLSelect语句,我用第一句时,计算出的行数cnt是0,这是错误的;而用第二句时,计算出的行数cnt就是正确的。请问是什么原因呢?谢谢

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/16 9:31:00 [只看该作者]

因为不看帮助,不按语法使用:http://www.foxtable.com/webhelp/topics/2900.htm,看示例四

select函数的第二个参数是Top【Top:    可选参数,指定返回的行数】,结果上面写的是【"[_SortKey]"】,数据库理解不了,就无法返回数据,改为

Dim drs As List(Of DataRow) = DataTables("出入库2").SQLSelect("[物料编号] = '" & e.DataRow("物料编号") & "'","", "[_SortKey]")

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/12/16 11:02:00 [只看该作者]

果然是这样。谢谢。
    Dim drs As List(Of DataRow) = DataTables("出入库").SQLSelect("[物料编号] = '" & e.DataRow("物料编号") & "'", "", "[_SortKey]")    
    For i As Integer = 0 To drs.Count - 1
        If i = 0 Then
            drs(i)("余数") = drs(i)("出入库数量")
        Else 
            drs(i)("余数") = drs(i - 1)("余数") + drs(i)("出入库数量")
        End If
        If i > 0 Then 
            If drs(i)("出入年月") = drs(i - 1)("出入年月") Then
                drs(i)("上行余数") = Nothing
            Else
                drs(i)("上行余数") = drs(i - 1)("余数")
            End If
        End If
    Next
    DataTables("出入库").SQLUpdate(drs)  

上面那段代码,如果改成 DataTables("订单").SQLReplaceFor("折扣", 0.05, "产品 = 'PD01'") 的模式,是不是效率会更高?但是,我不知道怎么改。谢谢。

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/16 11:17:00 [只看该作者]

改不了。只能上面这样用

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2023/12/16 12:30:00 [只看该作者]

好的。

 回到顶部