利用kbmMW的QueryServices,对数据集进行提交,当改用JSON格式时,客户端提交时,会产生这个错误,明明已经更新数据库,也产生这个错误!如果换成Bin格式,则正常。
能过查看kbmMWJSONStreamFormat单元,问题产生在这行代码:
nIndexDefs:=nDefs.AsArray['indexes'];
可以这样理解:
客户端提交数据后,服务器会返回一个错误结果数据集,不管有无错误,都要返回这个结果集。客户端会把这个数据集加载到 ClientQuery.ErrorTable中,然后能过这个ErrorTable来处理错误。当加载时,用的JSON格式传输数据,则在这个JSON 中无没有indexes信息,正因为没有,所以执行上面的代码,就发出了异常。

为什么,返回的JSON流中,没有indexes,进一步跟踪代码,会看到所在传输格式的基类TkbmMWCustomStreamFormat

中,执行了这行代码:
sfIndexDef:=[],
这行代码,说明在生成JSON时,不保存数据集的index定义,
在memTable的TkbmCustomStreamFormat类中:
sfIndexDef:=[sfSaveIndexDef,sfLoadIndexDef];
这行代码,说明在生成JSON时,保存index定义。
TkbmMWCustomStreamFormat继承TkbmCustomStreamFormat,对基本的行为作了这样的修改。为什么?
我想是这样:对于内存表,保存与加载JSON数据,需要有Index信息,而对于kbmMW,在客户端与服务器传输数据流时,不需要有index。

通过上面分析,在这句前加一个条件判断,就可以避免此错误的产生。
nIndexDefs:=nDefs.AsArray['indexes'];

[转载红鱼儿]kbmmw 开发点滴:kbmMW:Unknown property:indexes相关推荐

  1. [转载红鱼儿]kbmmw 开发点滴:kbmMW 命名查询(Named Query)

    所谓命名查询(Named Query),指客户端的Query通过指定的名称,使用服务器端的Query操作(查.增.删.改)数据库.通过Named Query机制,实现事先在服务器端设置好SQL,达到在 ...

  2. [转载红鱼儿]kbmmw 开发点滴:kbmMW客户端提交事务的现场处理

    多层应用中的事务处理,是必须的,如果处理不好,就会出现各种数据不同步的现象,无法投入使用.以前用ASTA实现的多层应用,是在客户端利用ASTA机 制,将要提交的数据集.执行的SQL及SP,统统生成到一 ...

  3. [转载红鱼儿]kbmmw 开发点滴:EarlyAuthentication

    kbmmw 开发点滴:EarlyAuthentication 1.kbmMWServer.EarlyAuthentication的作用: 当为真是,当客户端请求时,先触发kbmMWServer的OnA ...

  4. [转载红鱼儿]kbmmw 开发点滴:TkbmMWLock用法

    TStringList不是线程安全的,当我们在线程用到他是,要做保护.方法有两种,一种是用delphi自带的Critical,另外一种就是kbmMW为我们提供的TkbmMWLock类. 现在我们看看如 ...

  5. [转载红鱼儿]kbmmw 开发点滴:Authorization failed.

    开始利用kbmmw实作项目,第一件事就是为的服务端加用户的认证.如果客户端发来的请求无法在服务器端通过认证,即客户端认证失败,会在客户端弹出一个错误提示窗口:Authorization failed. ...

  6. [转载红鱼儿]kbmmw 开发点滴:ErrorTable用法

    TkbmMWClientQuery有一个ErrorTable属性,用于记录提交Query时返回的错误结果.当用户保存修改的业务数据,出错时,可以用ErrorTable定位出错的记录并提示错误信息. 下 ...

  7. [转载红鱼儿]kbmmw 开发点滴:kbmMWQuery插入记录

    想利用TkbmMWUNIDACQuery插入一条记录,结果遇到问题,显示: 不允许从数据类型 sql_variant 到 varchar 的隐式转换.请使用 CONVERT 函数来运行此查询.这是什么 ...

  8. kbmMW均衡负载与容灾(3)(转载红鱼儿)

    在kbmMW均衡负载与容灾(1)中,介绍了利用ClientTransport的OnReconnect事件,对联接的应用服务器的地址进行更换,做容灾处理.实际上,作者还给我们提供了另外一种机制,直接在C ...

  9. kbmMW均衡负载与容灾(2)(转载红鱼儿)

    集中式均衡负载 为实现集中式均衡负载方案,需要实现两个不同的应用服务器,一个是只包含均衡负载组件再无其他内容的应用服务器,可称之为均衡负载应用服务器,下文简称LB Server,另外一个就是包含一个或 ...

最新文章

  1. Redis 命令整理
  2. 抱歉,我觉得有些人做副业并不靠谱
  3. 陈松松:视频营销成交率低,这三个因素没到位
  4. 不要随意重装你的操作系统
  5. python torch exp_Python:PyTorch 保存和加载训练过的网络 (八十)
  6. php邮箱验证laravel接口,Email认证 | Laravel 中文文档 - 码农教程
  7. 阿里云MVP第14期全球发布:云时代2.0,遇见科技追梦者!
  8. java8安装_JMeter必知必会系列(2) JMeter安装部署
  9. struts2 jsp跳转action 404_Struts2 学习笔记(三)
  10. php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?
  11. Win7中多账户设置自动登录的图文方法
  12. 组合数学 —— 组合数
  13. 条件运算符的嵌套问题
  14. IAR MCS-51 v7.51A 软件注册机下载
  15. 基于STM32设计的宠物投喂器
  16. 10.2 校内集训 解题报告
  17. CPU卡内部认证与外部认证
  18. ClickHouse在苏宁用户画像场景的最佳实践
  19. html5 斜边,css斜切角 斜边 倒角
  20. 苹果A系列芯片的三年AI进化:为何要大规模升级AI算力?

热门文章

  1. DB2中导出数据库的所有DDL脚本
  2. 以下输出结果为16的python_作业 -- 几道简单的Python题
  3. 【算法】哈希表 ( 两数之和 )
  4. 【错误记录】NDK 动态库报错 ( dlopen failed: file offset for the library /lib/arm64/libwebp.so“ >= file size:0)
  5. 【Flutter】Image 组件 ( 配置本地 gif 图片资源 | 本地资源加载 placeholder )
  6. 【计算机网络】网络安全 : 防火墙 ( 简介 | 防火墙功能 | 防火墙分类 | 分组过滤路由器 | 应用网关 )
  7. hs_err_pid
  8. Debian8 安装wordpress博客
  9. js 乘法除法精度问题
  10. 水平集群和垂直集群的区别!