以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  单元格值的修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184859)

--  作者:青丘狐
--  发布时间:2023/1/10 17:47:00
--  单元格值的修改

表1   有字段  重量 ,理计,输入重量是时,系统默认 理计 等于  重量,当理计不等于重量是可以手工修改,修改后的理计值不会再变回重量的值

请问这段代码怎样写


--  作者:有点蓝
--  发布时间:2023/1/10 20:05:00
--  
判断一下理计是不是有值就行了

If e.DataCol.Name = "重量" Then 
    If e.DataRow.IsNull("
理计"Then 
        e.
DataRow("
理计") = e.NewValue 
    End
 If
End
 
If

--  作者:青丘狐
--  发布时间:2023/1/10 21:26:00
--  

Tables("入库明细码单").AllowEdit = False
For Each dr As DataRow In DataTables("入库明细").DataRows
    dr("理计数量") = dr("厂发数量")
    dr("理计重量") = dr("厂发重量")
    If e.DataCol.Name = "厂发重量" Then

If e.DataCol.Name = "厂发数量" Then
        If e.DataRow.IsNull("理计数量") Then

If e.DataRow.IsNull("理计重量") Then
            e.DataRow("理计重量") = e.NewValue   

e.DataRow("理计数量") = e.NewValue     
        End If

         End If
  End If
    End If
Next

 

 

没有作用不能改变

[此贴子已经被作者于2023/1/10 21:26:29编辑过]

--  作者:有点蓝
--  发布时间:2023/1/10 21:35:00
--  
datacolchanged事件,不需要遍历,写好代码后,重置一次列即可

If e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("
理计重量"Then 
        e.
DataRow("
理计重量") = e.NewValue 
    End
 If
    If e.DataRow.IsNull("理计数量"Then 
        e.
DataRow("
理计数量") = e.NewValue 
    End
 If

End
 
If


--  作者:青丘狐
--  发布时间:2023/1/10 22:17:00
--  

For Each dr As DataRow In DataTables("入库明细").DataRows
    dr("理计数量") = dr("厂发数量")
    dr("理计重量") = dr("厂发重量")
Next

 

这段用于默认理计数量=厂发数量,理计重量=厂发重量,不需要遍历请问怎样写代码


--  作者:青丘狐
--  发布时间:2023/1/10 22:45:00
--  
代码效果是填写厂发数量 ,厂发重量 默认 理计数量=厂发数量理计重量=厂发重量,系统自动填写,系统填写后可以修改理计数量,理计重量

For Each dr As DataRow In DataTables("入库明细").DataRows
    dr("理计数量") = dr("厂发数量")
    dr("理计重量") = dr("厂发重量")
Next

加入这段代码可以实现系统自动填写    理计数量=厂发数量理计重量=厂发重量    

If e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("
理计重量"Then 
        e.
DataRow("
理计重量") = e.NewValue 
    End
 If
    If e.DataRow.IsNull("理计数量"Then 
        e.
DataRow("
理计数量") = e.NewValue 
    End
 If

End If
加入这段代码无效,修改完    理计数量,理计重量, 又变回到   厂发数量厂发重量相同的值 ,没法重置
  
请问要实现效果怎样写代码
[此贴子已经被作者于2023/1/10 22:46:44编辑过]

--  作者:有点蓝
--  发布时间:2023/1/10 23:01:00
--  
If e.DataCol.Name = "厂发重量" Then 
    If e.DataRow.IsNull("
理计重量"Then 
        e.
DataRow("
理计重量") = e.NewValue 
    End
 If
elseIf e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("理计数量"Then 
        e.
DataRow("
理计数量") = e.NewValue 
    End
 If

End If

--  作者:青丘狐
--  发布时间:2023/1/11 12:25:00
--  
If e.DataCol.Name = "厂发重量" Then 
    If e.DataRow.IsNull("理计重量") Then 
        e.DataRow("理计重量") = e.NewValue 
    End If
ElseIf e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("理计数量") Then 
        e.DataRow("理计数量") = e.NewValue 
    End If
End If

\' 重填厂发重量理计重量=厂发重量
If e.DataCol.Name = "厂发重量" Then 
    If e.DataRow.IsNull("理计重量") = False Then
        e.DataRow("厂发重量") = e.NewValue
        e.DataRow("理计重量") = e.DataRow("厂发重量")
    End If
ElseIf e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("理计数量") = False Then 
        e.DataRow("厂发数量") = e.NewValue
        e.DataRow("理计数量") = e.DataRow("厂发数量")
    End If
End If

\' 清空理计重量理计重量为空值时 理计重量=厂发重量
If e.DataCol.Name = "厂发重量" Then 
    If e.DataRow.IsNull("理计重量") Then   
        e.DataRow("理计重量") = e.DataRow("厂发重量")
    ElseIf e.DataCol.Name = "厂发数量" Then 
        e.DataRow("理计数量") = e.DataRow("厂发数量")
    End If
End If

理计重量为空值时 理计重量=厂发重量这段代码没有作用,请问要怎样修改
代码可以优化吗?

[此贴子已经被作者于2023/1/11 12:26:22编辑过]

--  作者:有点蓝
--  发布时间:2023/1/11 14:13:00
--  
只保留下面代码,其它都去掉,如果不行请上传实例说明

If e.DataCol.Name = "厂发重量" Then 
    If e.DataRow.IsNull("理计重量") Then 
        e.DataRow("理计重量") = e.NewValue 
    End If
ElseIf e.DataCol.Name = "厂发数量" Then 
    If e.DataRow.IsNull("理计数量") Then 
        e.DataRow("理计数量") = e.NewValue 
    End If
End If

--  作者:青丘狐
--  发布时间:2023/1/11 15:13:00
--  
上传实例说明请老师帮忙看看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:单元格值的修改.rar


[此贴子已经被作者于2023/1/11 15:13:37编辑过]