以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表中规定的字段中必须输入数据才能保存  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177225)

--  作者:weijun
--  发布时间:2022/5/13 12:09:00
--  表中规定的字段中必须输入数据才能保存
请问保存按钮  数据表中部分规定的字段必须输入数据才能保存怎样写代码?
--  作者:有点蓝
--  发布时间:2022/5/13 12:13:00
--  
判断当前行

dim r as row = tables(“表A”).current
if r.isnull("第一列") then
msgbox("第一列没有填")
end if

判断整个表
if tables(“表A”).compute("count(第一列)","第一列 is null") > 0 then
msgbox("第一列还有没填的行")
en dif

--  作者:weijun
--  发布时间:2022/5/13 12:14:00
--  

Dim sts As String() = {"入库单号", "入库日期", "结算单位", "项目名称", "仓库名称", "业务类别", "采购类型"}
For Each st As String In sts \'关联字段任一字段为空的话,不能新增明细表数据
    If Forms("入库通知单登记").controls(st).value Is Nothing Then
        MessageBox.Show("请将红色必填字段填写完整!", "提醒")
        Return
    End If
Next

 

入库明细表字段规格  品名  数量 。。。等字段中也必须输入数据才能保存这段代码怎么写

 


For Each dt As DataTable In DataTables
        If dt.HasChanges Then
            e.Form.Controls("Label16").text = "正在保存数据..."
            Application.Doevents
            dt.Save
            e.Form.Controls("Label16").text = ""
        Else
            e.Form.Controls("Label16").text = ""
            e.Form.Controls("新单").Enabled = True
        End If
Next


--  作者:有点蓝
--  发布时间:2022/5/13 13:29:00
--  
Dim sts As String() = {"规格", "品名", "数量"}
For Each st As String In sts \'关联字段任一字段为空的话,不能新增明细表数据
    If tables(“入库明细表”).compute("count(" & st & ")",st & " is null") > 0 then
        MessageBox.Show(st & "没有填写完整!", "提醒")
        Return
    End If
Next

--  作者:weijun
--  发布时间:2022/5/13 13:47:00
--  

Dim sts As String() = {"入库单号", "入库日期", "结算单位", "项目名称", "仓库名称", "业务类别", "采购类型"}
For Each st As String In sts \'关联字段任一字段为空的话,不能新增明细表数据
    If Forms("入库通知单登记").controls(st).value Is Nothing Then
        MessageBox.Show("请将红色必填字段填写完整!", "提醒")
        Return
    End If
Next

 
Dim dr() As String = {"品名", "材质", "规格", "产地", "厂发数量", "厂发单价", "含税金额"}
For Each mx As String In dr
    If Tables("入库明细").Current.isnull(mx) = True Then
        MessageBox.Show("入库明细填写完整!", "提醒")
        Return
    End If
Next


For Each dt As DataTable In DataTables
        If dt.HasChanges Then
            e.Form.Controls("Label16").text = "正在保存数据..."
            Application.Doevents
            dt.Save
            e.Form.Controls("Label16").text = ""
        Else
            e.Form.Controls("Label16").text = ""
            e.Form.Controls("新单").Enabled = True
        End If
    Next


--  作者:weijun
--  发布时间:2022/5/13 13:47:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.5.12.2
错误所在事件:窗口,入库通知单登记,保存,Click
详细错误信息:
未将对象引用设置到对象的实例。

--  作者:weijun
--  发布时间:2022/5/13 13:49:00
--  
执行第一段代码没有问题,第二段有问题
--  作者:weijun
--  发布时间:2022/5/13 13:54:00
--  
找到原因了,入库明细必须有新增一行,没有新增一行代码怎样写?
--  作者:有点蓝
--  发布时间:2022/5/13 14:04:00
--  
    If Tables("入库明细").rows.count = 0 Then
        MessageBox.Show("入库明细没有数据!", "提醒")
        Return
    End If
--  作者:weijun
--  发布时间:2022/5/13 14:16:00
--  

Dim sts As String() = {"入库单号", "入库日期", "结算单位", "项目名称", "仓库名称", "业务类别", "采购类型"}
For Each st As String In sts \'关联字段任一字段为空的话,不能新增明细表数据
    If Forms("入库通知单登记").controls(st).value Is Nothing Then
        MessageBox.Show("请将红色必填字段填写完整!", "提醒")
        Return
    End If
Next

 If Tables("入库明细").rows.count = 0 Then
        MessageBox.Show("入库明细没有数据!", "提醒")
        Return
    End If

Dim dr As String() = {"品名", "材质", "规格", "产地", "厂发数量", "厂发单价", "含税金额"}
For Each mx As String In dr
    If Tables("入库明细").Current.isnull(mx) = True Then
        MessageBox.Show("入库明细填写完整!", "提醒")
        Return
    End If
Next

For Each dt As DataTable In DataTables
    If dt.HasChanges Then
        e.Form.Controls("Label16").text = "正在保存数据..."
        Application.Doevents
        dt.Save
        e.Form.Controls("Label16").text = ""
    Else
        e.Form.Controls("Label16").text = ""
        e.Form.Controls("新单").Enabled = True
    End If
Next

 

好了谢谢