以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关联表的关联列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3267)

--  作者:woodiy
--  发布时间:2009/6/24 10:20:00
--  关联表的关联列
A表与B表相关联,为了多用户同时操作,我的方法是:

用A表的ID列------SQL数据库中的自增列  INT 整数型
与B表的RID-------int 整理型  相关联

请问这样合理吗?为什么总出错!

我现在发现问题了,因为我用的方式是SQL数据库动态加载,我在A表中新增加记录时,还没有加载A表数据,所以新增记录的ID为0, 有什么办法解决,谢谢!
[此贴子已经被作者于2009-6-24 10:24:39编辑过]

--  作者:yangming
--  发布时间:2009/6/24 10:25:00
--  
应该没问题的,报错是什么?
--  作者:狐狸爸爸
--  发布时间:2009/6/24 10:33:00
--  
我在A表中新增加记录时,还没有加载A表数据,所以新增记录的ID为0

这是什么意思? 自动增量应该不存在这个问题啊,即使新增为0,保存的时候,也能生成正确的ID
--  作者:blackzhu
--  发布时间:2009/6/24 11:20:00
--  
以下是引用狐狸爸爸在2009-6-24 10:33:00的发言:
我在A表中新增加记录时,还没有加载A表数据,所以新增记录的ID为0

这是什么意思? 自动增量应该不存在这个问题啊,即使新增为0,保存的时候,也能生成正确的ID

对啊!


--  作者:woodiy
--  发布时间:2009/6/24 14:21:00
--  
举例说明一下:
我[出库主表] 以“ID”为SQL数据表主键字段


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

为了实现动态加载,在项目BeforeLoadOuterTable中代码如下:
If e.DataTableName = "出库主表" AndAlso e.User.Name = "开发者" Then
e.SelectString = "Select * From [出库主表] Where ID=\'0\'"
End If
If e.DataTableName = "出库明细" AndAlso e.User.Name = "开发者" Then
e.SelectString = "Select * From [出库明细] Where ID=\'0\'"
End If

现在问题是如果没有加载数量,直接通过按键的chick代码:
Tables("出库主表").AddNew()
Forms("出库主表加").Open()

新增记录时,ID为0,而不是原来最大值加1,如下图:

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

问题是如何让ID在没有加载全部数据的时候,新增记录时,也能在原来最大值的基本上加1?
--  作者:yangming
--  发布时间:2009/6/24 15:34:00
--  
你不加载数据库,如果新增记录并加1啊?
--  作者:狐狸爸爸
--  发布时间:2009/6/24 15:34:00
--  
你不用担心的,虽然新增的是0,但是你保存一下,就不是0了,自动在原来的最大值加1,就象你希望的那样。
--  作者:woodiy
--  发布时间:2009/6/24 20:57:00
--  
不行啊,我用此ID列与B表的RID相关联, 在B表中增加关联记录的时间, RID就是"0",所以保存时就会出错啊.
--  作者:狐狸爸爸
--  发布时间:2009/6/24 21:00:00
--  
设置关联的时候,选择选项“自动更新关联列内容”
--  作者:woodiy
--  发布时间:2009/7/11 11:49:00
--  
好的,谢谢!