Foxtable(狐表)用户栏目专家坐堂 → 回写数据至sql数据库


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

主题:回写数据至sql数据库

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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
回写数据至sql数据库  发帖心情 Post By:2017/7/29 14:33:00 [只看该作者]

求一段代码或者思路:
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170729142819.png
图片点击可在新窗口打开查看
如图,这是一个数据表,通过以下代码(按钮)实现“数据从数据库导入,现在需要针对光标选中的行和红框内的数据,判断是否更,如果是的话把对应的数据“更新至后台数据库”(按钮)
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim sCols() As String = {"APS_DOC_NO","计划批号","需求单号","计划类型","发放时间","需求时间","品号","品名","图号","材质","规格","计划数量","需求量","已发放","本次发放数量","单位","库存量","备注","供应商","投料尺寸"}
Dim dCols() As String = {"APS单号","计划批号","需求单号","计划类型","发放时间","需求时间","品号","品名","图号","材质","规格","计划数量","需求量","已发放","本次发放数量","单位","库存量","备注","供应商","投料尺寸"}
cmd.C
cmd.CommandText = "Sele ct top 800 APS_DOC_NO,MDS_VERSION_TIMES As [计划批号],DEMAND AS [需求单号],PLAN_TYPE As [计划类型],convert(datetime ,DEMAND_DATE,120) AS [需求时间],DOC_DATE AS [发放时间],PLAN_SUGGESTED_QTY AS[计划数量],QTY AS[需求量],RELEASED_QTY AS [已发放], CURRENT_RELEASE_QTY AS [本次发放数量],{UNIT}.[UNIT_NAME] AS [单位],{SUGGESTION_PLAN}.[REMARK] AS [备注],ITEM_CODE AS [品号],ITEM_NAME AS [品名],SHORTCUT AS [材质],ITEM_SPECIFICATION AS [规格],DRAWING_NO AS [图号],[INVENTORY_QTY] As [库存量], {ITEM}.UDF026 As [投料尺寸],[SUPPLIER_NAME] As [供应商] From ((({SUGGESTION_PLAN} Inner JOIN {ITEM} ON {ITEM}.[ITEM_BUSINESS_ID] = {SUGGESTION_PLAN}.[ITEM_ID])  LEFT JOIN {SUPPLIER} ON {SUPPLIER}.[SUPPLIER_BUSINESS_ID] = {SUGGESTION_PLAN}.[SUGGEST_SUPPLIER_ID])Inner JOIN {UNIT} ON {UNIT}.[UNIT_ID] = {SUGGESTION_PLAN}.[UNIT_ID])Inner JOIN {INV_COST_BAL} ON {INV_COST_BAL}.[ITEM_ID] = {SUGGESTION_PLAN}.[ITEM_ID] ORDER BY [DOC_DATE] Desc"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
Dim t As DataRow= DataTables("物料需求计划").Find("APS单号 = '" & dr(sCols(0)) & "'")
    If t Is Nothing Then '如果不存在同编号的订单
    t = DataTables("物料需求计划").AddNew()
    End If
    For i As Integer =0 To sCols.Length -1
        t(dCols(i)) = dr(sCols(i))
    Next

Next
dt.save


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


加好友 发短信
等级:超级版主 帖子:107720 积分:547933 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/29 15:44:00 [只看该作者]

只能对单表查询进行更新,如

cmd.CommandText = "select * from 表A"
dt = cmd.ExecuteReader(true)

或者使用sql进行更新

cmd.CommandText = "update 表A set 第一列='xxx' where 主键='xxx'"
cmd.ExecuteNonQuery

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


加好友 发短信
等级:幼狐 帖子:169 积分:1678 威望:0 精华:0 注册:2014/3/27 16:44:00
  发帖心情 Post By:2017/7/30 13:05:00 [只看该作者]

这种更新方式没法根据表格里的内容更新吧?需要在代码里写入更新后的值?

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


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

加入一列标记列,在datacolchanged事件写代码

 

e.datarow("修改") = true

 

你写按钮保存的时候,就对应的查找修改各个表的数据

 

For each dr As DataRow in DataTables("表A").select("修改 = true")

    Dim fdr As DataRow = Datatables("表B").find("第一列 = '" & dr("第一列") & "'")

    If fdr Is Nothing Then

        fdr = Datatables("表B").addnew

    End If

    fdr("第一列") = dr("第一列")

    fdr("第二列") = dr("第二列")

Next

[此贴子已经被作者于2017/7/30 15:56:12编辑过]

 回到顶部