Foxtable(狐表)用户栏目专家坐堂 → 集合转换为数组查找赋值报错


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

主题:集合转换为数组查找赋值报错

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
集合转换为数组查找赋值报错  发帖心情 Post By:2024/1/27 3:50:00 [显示全部帖子]

Dim lst As List(Of String)
Dim Arys() As String
lst = Connections("2022").GetTableNames
Arys = Lst.ToArray() '将集合转换为数组
For Each nm As String In lst
    '    Output.Show(nm)   
    Dim dr As DataRow
    dr = DataTables("系统_菜单").sqlFind("主表 = '" & nm & " ' ") '找出编号为03的产品
    If dr Is Nothing Then '如果没找到的话
        DataTables("系统_菜单").AddNew
        dr("主表") = nm
        dr("主菜单") = "0.未分配"
        statusBar.Message1 = nm & "正在创建数据,请稍后..."
        Application.DoEvents()
    End If
Next
[此贴子已经被作者于2024/1/27 3:50:36编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2024/1/27 9:57:00 [显示全部帖子]

不能这样用吗 怎么把全部表名加到表里 

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2024/1/27 10:25:00 [显示全部帖子]

我这要怎么实现  还要请教老师 

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2024/1/27 10:35:00 [显示全部帖子]

---------------------------
版本:2022.8.18.1
---------------------------
代码执行出错,错误信息:

System.NullReferenceException: 未将对象引用设置到对象的实例。

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


   Dim dr As DataRow
    dr = DataTables("系统_菜单").sqlFind("主表 = '" & nm & " ' ") '找出编号为03的产品
    If dr Is Nothing Then '如果没找到的话
        DataTables("系统_菜单").AddNew
        dr("主表") = nm
        dr("主菜单") = "0.未分配"

这段代码要怎么处理




[此贴子已经被作者于2024/1/27 10:35:54编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2024/1/27 12:38:00 [显示全部帖子]

Dim lst As List(Of String)
Dim Arys() As String
lst = Connections("2022").GetTableNames
Arys = Lst.ToArray() '将集合转换为数组
For Each nm As String In lst
    '        Output.Show(nm)
    Dim dr As DataRow 
    If dr Is Nothing Then '如果没找到的话
        dr = DataTables("系统_存档地址").AddNew
        dr("主表") = nm
        dr("菜单") = "0.未分配"
        statusBar.Message1 = nm & "正在创建数据,请稍后..."
        Application.DoEvents()
    End If
Next


只能添加一条不能进行对比和添加全部的表
而且主表名存在的话也会再次添加

希望完成的功能是 所有表在系统_存档地址 表中对比一次 如果存在就跳过 不催在就新增补齐
[此贴子已经被作者于2024/1/27 12:41:44编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:22812 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2024/1/29 1:51:00 [显示全部帖子]

Dim lst As List(Of String)
Dim Arys() As String
lst = Connections("2022").GetTableNames
Arys = Lst.ToArray() '将集合转换为数组
For Each nm As String In lst 
    Dim dr As DataRow    
    dr = DataTables("系统_菜单").sqlFind("主表 = '" & nm & " ' ") '找出对应的表
    If dr Is Nothing Then '如果没找到的话
        dr = DataTables("系统_菜单").AddNew
        dr("主表") = nm
        dr("主菜单") = "0.未分配"
        statusBar.Message1 = nm & "正在创建数据,请稍后..."
        Application.DoEvents()
    End If
    
Next


想增加一个选项 如果不是数组内数据的直接删除行

 回到顶部