以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]金蝶返回数据表时如何读出来  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172454)

--  作者:ajie5211
--  发布时间:2021/10/13 15:14:00
--  [求助]金蝶返回数据表时如何读出来

金蝶帮助文档

HttpClient httpClient = new HttpClient();

 httpClient.Url = "http://192.168.66.60/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc";

 List<object> Parameters = new List<object>();

  //Json字串

  string data = "{\\"FormId\\":\\"PUR_PurchaseOrder\\",\\"TopRowCount\\":0,\\"Limit\\":10,\\"StartRow\\":0,\\"FilterString\\":\\"FMaterialId.FNumber=\'HG_TEST\'\\",\\"OrderString\\":\\"FID ASC\\",\\"FieldKeys\\":\\"FID,FSupplierId,FMaterialId,FMaterialId.FNumber,FMaterialName\\"}";

  Parameters.Add(data);

  httpClient.Content = JsonConvert.SerializeObject(Parameters);

  var result = httpClient.AsyncRequest();

金蝶内调试结果


此主题相关图片如下:2.png
按此在新窗口浏览图片

有返回数据,返回格式是

[[615685,615685,"杜敬涛","13858305057","塑件仓库",true,"否"]]

狐表里这个结果如何输出?


此主题相关图片如下:1.png
按此在新窗口浏览图片

代码

Dim client As new Kingdee.BOS.WebApi.Client.K3CloudApiClient("http://192.168.1.235/k3cloud/")
Dim loginResult = client.ValidateLogin("60b69d07649920","赵东旭","123456",2052)
Dim resultType As Integer = JObject.Parse(loginResult)("LoginResultType").Tostring
Dim jo As New JObject
jo("FormId") = "BD_NEWSTAFF"
jo("FieldKeys") = "FSTAFFID,FMASTERID,FName,FPMobile,FDept.FName,FIsFirstPost,FForbidStatus.FCaption"

Dim ja1 As New Jarray \'定义数组
Dim jo1 As new JObject
jo1("Left") = "("
jo1("FieldName") = "FPMobile"
jo1("Compare") = "="
jo1("Value") = "13858305057"
jo1("Right") = ")"
jo1("Logic") = "AND"
Dim jo2 As new JObject
jo2("Left") = "("
jo2("FieldName") = "FForbidStatus"
jo2("Compare") = "StatusEqualto"
jo2("Value") = "A"
jo2("Right") = ")"
jo2("Logic") = "AND"

ja1.Add(jo1)
ja1.Add(jo2)
jo("FilterString") = ja1
\'Output.Show(jo.Tostring)
If resultType = 1 Then
    Dim csjg As String = client.ExecuteBillQuery(CompressJson(jo)).Tostring
    Output.Show(csjg)
End If


 


--  作者:有点蓝
--  发布时间:2021/10/13 15:46:00
--  
人家返回的是一个对象集合,不是字符串。金蝶帮助文档发上来看看
--  作者:ajie5211
--  发布时间:2021/10/13 15:57:00
--  

请看附件

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

[此贴子已经被作者于2021/10/13 15:57:45编辑过]

--  作者:有点蓝
--  发布时间:2021/10/13 16:44:00
--  
文档里根本找不到Kingdee.BOS.WebApi.Client.K3CloudApiClient这个类型的说明

去咨询金蝶客服吧,看是怎么获取返回值

或者试试
If resultType = 1 Then
    Dim csjg As String = Newtonsoft.Json.JsonConvert. SerializeObject(client.ExecuteBillQuery(CompressJson(jo)))
    Output.Show(csjg)
End If

--  作者:ajie5211
--  发布时间:2021/10/13 16:57:00
--  

谢谢版本,出来了,可以用!

If resultType = 1 Then
    Dim csjg As String = Newtonsoft.Json.JsonConvert. SerializeObject(client.ExecuteBillQuery(CompressJson(jo)))
    Dim jas As JArray = JArray.Parse(csjg)
    For i As Integer = 0 To jas.Count - 1
        Dim j1 As JArray = jas(i)
        For j As Integer = 0 To j1.Count - 1
            Output.show(j1(j))
        Next
    Next
End If


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

这样解出来是json的形式,我自己试了一下,也可以用下面的方法解,直接解到具体的值

If resultType = 1 Then
    Dim csjgs As List(of List(of object)) = client.ExecuteBillQuery(CompressJson(jo))
    For Each szs As List(of object) In csjgs
        For Each sz As object In szs
            Output.Show(sz.Tostring)
        Next
    Next
End If

 


[此贴子已经被作者于2021/10/13 16:59:05编辑过]

--  作者:zcl
--  发布时间:2021/10/14 16:06:00
--  
多谢楼主分享