Foxtable(狐表)用户栏目专家坐堂 → 同一个表中怎么遍历处分形态1 处分形态2 处分形态3 处分形态4字段种的值 如果对应第一种形态 就在第一种形态列中写入数字1


  共有1909人关注过本帖树形打印复制链接

主题:同一个表中怎么遍历处分形态1 处分形态2 处分形态3 处分形态4字段种的值 如果对应第一种形态 就在第一种形态列中写入数字1

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
同一个表中怎么遍历处分形态1 处分形态2 处分形态3 处分形态4字段种的值 如果对应第一种形态 就在第一种形态列中写入数字1  发帖心情 Post By:2023/3/24 23:25:00 [只看该作者]

表中有如下字段及数据行
第一种形态  第二种形态  第三种形态  第四种形态         处分形态1   处分形态2  处分形态3  处分形态4
     1                                                                 第一种形态
                    1                                                                 第二种形态
     1             1                                                  第一种形态 第二种形态
     2             1                  1                              第一种形态 第一种形态 第二种形态 第三种形态
怎么遍历处分形态1   处分形态2  处分形态3  处分形态4字段种的值  如果对应第一种形态  就在第一种形态列中写入数字1  
如果同一行  有多个第一种形态   就累计数值  写入第一种形态列种
[此贴子已经被作者于2023/3/24 23:25:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/25 9:45:00 [只看该作者]

dim r as row = tables("A").current
for each s as string in {"处分形态1","处分形态2",....}
r(s) = r(s) + 1
next

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)dim r as row = tables("A").current...  发帖心情 Post By:2023/3/30 2:17:00 [只看该作者]

麻烦老师继续指导下:当前代码如下  运行提示错误!附件中有表

Dim r As Row = Tables("表A").current
For Each s As String In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5","处分形态6"}
    r(s) = r(s) + 1
Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表a.zip

运行提示:
---------------------------
版本:2022.1.30.2
---------------------------
代码执行出错,错误信息:



System.InvalidCastException: 从字符串“第二种形态”到类型“Double”的转换无效。 ---> System.FormatException: 输入字符串的格式不正确。

   在 Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)

   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)

   --- 内部异常堆栈跟踪的结尾 ---

   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value, NumberFormatInfo NumberFormat)

   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToDouble(String Value)

   在 Microsoft.VisualBasic.CompilerServices.Operators.AddObject(Object Left, Object Right)

   在 UserCode.Test()
---------------------------
确定   
---------------------------


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/30 8:54:00 [只看该作者]

r(r(s)) = r(r(s)) + 1

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)r(r(s)) = r(r(s)) + 1  发帖心情 Post By:2023/3/30 13:30:00 [只看该作者]

遍历整个表,更新状态数据,可以直接更新到数据库,但是想实现按条件进行更新,而不是全部更新,
cmd.CommandText = "se lect * from 台账 "
Dim dt3 As DataTable = cmd.ExecuteReader(True)
For Each r As DataRow In dt3.DataRows 
    r("第一种形态") =Nothing
    r("第二种形态") =Nothing
    r("第三种形态") =Nothing
    r("第四种形态") =Nothing
   For Each s As String In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5"}
        If r(s)="" Then
        Else
            r(r(s)) = r(r(s)) + 1
        End If
    Next
   dt3.save
Next


当前按条件更新代码如下:
 cmd.CommandText = "sel e ct * from 台账 where 问题guid='" & e.Values("问题guid") & "'"
        Dim dt3 As DataTable = cmd.ExecuteReader(True)
        Dim r As DataRow = dt3.DataRows(0)
        If r IsNot Nothing Then
            r("第一种形态") =Nothing
            r("第二种形态") =Nothing
            r("第三种形态") =Nothing
            r("第四种形态") =Nothing
            For Each s As String In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5"}
                r(r(s)) = r(r(s)) + 1
output.show(r(s))
output.show(r(r(s)) + 1)
            Next
            r.save
        End If

当前代码修正如上 红色部分可以输出值  但是值不保存到数据库表中  麻烦老师继续指导下  谢谢!



[此贴子已经被作者于2023/3/30 14:56:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3082 积分:20596 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2023/3/30 14:56:00 [只看该作者]

      For Each s As St  ring In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5"}
                r(r(s)) = r(r(s)) + 1
output.show(r(s))
output.show(r(r(s)) + 1)
   r.save
            Next


 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(cd_tdh)      For Each s As...  发帖心情 Post By:2023/3/30 14:59:00 [只看该作者]

遍历整个表,更新状态数据,可以直接更新到数据库,但是想实现按条件进行更新,而不是全部更新,
cmd.CommandText = "se lect * from 台账 "
Dim dt3 As DataTable = cmd.ExecuteReader(True)
For Each r As DataRow In dt3.DataRows 
    r("第一种形态") =Nothing
    r("第二种形态") =Nothing
    r("第三种形态") =Nothing
    r("第四种形态") =Nothing
   For Each s As String In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5"}
        If r(s)="" Then
        Else
            r(r(s)) = r(r(s)) + 1
        End If
    Next
   dt3.save
Next


当前按条件更新代码如下:
 cmd.CommandText = "sel e ct * from 台账 where 问题guid='" & e.Values("问题guid") & "'"
        Dim dt3 As DataTable = cmd.ExecuteReader(True)
        Dim r As DataRow = dt3.DataRows(0)
        If r IsNot Nothing Then
            r("第一种形态") =Nothing
            r("第二种形态") =Nothing
            r("第三种形态") =Nothing
            r("第四种形态") =Nothing
            For Each s As String In {"处分形态1","处分形态2","处分形态3","处分形态4","处分形态5"}
                r(r(s)) = r(r(s)) + 1
output.show(r(s))
output.show(r(r(s)) + 1)
               r.save
            Next   
        End If

当前代码修正如上 红色部分可以输出值  但是值不保存到数据库表中  麻烦老师继续指导下  谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/30 15:01:00 [只看该作者]

可能原因:
1、表格没有主键
2、后台已经保存了,前台没有刷新

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)可能原因:1、表格没有主键2、后台已...  发帖心情 Post By:2023/3/31 8:47:00 [只看该作者]

经过排查:
主键是已经设置了的
后台没有数据写入  

对应的查找条件值guid也是存在的  但是数据就是不保存

遍历整个表的时候  数据可以保存   单个指定guid的就不行

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106675 积分:542564 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/3/31 9:05:00 [只看该作者]

单个不行应该是查询不到符合条件的数据,可能条件有问题,调试看看

cmd.CommandText = "select * from 台账 where 问题guid='" & e.Values("问题guid") & "'"
msgbox(cmd.CommandText)
        Dim dt3 As DataTable = cmd.ExecuteReader(True)
msgbox(dt3.DataRows.count)
        Dim r As DataRow = dt3.DataRows(0)

 回到顶部