Foxtable(狐表)用户栏目专家坐堂 → 分享:json解析操作分享,感谢有点蓝等老师,希望对大家操作有所参考帮助。


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

主题:分享:json解析操作分享,感谢有点蓝等老师,希望对大家操作有所参考帮助。

帅哥哟,离线,有人找我吗?
李孝春
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)完整代码贴出来  发帖心情 Post By:2016/11/6 18:56:00 [只看该作者]

 代码如下:
麻烦有点蓝老师啦 
这个事件我放在表列数据发生变化的时候代码里的



'...
Select Case e.DataCol.Name
    Case "操作日期"
        If e.NewValue IsNot Nothing Then
            
            Dim str As String=Format(e.NewValue , "yyy-MM-dd")
            'MessageBox.Show(str)
            Dim postdata As String ="{""begin_date"": """ & str & """, ""end_date"": """ & str & """ }"
            
            'MessageBox.Show(postdata)
            Dim dr1 As DataRow =DataTables("微信基础表").Find("公众号名称 = '" & Forms("主窗体").Controls("Treeview1").SelectedNode.ParentNode.Name & "'")
            'MessageBox.Show("公众号名称 = '" & Forms("主窗体").Controls("Treeview1").SelectedNode.ParentNode.Name & "'")
            Dim url = String.Format("https://api.weixin.qq.com/datacube/getarticlesummary?access_token=" & dr1("ACCESSTOKEN") & "")
            'MessageBox.Show(url)
            Using ms As New System.IO.MemoryStream()
            Dim bytes = ConvertHelper.EncodingToBytes(postdata, System.Text.Encoding.UTF8)
            ms.Write(bytes, 0, bytes.Length)
            ms.Seek(0, System.IO.SeekOrigin.Begin)
            Dim jsonString = Functions.Execute("HttpPost",url, ms) '通过POST向接口传输菜单数据,并取得返回结果
            Dim json As String = jsonString
            Dim ScriptControl As Object, data  As Object, JscriptCode As String
            JscriptCode = "function toObject(json) {eval(""var o=""+json);return o;}"
            ScriptControl = CreateObject("MSScriptControl.ScriptControl")
            With ScriptControl
                .Language = "Javascript"
                .Timeout = -1
                .AddCode(JscriptCode)
                data = .Run("toObject", json)
            End With
            output.Show(json)
            
            
            
            Dim haserror As Boolean
            If jsonString.Contains("errcode") Then
                If not haserror Then
                    msgbox("出错")
                    haserror = True
                End If
            else
                Dim dr As DataRow
                For Each obj As object In data.list
                    
                    dr = DataTables("图文群发每日数据").AddNew
                    'dr("操作日期") = obj.ref_date
                    dr("进入方式") = obj.user_source
                    dr("图文阅读人数") = obj.int_page_read_user
                    dr("图文阅读次数") = obj.int_page_read_count
                    dr("分享人数") = obj.share_user
                    dr("分享次数") = obj.share_count
                    dr("原文阅读次数") = obj.ori_page_read_user
                    dr("原文阅读人数") = obj.ori_page_read_count
                    dr("收藏人数") = obj.add_to_fav_user
                    dr("收藏次数") = obj.add_to_fav_count
                    dr("文章标题") = obj.title
                    dr("图文编号") = obj.msgid
                    
                    
                Next
                
            end if
            
            
        End Using
    End If
End Select

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/6 20:00:00 [只看该作者]

 没看懂你什么意思,报什么错?什么每行都报错。

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/6 20:02:00 [只看该作者]

以下是引用李孝春在2016/11/5 11:54:00的发言:
有没有办法只让这个运行一次呢?
当表增加一行的时候 就提示一次 多行就提示了多次 
我想实现 同样的错误 该代码只运行一次 

 

那你就不要写在表事件里面,单独做一个新增行的按钮,单独写代码。

 

http://www.foxtable.com/webhelp/scr/2218.htm

 


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点青)以下是引用李孝春在2016/11/5 11:54:...  发帖心情 Post By:2016/11/7 15:07:00 [只看该作者]

是采用这样的写法么?
Try
'追加数据代码
Catch ex 
As Exception
    MessageBox.Show(
"追加数据失败"
End
 Try

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


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

如果在表事件就不要弹出提示了,直接写日志记录错误信息


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)如果在表事件就不要弹出提示了,直接...  发帖心情 Post By:2016/11/7 15:56:00 [只看该作者]

Output.Logs("错误日志").Add(e.datarow("操作日期") & "在" & Date.Now & "出错了" & "errcode:49001")

是这样写么?

这个出错提示,我是想根据上面的
Dim dr1 As DataRow =DataTables("微信基础表").Find("公众号名称 = '" & Forms("主窗体").Controls("Treeview1").SelectedNode.ParentNode.Name & "'")
Dim url = String.Format("https://api.weixin.qq.com/datacube/getarticlesummary?access_token=" & dr1("ACCESSTOKEN") & "")
来判断是否可以正常获取值,如果不能获取,出现了errcode:49001错误的话,就提示该错误出来。如果是errcode:45001错误的话 就提示该错误

让用户明白错误之处是出现在哪里,进而改正。

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


加好友 发短信
等级:超级版主 帖子:107861 积分:548662 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/7 16:49:00 [只看该作者]

If jsonString.Contains("errcode") Then
                Output.Logs("错误日志").Add(User.Name & ":" & Date.Now  & vbcrlf & jsonString)
Output.Logs("错误日志").Save("c:\log.txt",True)
Output.Logs(
"
错误日志").Clear
            else
......

 回到顶部
总数 17 上一页 1 2