Recordset.Update提交数据失败

0 投票

http://ask.supermap.com/65147 这个问题相关,没有人回复我,所以重新开一个问题

创建并更新记录集,在一个特定shp和特定数据表下,Recordset.Update执行失败(代码段上面的链接有)

经过排查后,发现这个问题的原因在表结构上。shp文件和代码没有问题,表结构是通过SuperMap iDesktop建立的,表结构如图:

经过多次尝试,在字段只有1-6的时候,添加记录集成功,25个字段的时候则不成功,出现程序崩溃的问题。请问,数据结构是哪里设置的不对?

另外,decimal应该选择什么类型呢?

4月 2 分类:  38次浏览 | 用户: 璐璐8889 才疏学浅 (13 分)

1个回答

0 投票
你好,你的意思是指只有这一个shp数据会更新崩溃吧,那你直接把这个数据发我邮箱 我这边验证一下。
4月 2 用户: 邬袁凯 名扬四海 (2,429 分)
不是因为shp文件的原因,是因为表的原因,表的字段全部添加成截图的样子,就导不进去

稍等,我发你邮件
你现在的需求是把shp数据对应的几何数据拷贝到另外一个数据集里吧? 那其实可以直接复制数据集就行了呀,不用对recordset进行这么繁琐的操作的
这个问题我通过你的文档还是没有具体清晰,我建议你明天直接拨打电话400-8900866,找下我,我姓邬,我感觉你的需求不用这么去更新字段的。
谢谢,我重新复制了一份数据库出来,就正常了。下面我做一个复盘:

问题背景是这样的,你们家sdk不能设置实际表名(smregister的SmTableName字段),而我们希望SmDatasetName和SmTableName可以一致,所以我们并没有使用sdk去创建数据集。

而是1.通过超图软件创建数据集(与自动生成的表),然后2.smregister手动改SmTableName和SmIndexTableName,3.将自动生成的表改名或者手动新建一个数据表。

以上步骤是由我的上一任开发者完成的,我只是听了复述,然后拿到了已经建好的数据库。

由于我对超图sdk完全不了解,在使用过程中误删了数据集“A”,之后通过各种方式尝试在数据库中还原数据集A(从备份数据库拷贝smregister和smfieldinfo的对应数据、通过超图软件建立数据集A等等),均不成功。

现在的情况是,我从备份数据库备份一份完整的数据,则导入数据成功。

整个流程复盘就是这样了,希望可以给你们提供一些想法。
你们不给改表名是真的很讨厌~
我们是有接口让数据集名和表名一致的,Toolkit.SetDtBaneAsTableName这个接口,我们这边的流程是创建数据集表都在idesktop里面进行,要修改表的内容可以在数据库里做,还有尽量不要修改系统字段,sm开头的


Toolkit.SetDtNameAsTableName(true),这还是个全局变量啊……我每次在启动方法里面设置一次即可?

你们倒是……写得明显一点啊……OTZ
是的,在启动的时候设置就行了
还是非常感谢你们的耐心回答

but不得不说,好的文档可以减少很多疑问,我看你们的文档+示例代码啊,很多视频啊,PDF的感觉就是,乱

我也说不上为什么觉得乱,然后找不到自己想要的,反正我看其他家的文档就没有这种感觉

还是把感受反馈给你们一下
好的,感谢你的反馈,我们以后会更加改进,完善
...