以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 遍历行与列赋值 得到列名值为空?怎么解决呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=181007) |
-- 作者:cnsjroom -- 发布时间:2022/10/22 11:09:00 -- 遍历行与列赋值 得到列名值为空?怎么解决呢? 遍历行与列赋值 得到列名值为空?怎么解决呢?
在同一个表中 当提供单位或个人为多值时,将多值进行拆分生成多行数据 同时对应的其它列的值 全部相同 当前代码只实现了将多值拆分成多行,其它列没有对应复制过来
当前代码为:【经判断系红色部分代码出错,得不到对应的列名并赋值】 [此贴子已经被作者于2022/10/22 11:16:32编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/10/22 11:21:00 -- 贴出完整代码 |
-- 作者:cnsjroom -- 发布时间:2022/10/22 11:42:00 -- 回复:(有点蓝)贴出完整代码 谢谢老师 已解决赋值问题 但是没有解决为什么要保存e.Values("证据提供者")条件的数据……
A,B,C这行不需要保存 想实现直接传e.Values("证据提供者")参过来后,就自动将当前所有 内容自动赋值
Public Sub form304_save2_Ajax(rq as Request) [此贴子已经被作者于2022/10/22 11:52:00编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/10/22 11:52:00 -- 调试 If dt.DataRows.Count>0 Then \'如果S数据存在,暂时不做操作msgbox(s & "数据存在") Else \'如果s数据不存在,则新增数据 bb=dt.AddNew \' 新增dt表行 \'For Each Row As DataRow In dt.DataRows \'遍历dt1的所有行 For Each Col As DataCol In dt.datacols \'遍历dt1的所有列 msgbox(Col.name) If Col.name="提供单位或个人" Then bb("提供单位或个人")=s \'指定提供单位或个人为s数据 Else If Col.name="guid" Then bb("guid")=guid.newguid.tostring() \'指定提供单位或个人为s数据 Else msgbox("bb1=" & bb1(Col.name)) bb(Col.name)=bb1(Col.name) \'其他列直接对应列名赋值相应的数据
msgbox("bb=" & bb(Col.name)) End IfNext \'Next End If |
-- 作者:cnsjroom -- 发布时间:2022/10/23 9:09:00 -- 回复:(有点蓝)调试 &n... Public Sub form304_save2_Ajax(rq as Request) Dim e As RequestEventArgs = rq.e Dim cmd As SQLCom mand = rq.cmd msg(e.Values("证据提供者")) Dim str As String =e.Values("证据提供者") cmd.CommandText = "sel ect * from {调取证据通知书} where 提供单位或个人=\'" & e.Values("证据提供者") & "\'" If cmd.ExecuteScalar > 0 Then \'查找到数据 For Each s As String In str.split(",") \'对传入的值进行拆分 If s.Length>0 Then \'如果拆分的值大于0 Dim dt1 As DataTable = cmd.ExecuteReader(True) Dim bb1 As DataRow = dt1.DataRows(0) cmd.CommandText = "se lect * from {调取证据通知书} where 提供单位或个人=\'" & s & "\'" Dim dt As DataTable = cmd.ExecuteReader(True) Dim bb As DataRow If dt.DataRows.Count>0 Then \'如果S数据存在,暂时不做操作 Else \'如果s数据不存在,则新增数据 msg(1) bb=dt.AddNew \' 新增dt表行 \'For Each Row As DataRow In dt.DataRows \'遍历dt1的所有行 For Each Col As DataCol In dt.datacols \'遍历dt1的所有列 \' msg(Col.name) \' msg(bb(Col.name)) \' msg(bb1(Col.name)) If Col.name="提供单位或个人" Then bb("提供单位或个人")=s \'指定提供单位或个人为s数据 Else If Col.name="guid" Then bb("guid")=guid.newguid.tostring() \'指定提供单位或个人为s数据 Else If Col.name="文号" or Col.name="文书编号"Then bb("文号") =nothing bb("文书编号")=nothing Else msgbox("bb1=" & bb1(Col.name)) bb(Col.name)=bb1(Col.name) \'其他列直接对应列名赋值相应的数据 msgbox("bb=" & bb(Col.name)) 为空…… End If Next \'Next End If dt.save End If Next cmd.CommandText = "dele te from {调取证据通知书} where 提供单位或个人=\'" & e.Values("证据提供者") & "\'" cmd.ExecuteReader End If rq.e.WriteString(rq.msg.ToString) End Sub |
-- 作者:有点蓝 -- 发布时间:2022/10/23 20:21:00 -- 1、bb1也是空的: 2、有其它表事件代码影响了 msgbox("bb1=" & bb1(Col.name)) 这里有没有值
bb(Col.name)=bb1(Col.name) \'其他列直接对应列名赋值相应的数据 msgbox("bb=" & bb(Col.name)) 为空…… |