Foxtable(狐表)用户栏目专家坐堂 → 按文档做了,提示类型未定义


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

主题:按文档做了,提示类型未定义

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 13:03:00 [只看该作者]

accesstoken获得成功,但是,按帮助生成菜单,下面红框处,提示错误40016

图片点击可在新窗口打开查看此主题相关图片如下:qq图片201810191259577777.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/19 13:39:06编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 13:07:00 [只看该作者]

楼上问题,menu表,确定只有2行

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20181019131645555666.png
图片点击可在新窗口打开查看

做了添加按钮窗口,增加了一个按钮,按钮的click,用于设置公共号的菜单,点击,返回40016(意识是:不合法的按钮个数,代码如下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ff333224.txt

这是menu表

图片点击可在新窗口打开查看此主题相关图片如下:qq图片2018101913263377777733.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2018/10/19 14:10:41编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 14:21:00 [只看该作者]

我把代码和表的列名,里面的汉字去掉,还是一样返回40016

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20181019142259999111.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/19 14:23:33编辑过]

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


加好友 发短信
等级:超级版主 帖子:105962 积分:538885 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/19 14:24:00 [只看该作者]

so("name") = mr("名字name").Tostring


返回的数据要严格按照别人的要求,不要自己乱添加属性

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 15:16:00 [只看该作者]

经过如下变化,依然返回40016,难道是需要合成的按钮太少了?只有2行,就是2个按钮,指向2个链接

1.表结构改为与官方文档一致

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20181019142259999111.png
图片点击可在新窗口打开查看
2.代码第1部分(与官方文档相比,增加了2个sql)
Dim mrs As List(of DataRow)  = DataTables("Menu").SQLSelect("[parent] is null","_SortKey") '删选出一级按钮对应的行
Dim mo As New JObject  '一级菜单对象
Dim ma As New Jarray '一级菜单按钮数组
mo("button") = ma '一级菜单属性就一个button属性,这是一个数组属性
For Each mr As DataRow In mrs
    Dim so As New JObject
    so("name") = mr("name").Tostring
    Dim srs As List(of DataRow)  = DataTables("Menu").SQLSelect("[parent] = '" & mr("name") & "'", "_SortKey") '筛选出二级按钮
    Dim nms As String() = {"type","name","url","key","media_id"} '注意列名和菜单属性名一直,方便编码,注意大是区分大小写的
    If srs.Count = 0 Then '如果此一级菜单按钮对应的二级按钮数为0,那么次一级菜单按钮就是一个普通的命令按钮
        For Each nm As String In nms '设置一级菜单按钮的户型
            If mr.IsNull(nm) = False Then
                so(nm) = mr(nm).ToString()
            End If 
        Next
    Else '如果此一级菜单按钮有对应的二级菜单按钮,那么此一级菜单按钮是一个菜单按钮
        Dim sa As New JArray '定义一个数组,包括此一级按钮下的所有二级按钮
        For Each sr As DataRow In srs '逐个生成二级按钮
            Dim jo As New JObject '定义二级按钮对象
            For Each nm As String In nms '设置二级按钮属性
                If sr.IsNull(nm) = False Then
                    jo(nm) = sr(nm).ToString()
                End If
            Next
            sa.Add(jo)
        Next
        so("sub_button") = sa '一级菜单按钮的sub_button属性是一个数组,包括所有二菜单按钮 
    End If
    ma.Add(so)
Next

msgbox(mo.Tostring())

3.代码第2部分
Dim URL As String = " https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}"
Dim AccessToken As String  '= Functions.Execute("GetAccessToken")
Dim drr As DataRow = DataTables("城市列表").sqlFind("所在省 = '江苏' and 所在区县 = '小城'")
If drr IsNot Nothing Then
   AccessToken = drr("lin_at")
   If AccessToken <> "" Then
      AccessToken = DecryptText(drr("lin_at"),"江苏","安徽")
      Dim hc As New HttpClient(CExp(URL,AccessToken))
      hc.Content = mo.Tostring()
      Dim ro As JObject = JObject.Parse(hc.GetData)
      If ro("errcode") = "0" Then
          MessageBox.Show("菜单设置成功!")
      Else
          MessageBox.Show(ro("errcode"))  ’这里返回40016
      End If
   Else
      MessageBox.Show("没有获得at值!")
   End If
Else
   MessageBox.Show("没有找到at所在行!")
End If

4.这是错误提示

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_2018101915180555555555.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/19 15:34:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:105962 积分:538885 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/19 15:23:00 [只看该作者]

msgbox(mo.Tostring())看看生成的json是怎么样的,是否符合微信文档的要求

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 15:36:00 [只看该作者]

在45楼代码红色加粗位置,加入msgbox(mo.Tostring())

返回:

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20181019153300000.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/19 15:56:32编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 15:57:00 [只看该作者]

不会弄了,麻烦支个招
代码在45楼,测试结果在47楼
[此贴子已经被作者于2018/10/19 15:57:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:105962 积分:538885 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/19 16:03:00 [只看该作者]

Dim mrs As List(of DataRow)  = DataTables("Menu").SQLSelect("[parent] is null","_SortKey") '删选出一级按钮对应的行
Dim srs As List(of DataRow)  = DataTables("Menu").SQLSelect("[parent] = '" & mr("name") & "'", "_SortKey") '筛选出二级按钮

没有符合条件的数据,自己检查查询结果和表格数据

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


加好友 发短信
等级:七尾狐 帖子:1521 积分:10733 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/10/19 16:21:00 [只看该作者]

每行加一个逗号,搞定了,谢谢

 回到顶部
总数 52 上一页 1 2 3 4 5 6 下一页