Foxtable(狐表)用户栏目专家坐堂 → 跨表查询不改变被查表状态


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

主题:跨表查询不改变被查表状态

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/5 15:11:00 [只看该作者]

认认真真看8楼代码,照写不会有错。

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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/1/5 17:54:00 [只看该作者]

Dim Cols1() As String = {"甲方客户","项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期","车辆属性","备注","特殊要求","司机搬运费","跟车搬运","人数","订单编号","异常描述","处理结果","责任方"}
Dim Cols2() As String = {"甲方客户","项目","下单日期","MK号","DO号","城市","客户","送货地址","物料代码","数量","体积","重量","承运商","司机","车牌","车数","车型","出车日期","车辆属性","备注","特殊要求","司机搬运费","跟车搬运","人数","订单编号","异常描述","处理结果","责任方"}
Dim count As Integer = 0
Dim ls As new List(of Row)
Dim dic As new Dictionary (Of DataRow, Row)
systemready = False
For Each r As Row In Tables("客服跟单").GetCheckedRows
    If r("订单状态") = "配送妥投 " Then
        Dim Filter = "[订单编号] = '" & r("订单编号") & "'"
        Dim dr As DataRow = DataTables("回单异常").sqlFind(filter)
        If dr Is Nothing Then
            ls.Add(r)
            count += 1
        Else
            dic.add(dr, r)
        End If
    Else
        e.Cancel = True
    End If
Next

Dim p As WinForm.ProgressBar
p = e.Form.Controls("ProgressBar1")
If ls.count > 0 Then
    p.Visible = True
    p.Maximum =  ls.Count - 1 '设置最大值
    p.Minimum = 0 '设置最小值
    p.Value = 0 '设置当前值
End If
Dim idx As Integer = 0
DataTables("客服跟单").StopRedraw
For Each r As Row In ls
    Dim dr As DataRow = DataTables("回单异常").AddNew
    For i As Integer = 0 To Cols1.Length -1
        If r.IsNull(Cols1(i)) Then
            dr(Cols2(i)) = Nothing
        Else
            dr(Cols2(i)) = r(Cols1(i))
           
        End If
       
    Next
    idx += 1
    p.Value = idx
r("订单状态") = "已提交"
   ' r.Remove()
Next
For Each key As DataRow In dic.Keys
    Dim r As Row = dic(key)
    Dim dr As DataRow = key
    For i As Integer = 0 To Cols1.Length -1
        If r.IsNull(Cols1(i)) Then
            dr(Cols2(i)) = Nothing
        Else
            dr(Cols2(i)) = r(Cols1(i))
        End If
    Next
Next

DataTables("客服跟单").ResumeRedraw
p.Visible = False

systemready = True
msgbox("共有 "& count &" 条数据提交" )
Tables("客服跟单").save
Tables("客服跟单").ClearCheckedRows

 

已发布的项目 数据死活提交不过去 没报错 回单异常没有任何一条数据 不存在相同订单编号  订单状态已是配送妥投 一直都是0条数据提交


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/5 17:56:00 [只看该作者]

Dim dr As DataRow = DataTables("回单异常").sqlFind(filter)

 

SqlFind是直接查找后台的数据,你这个表肯定已经有对应的数据了,好好排查一下。


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/1/6 8:57:00 [只看该作者]

回单异常已经初始化过 仍然传不过去

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/6 9:11:00 [只看该作者]

以下是引用sf020cf在2016/1/6 8:57:00的发言:
回单异常已经初始化过 仍然传不过去

 

看看是不是这句代码错了,多了空格

 

If r("订单状态") = "配送妥投 " Then


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/1/6 9:52:00 [只看该作者]

真是这个疏忽 导致了这样的异常

 


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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
  发帖心情 Post By:2016/1/6 11:32:00 [只看该作者]

Dim dt As DataTable = DataTables("应付款项")
Dim p As WinForm.ProgressBar
p = e.Form.Controls("ProgressBar1")
Dim filter As String = Tables("应付款项").Filter
filter = iif(filter>"", filter, "1=1")
Dim arys As List(of String()) = dt.GetValues( "司机|车牌|出车日期", "出车日期 is not null and 运费 is null and 点费 is null and " & filter)
If arys.count > 0 Then
    p.Visible = True
    p.Maximum =  arys.Count - 1 '设置最大值
    p.Minimum = 0 '设置最小值
    p.Value = 0 '设置当前值
End If

Dim idx As Integer = 0
DataTables("应付款项").StopRedraw

For Each ary() As String In  arys
    idx += 1
    p.Value = idx '加在这里
    Dim fil As String = "司机 = '" & ary(0) & "' and 车牌 = '" & ary(1) & "' and 出车日期 = #" & ary(2) & "#"
    Dim drs As List(of DataRow) = dt.Select(fil)
    For Each dr As DataRow In drs
        If DataTables("价目表").DataCols.Contains("车型_" & dr("车型")) Then
            Dim jdrs As List(of DataRow) = DataTables("价目表").Select("项目 like '%" & dr("项目") & "%' and 城市 like '%" & dr("城市") & "%'")
            For Each jdr As DataRow In jdrs
                If dr("地点") Like "*" & jdr("地点") & "*" Then
                    dr("运费") = jdr("车型_" & dr("车型"))
                    Exit For
                End If
再请教一下

一.这个城市 like '%" & dr("城市") & "%'") 现在是 价目表中是:广州  应付款项是:广州市  我必须把广州改为广州市才能计算 

二.出车日期 is not null and 运费 is null and 点费 is null and  " & filter  计算之后不一定 运费与点费都有值 任何一行只要这两个满足条件就能重算 我想只计算未锁定与车辆属性不是翔越的行 要怎么加代码 我这样改计算时报错

Dim arys As List(of String()) = dt.GetValues( "司机|车牌|出车日期", "出车日期 is not null and 运费 is null and 点费 is null and 车辆属性 <> '翔越' and e.DataRow.Locked = false " & filter)
司机后缺少操作数

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/6 11:38:00 [只看该作者]

1、价目表的数据必须包含应付款项的数据才能计算,也是就是一定要比它长;

 

2、Dim arys As List(of String()) = dt.GetValues( "司机|车牌|出车日期", "出车日期 is not null and 运费 is null and 点费 is null and 车辆属性 <> '翔越' and _Locked = False And " & filter)


 回到顶部
总数 18 上一页 1 2