Foxtable(狐表)用户栏目专家坐堂 → 数据库表与当前表


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

主题:数据库表与当前表

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


加好友 发短信
等级:一尾狐 帖子:412 积分:2665 威望:0 精华:0 注册:2015/10/2 23:48:00
数据库表与当前表  发帖心情 Post By:2015/12/24 14:33:00 [只看该作者]

有两张表 都是外部数据源 表一包含了几天的数据 假如已经把数据都填充到表二 在表中有一列订单编号是唯一值 不可重复填充

但有这么一个问题 假如表二不限制只显示哪一天数据的情况下 表一不可重复填充到表二 可是比如表一有三天的数据 这三天的数据都已经填充到表二 那在表二假如按日期刷新出当天数据后 前两天天的数据是可以再一次提交的 就好比代码只对比了表二当前是否有相同订单编号 我是想让代码去数据库的表二进行对比 可datatable("表名")不就是数据库表吗?

代码是:

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.IsNull("订单编号") = False
        Dim Filter = "[订单编号] = '" & r("订单编号") & "'"
        Dim dr As DataRow = DataTables("客服跟单").find(filter)
        If dr Is Nothing Then
            ls.Add(r)
            count += 1
        Else
            dic.add(dr, r)
        End If
    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
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


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


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

1、客服跟单 只要加载了所有数据,就不可能出现重复;

 

2、即便 客服跟单 没有加载所有数据,你可以直接用sqlFind来查,甚至,先加载所有数据,再find


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


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

可现在情况是 客服跟单如果是刷新显示当天数据 配载订单未刷新 表中有当天与昨天的数据 如果全选配载订单表提交到客服跟单 那么即使客服跟单已经有了昨天的数据 可是未显示

这次的提交也会重新把配载订单的当前数据与客服跟单的当前数据比对订单编号 那么因为客服跟单当前表不包含昨天的数据 所以昨天的数据就可以重复提交  就是这个问题


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


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

认认真真看2楼。

 

要么1、加载全部数据;

 

要么2、用sqlFind查找数据


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


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

意思是这样的吗 不能用load 只能用sqlfind (不管是否全部加载数据)

那刷新的按钮我这样改不行啊

Dim sd As WinForm.DateTimePicker
Dim ed As WinForm.DateTimePicker
sd = e.Form.Controls("DateTimePicker1")
ed = e.Form.Controls("DateTimePicker2")
Dim cpbh As String = e.Form.Controls("项目").Value

Dim filter As String = "1=1"
If sd.Value <> Nothing Then
    filter &= " And 出车日期 >= '" & sd.value & "'"
End If
If ed.Value <> Nothing Then
    filter &= " And 出车日期 <= '" & ed.value & "'"
End If
If cpbh <> "" Then
    Dim temp As String = "1=2"
    For Each s As String In cpbh.split("/")
        temp &= " or [项目] Like '%" & s & "%' "
    Next
    filter &= " And (" & temp & ")"
 End If
If ed.value = Nothing AndAlso sd.value = Nothing Then
    filter &= " And 出车日期 = '" & Date.today & "'"
End If
DataTables("配载订单").sqlFind("filter")
 应该是我写错语法了 没反应 也不报错

 

 


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


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

DataTables("配载订单").LoadFilter = filter

DataTables("配载订单").Load

 

改成

 

Tables("配载订单").Filter = Filter

 

---------------------------------------------或者,1楼的代码,find改成sqlFind


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


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

 If r("项目") = "
玛氏食品
箭牌
李锦记
亚太啤酒
包道餐饮
思念食品
乐斯福(广州)
安利
无限极
IDI
LG
中电
千里马返品
傲胜
飞利浦
福州三通
麦德龙
沃尔玛
Forever New
南新无纺布
白石钙
大昌华嘉
大昌洋行
大恒贸易
宏一商贸
上海瑞勋
新上化学
上海冠鹏
德逸轩
施耐德
泰科达-普利司通
百特医疗
金发科技
LG胶粒
曼秀雷敦
立邦
阿克苏

" Then

项目名称之间用什么连接 or \ |

 


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


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

select case r("项目")

    case "曼秀雷敦", "立邦", "阿克苏"

        '代码

end Select

 

http://www.foxtable.com/help/topics/0224.htm

 


 回到顶部