Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义复合主键问题


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

主题:[求助]自定义复合主键问题

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


加好友 发短信
等级:童狐 帖子:265 积分:1806 威望:0 精华:0 注册:2014/3/29 9:27:00
[求助]自定义复合主键问题  发帖心情 Post By:2014/4/13 10:21:00 [显示全部帖子]

外部数据做了一个复合主键表 冲裁中转进度表,主键是 轮次单号 + 部件名称, 没有了默认的 _identify, _locked,  _sorted... 
用代码执行新增操作,发现新记录上的轮次单号和部件名称都是空值,不能被正确赋值。。
Tables("冲裁中转进度表").AddNew()
Tables("冲裁中转进度表").current("部件名称") =  "我的部件"
Tables("冲裁中转进度表").current("轮次单号") = "单号"

以为是赋值出现问题。。测试已经存在的记录,记录是可以被赋值的
Tables("冲裁中转进度表").current("部件名称") =  "我的部件"
Tables("冲裁中转进度表").current("轮次单号") = "单号"

用foxtable界面建另外一个表,也即是表默认有_identify, _locked,  _sorted, 用系统的 新增行 功能
发现在记录的所有列都是空值是 该记录已经有一个 行号。。。
而上面的外部复合主键表用 新增行, 在所有记录列空值是 系统是不会自动产生 行号,只有在手动在表里用编辑后才能产生行号。。。
用代码的话,会发生上面的赋值问题。。。应该是主键相关问题。。

请高手帮忙!
[此贴子已经被作者于2014-4-13 10:23:18编辑过]

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


加好友 发短信
等级:童狐 帖子:265 积分:1806 威望:0 精华:0 注册:2014/3/29 9:27:00
  发帖心情 Post By:2014/4/14 2:48:00 [显示全部帖子]

结果是一样的。。还是不能赋值啊!

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


加好友 发短信
等级:童狐 帖子:265 积分:1806 威望:0 精华:0 注册:2014/3/29 9:27:00
  发帖心情 Post By:2014/4/14 20:11:00 [显示全部帖子]

谢谢大家的回复。。
前面我讲过 我的表示直接自己建立的  没有_identiy, _locked, _Sortkeys等。。。
出现只能在表格编辑状态才能新增直接输入数值。。但是在代码内不能赋值。。。

试过了各种方案还是不行:
-允许identify locked sortkeys 为空。。其他两列做组合主键。。。不行
-不允许identify 为空也不行。。。同样的问题。。。
-删除identify重新引用也不行。。。。

楼上的方案
方案一,你可以使用_Identify + 其它列 做复合主键;。。。因为identify一定是不同的。。这样做就失去了我要保证其他两列在表里面唯一性的意义了

看过foxtable 为解决上面问题。。。是在beforesave前先检查记录是不是存在。。。
这样做 如果数据表原有上万条记录是。。。效率好像有问题。。。如果是批量增加可能更大问题。。。而且还有可能出现不同用户并发问题吧。。
如果动态加载数据的话还得做datatable重新加载。。还是后台筛选?

Foxtable 有什么好办法 解决这个问题了(保持几列的组合在数据库的唯一性)?

谢谢!


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


加好友 发短信
等级:童狐 帖子:265 积分:1806 威望:0 精华:0 注册:2014/3/29 9:27:00
  发帖心情 Post By:2014/4/14 22:58:00 [显示全部帖子]

只能先这样了。。。不过在保存时又要先把最后一个空记录删除。。确实有点麻烦啊。。。
不知道在将来的foxtable能不能比较好的支持

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


加好友 发短信
等级:童狐 帖子:265 积分:1806 威望:0 精华:0 注册:2014/3/29 9:27:00
  发帖心情 Post By:2014/4/17 15:45:00 [显示全部帖子]

试过设成聚合索引(物理地址索引)可以解决唯一性问题。。。
谢谢!!!
数据库要恶补一下了。。。

 回到顶部