Foxtable(狐表)用户栏目专家坐堂 → 这个代码有什么问题


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

主题:这个代码有什么问题

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


加好友 发短信
等级:三尾狐 帖子:760 积分:4714 威望:0 精华:0 注册:2011/12/17 18:37:00
这个代码有什么问题  发帖心情 Post By:2014/1/3 20:43:00 [只看该作者]

With Tables("主表")
    For i As Integer = .BottomRow To .TopRow Step -1
        Dim r1 As Row = .Rows(i)
        Dim r2 As Row = Tables("主表").AddNew
        For Each c As Col In .Cols
            r2(c.name) = r1(c.name)
        Next
        r2.Save
    Next
End With

Dim r As Row = Tables("主表").Current
If r Is Nothing Then
    Return
End If

Dim cnt As Integer
Dim drs As List(Of DataRow)
drs = Tables(e.form.Name & "_Table1").DataTable.Select("工作单号='" & e.Form.Controls("TextBox2").Text & "' And 拆piao = True")
For Each dr As DataRow In drs
    Dim dx As Row = Tables("主表明细").AddNew
    dx("工作单号") = r("工作单号")
    dx("录入日期")=Date.Now
    dx("录入人")=_UserName
    cnt = drs.Count
    dx("二十尺集卡") = dr("二十尺集卡")
    dx("四十尺集卡")=dr("四十尺集卡")
    dx("箱号")=dr("箱号")
    dx("封号")=dr("封号")
    dx("船名航次")=dr("船名航次")
    dx("船公司")=dr("船公司")
    dx("运单号")=dr("运单号")
    dr.Delete
Next

MessageBox.Show(cnt)

Dim cmd As new SQLCommand
Dim dt As DataTable 
cmd.C
cmd.CommandText = "Select * from{费用明细} Where 工作单号='" & e.Form.Controls("TextBox2").Text & "'"
dt = cmd.ExecuteReader(True) '记得将参数设置为True
For Each dr1 As DataRow In dt.DataRows
    Dim dh As Row = Tables("费用明细").AddNew
    dh("工作单号") = r("工作单号")
    dh("录入日期")=Date.Now
    dh("录入人")=_UserName
    dh("费用项") = dr1("费用项")
    dh("应收付")=dr1("应收付")
    dh("结算日期")=dr1("结算日期")
    dh("单价")=dr1("单价")
    dh("结算单位")=dr1("结算单位")
    dh("船名航次")=dr1("船名航次")
    dh("船公司")=dr1("船公司")
    dh("运单号")=dr1("运单号")
    dh("数量")= cnt
    dr1("数量")=dr1("数量") - cnt
Next
Tables("主表.费用明细").DataTable.Save
Tables(e.form.Name & "_Table1").DataTable.Save
Tables("费用明细").DataTable.Save
Tables("主表明细").DataTable.Save
Dim ids As String
If DataTables("主表").DataRows.Count = 0 Then '如果订单表没有数据
    DataTables("主表明细").LoadFilter = "工作单号 Is Null" '不加载订单明细
Else
    For Each dr As DataRow In DataTables("主表").DataRows
        If ids="" Then
            ids="'" & dr("工作单号") & "'"
        Else
            ids=ids & ",'" & dr("工作单号") & "'"
        End If
    Next
    ids="(" & ids & ")"
    DataTables("主表明细").LoadFilter = "工作单号 In " & ids
    DataTables("主表明细").Load()
    DataTables("费用明细").LoadFilter = "工作单号 In " & ids
    DataTables("费用明细").Load()
End If


  这个代码有啥问题,发现窗口表1 以及 费用明细 的工作单号会全部改成 新增的 工作单号    我的愿意是 勾选的 新增,新增后工作单号是新增的号码, 费用明细全部复制一遍 新增的工作单号也是新增的号码 

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


加好友 发短信
等级:三尾狐 帖子:760 积分:4714 威望:0 精华:0 注册:2011/12/17 18:37:00
  发帖心情 Post By:2014/1/3 20:56:00 [只看该作者]

总算写好了

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


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

 呃……

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


加好友 发短信
等级:版主 帖子:1693 积分:12123 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/1/3 21:43:00 [只看该作者]

以下是引用jianjingmaoyi在2014-1-3 20:43:00的发言:
With Tables("主表")
    For i As Integer = .BottomRow To .TopRow Step -1
        Dim r1 As Row = .Rows(i)
        Dim r2 As Row = Tables("主表").AddNew                         ’你复制选中行(直觉上 不会是是表名错了吧)
        For Each c As Col In .Cols
            r2(c.name) = r1(c.name)
        Next
        r2.Save
    Next
End With

Dim r As Row = Tables("主表").Current                         ‘当前选中行为最后新增的那一行
If r Is Nothing Then
    Return
End If

Dim cnt As Integer
Dim drs As List(Of DataRow)
drs = Tables(e.form.Name & "_Table1").DataTable.Select("工作单号='" & e.Form.Controls("TextBox2").Text & "' And 拆piao = True")
For Each dr As DataRow In drs
    Dim dx As Row = Tables("主表明细").AddNew
    dx("工作单号") = r("工作单号")                                             ‘工单单号就是最后新增哪行的单号
    dx("录入日期")=Date.Now
    dx("录入人")=_UserName
    cnt = drs.Count
    dx("二十尺集卡") = dr("二十尺集卡")
    dx("四十尺集卡")=dr("四十尺集卡")
    dx("箱号")=dr("箱号")
    dx("封号")=dr("封号")
    dx("船名航次")=dr("船名航次")
    dx("船公司")=dr("船公司")
    dx("运单号")=dr("运单号")
    dr.Delete
Next

MessageBox.Show(cnt)

Dim cmd As new SQLCommand
Dim dt As DataTable 
cmd.C
cmd.CommandText = "Select * from{费用明细} Where 工作单号='" & e.Form.Controls("TextBox2").Text & "'"
dt = cmd.ExecuteReader(True) '记得将参数设置为True
For Each dr1 As DataRow In dt.DataRows
    Dim dh As Row = Tables("费用明细").AddNew
    dh("工作单号") = r("工作单号")
    dh("录入日期")=Date.Now
    dh("录入人")=_UserName
    dh("费用项") = dr1("费用项")
    dh("应收付")=dr1("应收付")
    dh("结算日期")=dr1("结算日期")
    dh("单价")=dr1("单价")
    dh("结算单位")=dr1("结算单位")
    dh("船名航次")=dr1("船名航次")
    dh("船公司")=dr1("船公司")
    dh("运单号")=dr1("运单号")
    dh("数量")= cnt
    dr1("数量")=dr1("数量") - cnt
Next
Tables("主表.费用明细").DataTable.Save
Tables(e.form.Name & "_Table1").DataTable.Save
Tables("费用明细").DataTable.Save
Tables("主表明细").DataTable.Save
Dim ids As String
If DataTables("主表").DataRows.Count = 0 Then '如果订单表没有数据
    DataTables("主表明细").LoadFilter = "工作单号 Is Null" '不加载订单明细
Else
    For Each dr As DataRow In DataTables("主表").DataRows
        If ids="" Then
            ids="'" & dr("工作单号") & "'"
        Else
            ids=ids & ",'" & dr("工作单号") & "'"
        End If
    Next
    ids="(" & ids & ")"
    DataTables("主表明细").LoadFilter = "工作单号 In " & ids
    DataTables("主表明细").Load()
    DataTables("费用明细").LoadFilter = "工作单号 In " & ids
    DataTables("费用明细").Load()
End If


  这个代码有啥问题,发现窗口表1 以及 费用明细 的工作单号会全部改成 新增的 工作单号    我的愿意是 勾选的 新增,新增后工作单号是新增的号码, 费用明细全部复制一遍 新增的工作单号也是新增的号码 

[此贴子已经被作者于2014-1-3 22:01:40编辑过]

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


加好友 发短信
等级:三尾狐 帖子:760 积分:4714 威望:0 精华:0 注册:2011/12/17 18:37:00
  发帖心情 Post By:2014/1/3 22:13:00 [只看该作者]

红字 理解对的

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


加好友 发短信
等级:版主 帖子:1693 积分:12123 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/1/3 22:23:00 [只看该作者]

以下是引用jianjingmaoyi在2014-1-3 22:13:00的发言:
红字 理解对的

图片点击可在新窗口打开查看


 回到顶部