以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这个代码有什么问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44568)

--  作者: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 拆票 = 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
--  发布时间:2014/1/3 20:56:00
--  
总算写好了
--  作者:有点甜
--  发布时间:2014/1/3 21:03:00
--  
 呃……
--  作者:逛逛
--  发布时间: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 拆票 = 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
--  发布时间:2014/1/3 22:13:00
--  
红字 理解对的
--  作者:逛逛
--  发布时间:2014/1/3 22:23:00
--  
以下是引用jianjingmaoyi在2014-1-3 22:13:00的发言:
红字 理解对的

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