以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  输入字符串的格式不正确  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=125496)

--  作者:yetle
--  发布时间:2018/9/29 14:46:00
--  输入字符串的格式不正确


.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2018.9.9.1
错误所在事件:窗口,销售订单,Button11,Click
详细错误信息:
输入字符串的格式不正确。不能在 衣裤尺码明细_XS 列中存储 <>。所需类型是 Int32。
输入字符串的格式不正确。

Dim dt2 As DataTable = DataTables("销售明细尺码")
Dim dt1 As DataTable = Tables("销售订单_table5").DataTable

For Each drr As DataRow In dt1.DataRows
    Dim fdr As DataRow = dt2.Find("款号ID = \'" & drr("款号ID") & "\' ")
If Tables("销售订单_table5").Cols.Contains("尺码_XS") Then  \'如果销售订单_table5中存在尺码_XS列
        fdr("衣裤尺码明细_XS")=drr("尺码_XS")  \'则将drr中尺码_XS的值赋给fdr衣裤尺码明细_XS
End If

next
[此贴子已经被作者于2018/9/29 14:45:52编辑过]

--  作者:有点蓝
--  发布时间:2018/9/29 15:17:00
--  
For Each drr As DataRow In dt1.DataRows
    Dim fdr As DataRow = dt2.Find("款号ID = \'" & drr("款号ID") & "\' ")
    If fdr IsNot Nothing AndAlso Tables("销售订单_table5").Cols.Contains("尺码_XS") Then  \'如果销售订单_table5中存在尺码_XS列
msgbox(drr("尺码_XS")) \'出错前这里是什么内容
        fdr("衣裤尺码明细_XS")=drr("尺码_XS")  \'则将drr中尺码_XS的值赋给fdr衣裤尺码明细_XS
    End If
    
Next

--  作者:yetle
--  发布时间:2018/9/29 15:51:00
--  
没有提示呢,我上传实例
[此贴子已经被作者于2018/9/30 14:54:35编辑过]

--  作者:有点蓝
--  发布时间:2018/9/29 16:04:00
--  
全部赋值的地方都改改

fdr("衣裤尺码明细_XS")=val(drr("尺码_XS"))

这种直接写个循环赋值就可以,没有必要一个尺码几行代码

For Each drr As DataRow In dt1.DataRows
    Dim str As String = "XS,S,M,........." 
    Dim t As Table = Tables("销售订单_table2")
    For Each s As String In str.Split(",")
        If t.Cols.Contains("尺码_" & s) Then
            fdr("衣裤尺码明细_XS")=val(drr("尺码_" & s))
        End If
    Next
Next

--  作者:yetle
--  发布时间:2018/9/30 9:05:00
--  
按老师的代码改了一下实例,有个错误提示,请帮我看看
[此贴子已经被作者于2018/9/30 14:54:25编辑过]

--  作者:有点蓝
--  发布时间:2018/9/30 10:20:00
--  
Dim tbl As Table = Tables("销售订单_table3")

Tables("销售订单_table2").Filter = "[款号ID] = \'" & tbl.current("款号ID") & "\'"
\' 对比更新
Dim dt2 As DataTable = DataTables("横向销售明细尺码")
Dim dt1 As DataTable = Tables("销售订单_table2").DataTable
Dim t As Table = Tables("销售订单_table2")
Dim str1 As String = "XS,S,M,L,XL,2XL,3XL,4XL,5XL,6XL,F,XF"
Dim str2 As String = "65,70,75,80,85,9095,100"
For Each drr As DataRow In dt1.DataRows
    Dim fdr As DataRow = dt2.Find("款号ID = \'" & drr("款号ID") & "\' ")
    If fdr IsNot Nothing Then
        
        For Each s As String In str1.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("衣裤尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
        For Each s As String In str2.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("文胸尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
        
        
        
        Tables("销售订单_table2").Filter = "[款号ID] = \'" & tbl.current("款号ID") & "\'"
        
    Else
        Dim dr1 As Row = Tables("横向销售明细尺码").AddNew
        dr1("订单号")=drr("订单号")
        dr1("款号")=drr("款号")
        dr1("颜色")=drr("颜色")
        dr1("杯型")=drr("杯型")
        dr1("货期")=drr("货期")
        dr1("款号ID")=drr("款号ID")
        dr1("物供号")=drr("物供号")
        
        dr1.Save()
        
        Syscmd.Table.Lock()
        Tables("销售订单_table2").Filter = "[款号ID] = \'" & tbl.current("款号ID") & "\'"
        
        
    End If
Next

--  作者:yetle
--  发布时间:2018/9/30 10:39:00
--  
这样是没有报错了,可是对应尺码的数量取值不对

也只有一行记录出来
[此贴子已经被作者于2018/9/30 10:42:19编辑过]

--  作者:有点蓝
--  发布时间:2018/9/30 11:11:00
--  
Dim tbl As Table = Tables("销售订单_table3")

Tables("销售订单_table2").Filter = "[款号ID] = \'" & tbl.current("款号ID") & "\'"
\' 对比更新
Dim dt2 As DataTable = DataTables("横向销售明细尺码")
Dim dt1 As DataTable = Tables("销售订单_table2").DataTable
Dim t As Table = Tables("销售订单_table2")
Dim str1 As String = "XS,S,M,L,XL,2XL,3XL,4XL,5XL,6XL,F,XF"
Dim str2 As String = "65,70,75,80,85,9095,100"
For Each drr As DataRow In dt1.DataRows
    Dim fdr As DataRow = dt2.Find("款号ID = \'" & drr("款号ID") & "\' ")
    If fdr IsNot Nothing Then
        
        For Each s As String In str1.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("衣裤尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
        For Each s As String In str2.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("文胸尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
    End If
        Dim dr1 As Row = Tables("横向销售明细尺码").AddNew
        dr1("订单号")=drr("订单号")
        dr1("款号")=drr("款号")
        dr1("颜色")=drr("颜色")
        dr1("杯型")=drr("杯型")
        dr1("货期")=drr("货期")
        dr1("款号ID")=drr("款号ID")
        dr1("物供号")=drr("物供号")
Next
Syscmd.Table.Lock()
Tables("横向销售明细尺码").save
Tables("销售订单_table2").Filter = "[款号ID] = \'" & tbl.current("款号ID") & "\'"
        
        
[此贴子已经被作者于2018/9/30 11:11:08编辑过]

--  作者:yetle
--  发布时间:2018/9/30 11:17:00
--  
有多行记录出来了,可是fdr IsNot Nothing 没有起作用,重复新增了记录,同时尺码数量没有取到

图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/9/30 11:17:27编辑过]

--  作者:有点蓝
--  发布时间:2018/9/30 11:31:00
--  
……
For Each drr As DataRow In dt1.DataRows
    Dim fdr As DataRow = dt2.Find("款号ID = \'" & drr("款号ID") & "\' ")
    If fdr IsNot Nothing Then
        
        For Each s As String In str1.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("衣裤尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
        For Each s As String In str2.Split(",")
            If t.Cols.Contains("尺码_" & s) Then
                fdr("文胸尺码明细_" & s)=val(drr("尺码_" & s))
            End If
        Next
        Dim dr1 As Row = Tables("横向销售明细尺码").AddNew
        dr1("订单号")=drr("订单号")
        dr1("款号")=drr("款号")
        dr1("颜色")=drr("颜色")
        dr1("杯型")=drr("杯型")
        dr1("货期")=drr("货期")
        dr1("款号ID")=drr("款号ID")
        dr1("物供号")=drr("物供号")
    End If
Next
……