以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 窗口勾选数据录入 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164241) |
-- 作者:采菊东篱下 -- 发布时间:2021/4/30 21:37:00 -- 窗口勾选数据录入 下面的代码已成功实现勾选窗口中的数据录入下表中,现在我想把红色部份代码改为替代单元格数据,因为表中已存在空行,只需把数据录入,不需要删除空行后再添加,且有时一些其他列已录入数据,下面的代码会把已录入数据删除,我把红色代码直接删除,就报错,请教应如何改?
DataTables("月租收费_Table1").DeleteFor("[车牌号码] is null ") For Each dt As DataRow In DataTables("批量勾选_Table1").Select("[车牌号码] is not null") Dim r As DataRow = DataTables("月租收费_Table1").Find("[车牌号码] = \'" & dt("车牌号码") & "\'") If r Is Nothing Then If dt("勾选") = True Then r = DataTables("月租收费_Table1").addnew r("住址_序号") = dt("住址_序号") r("住址_巷") = dt("住址_巷") r("住址_号") = dt("住址_号") r("住址_房") = dt("住址_房") r("姓名") = dt("姓名") r("固定电话") = dt("固定电话") r("手机号码") = dt("手机号码") r("车牌号码") = dt("车牌号码") r("备注") = dt("备注") End If End If Next If DataTables("月租收费_Table1").DataRows.Count < 10 Then Dim i As Integer = 10 - DataTables("月租收费_Table1").DataRows.Count DataTables("月租收费_Table1").AddNew(i) End If e.Form.Close() |
-- 作者:有点酸 -- 发布时间:2021/5/1 8:11:00 -- DataTables("月租收费_Table1").DeleteFor("[车牌号码] is null ") For Each dt As DataRow In DataTables("批量勾选_Table1").Select("[车牌号码] is not null") If dt("勾选") = True Then Dim r As DataRow = DataTables("月租收费_Table1").Find("[车牌号码] = \'" & dt("车牌号码") & "\'") If r Is Nothing Then r = DataTables("月租收费_Table1").addnew End If r("住址_序号") = dt("住址_序号") r("住址_巷") = dt("住址_巷") r("住址_号") = dt("住址_号") r("住址_房") = dt("住址_房") r("姓名") = dt("姓名") r("固定电话") = dt("固定电话") r("手机号码") = dt("手机号码") r("车牌号码") = dt("车牌号码") r("备注") = dt("备注") End If End If Next If DataTables("月租收费_Table1").DataRows.Count < 10 Then Dim i As Integer = 10 - DataTables("月租收费_Table1").DataRows.Count DataTables("月租收费_Table1").AddNew(i) End If e.Form.Close()
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/1 9:21:00 -- 你的代码还是添加行啊,打开窗口本身已是空表,我的要求是不添加行,直接赋值到对应的单元格,因为月租收费窗口本身写了数据录入先后顺序提示、锁定代码,不安提示顺序根本无法录入,怕录入人不安要求填写,导致一些列没录入数据,如果执行新添行录入数据,会让先录入数据与勾选数据录入后不在同一行,这也是我上面代码为什么先删除空行,再添加新行数据的原因。 [此贴子已经被作者于2021/5/5 9:58:28编辑过]
|
-- 作者:有点酸 -- 发布时间:2021/5/1 10:00:00 -- 2楼的代码是如果存在相同车牌号码的行,则不增加行,直接使用原来的行,否则增加一行 |
-- 作者:采菊东篱下 -- 发布时间:2021/5/1 10:08:00 -- 勾选的正是车牌号码,表里根本无数据,不存在这个条件。 [此贴子已经被作者于2021/5/1 10:09:18编辑过]
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/1 10:31:00 -- 我改代码的目的就是不要添加行,不要把我已录入的数据覆盖了! 你的代码我试过了,一样把已录入数据变没了。
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/1 15:01:00 -- 这样写不报错,但一个数据都没有显示 Dim dts As List(Of DataRow) = DataTables("批量勾选_Table1").Select("[勾选] = True") For c As Integer = 0 To dts.count - 1 Dim r As DataRow = DataTables("月租收费_Table1").DataRows(c) If r Is Nothing Then r("住址_序号") = dts(c)("住址_序号") r("住址_巷") = dts(c)("住址_巷") r("住址_号") = dts(c)("住址_号") r("住址_房") = dts(c)("住址_房") r("姓名") = dts(c)("姓名") r("固定电话") = dts(c)("固定电话") r("手机号码") = dts(c)("手机号码") r("车牌号码") = dts(c)("车牌号码") r("备注") = dts(c)("备注") r.Save End If Next If DataTables("月租收费_Table1").DataRows.Count < 10 Then Dim i As Integer = 10 - DataTables("月租收费_Table1").DataRows.Count DataTables("月租收费_Table1").AddNew(i) End If e.Form.Close()
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/2 10:51:00 -- 我已用代码限定数据录入先后顺序,解决数据被覆盖问题,但上例给指定行、列赋值我还想很想知道如何实现,它是我绕不开的心结。 [此贴子已经被作者于2021/5/2 10:52:42编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/5 9:47:00 -- 比如6楼的图,有3行有数据,7行没有数据,假设弹出窗口勾选了8行,那么应该给6楼月租收费单的哪些行赋值? |
-- 作者:采菊东篱下 -- 发布时间:2021/5/5 10:06:00 -- Dim dts As List(Of DataRow) = DataTables("批量勾选_Table1").Select("[勾选] = True") For c As Integer = 0 To dts.count - 1 Dim r As DataRow = DataTables("月租收费_Table1").DataRows(c) If r Is Nothing Then r(c)("住址_序号") = dts(c)("住址_序号") r(c)("住址_巷") = dts(c)("住址_巷") r(c)("住址_号") = dts(c)("住址_号") r(c)("住址_房") = dts(c)("住址_房") r(c)("姓名") = dts(c)("姓名") r(c)("固定电话") = dts(c)("固定电话") r(c)("手机号码") = dts(c)("手机号码") r(c)("车牌号码") = dts(c)("车牌号码") r(c)("备注") = dts(c)("备注") r(c).Save End If Next If DataTables("月租收费_Table1").DataRows.Count < 10 Then Dim i As Integer = 10 - DataTables("月租收费_Table1").DataRows.Count DataTables("月租收费_Table1").AddNew(i) End If e.Form.Close() 这样写我也试过了,DataTables("月租收费_Table1")里一行数据都没输入。
|