Foxtable(狐表)用户栏目专家坐堂 → [求助]临时表怎么更新后台数据


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

主题:[求助]临时表怎么更新后台数据

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
[求助]临时表怎么更新后台数据  发帖心情 Post By:2019/10/23 17:43:00 [只看该作者]

老师,您好!
我在窗口中生成一个临时表(与后台数据表结构相同),然后用Excel表数据导入数据到临时表,自动比对临时表与后台对应数据变动的记录(是不是按照列比对?),再更新变动过的数据。
如果全履盖的话,会浪费很多电脑资源。也不合理
我应该怎么做?谢谢老师!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

查询,然后判断、赋值

Dim
 v As Boolean
For Each 
dr As DataRow In DataTables("临时表").DataRows
dim nr as datarow = DataTables("表A").Find("第二列 = " & dr("第一列"))
    If nr
 Isnot Nothing Then
      
更新变动过的数据
    End If
Next
DataTables("表A").save

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/10/25 14:03:00 [只看该作者]

老师你好!
后台更新是不是用“SQLReplaceFor”每列分别更新,但我的表中有30多个列,会不会速度会很慢,有没有其他的办法?

比如我不用临时表,而用SQLTable表,默认不加载数据,导入后更新。应该怎么写代码?
谢谢老师!

[此贴子已经被作者于2019/10/25 14:05:02编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110345 积分:561573 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 14:07:00 [只看该作者]

SQLTable表?那么导入后直接写代码保存就可以了

datatables("窗口1_table1").save

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/10/25 14:12:00 [只看该作者]

老师代码怎么写?应该不能直接保存吧,因为新的记录行主键与相同编号的后台记录行不一样的。
[此贴子已经被作者于2019/10/25 14:13:58编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110345 积分:561573 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 14:14:00 [只看该作者]

SQLTable表肯定可以直接保存,除非不是SQLTable,或者另外使用fill,DataSource更改了表

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/10/25 14:58:00 [只看该作者]

老师我试过了,直接保存会重复新增行
我的代码是:
With DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表")
    .DataRows.Clear() '清除所有行
End With

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "Excel文件|*.xlsx|Excel文件|*.xls" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    MessageBox.Show("你选择的是:" & dlg.FileName,"提示") '提示用户选择的文件
End If

Dim Book As New XLS.Book(dlg.FileName)
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Tables("导入核算项目科目组合表_金蝶核算项目科目组合表").StopRedraw()
Dim nms() As String = {"科目名称","安全设施费","办公费用","城市维护建设税","待抵扣进项","待认证进项税金","地方教育费附加","分包成本","福利费","工程材料","工程施工","管理费用","计算抵扣进项","简易计税","建造合同成本","建造合同收成本11","建造合同收成本3","建造合同收入","建造合同收入11","建造合同收入3","教育税费附加","进项税金","进项税金转出","临时设施费","内部往来","其他费用","人工费用","施工机械使用费","水电费","所得税","项目附征个税","销项税额抵减","销项税金","已交税金","印花税","应付账款","应交税费","应交增值税","应收账款","营业税","营业税金及附加","预付账款","预交所得税","预征税金","暂收款","招待费用","折旧费用","职工教育经费","主营业务成本","主营业务收入","总部往来"}
For n As Integer = 1 To Sheet.Rows.Count -1
    Dim bh As String = sheet(n,0).Text
    Dim dr As DataRow = DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表").Find("科目名称 = '" & bh & "'")
    If dr Is Nothing Then '如果不存在同编号的订单
        dr =  DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表").AddNew()
    End If
    For m As Integer = 0 To nms.Length - 1
        dr(nms(m)) = Sheet(n,m).Value
    Next
Next
Tables("导入核算项目科目组合表_金蝶核算项目科目组合表").ResumeRedraw()
DataTables("核算项目科目组合表").DataCols("科目名称").RaiseDataColChanged()
Dim dt As DataTable = DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表")
For Each dr As DataRow In dt.DataRows
    If dr.RowState = DataRowState.Modified AndAlso dr.IsNull("更新记录_更新日期") OrElse dr("更新记录_更新日期") < Date.Now Then
        dr("更新记录_更新日期") = Date.Now
        'dr("更新记录_更新时间") = Format(Date.Now,"HH:mm:ss")
        dr("更新记录_更新人") = User.Name
    End If
Next
DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表").Save()
DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表").AllowEdit = False
[此贴子已经被作者于2019/10/25 15:00:19编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110345 积分:561573 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 15:03:00 [只看该作者]

11
[此贴子已经被作者于2019/10/25 15:13:35编辑过]

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


加好友 发短信
等级:童狐 帖子:266 积分:2150 威望:0 精华:0 注册:2012/3/28 16:49:00
  发帖心情 Post By:2019/10/25 15:09:00 [只看该作者]

另外

dr("更新记录_更新时间") = Format(Date.Now,"t")

这段代码在SQLTable 中执行会出错

后来改为

dr("更新记录_更新时间") = Format(Date.Now,"HH:mm:ss")

也同样出错,应该怎么写?

 


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110345 积分:561573 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/25 15:17:00 [只看该作者]

如果想要和后台数据比较不重复,需要使用sqlfind
Dim dr As DataRow = DataTables("导入核算项目科目组合表_金蝶核算项目科目组合表").SQLFind("科目名称 = '" & bh & "'")

更新时间如果是日期型的列,直接赋值就可以了
dr("更新记录_更新时间") = Date.Now

如果要忽略日期部分,可以这样
dr("更新记录_更新时间") = Format(Date.Now,"0001-01-01 HH:mm:ss")

 回到顶部
总数 13 1 2 下一页