Office中国论坛/Access中国论坛

标题: 紧急求救:两个表如何联动? [打印本页]

作者: mountain7    时间: 2007-7-14 18:29
标题: 紧急求救:两个表如何联动?
<>紧急求救:两个表如何联动?</P>
<>我是ACCESS初学者,现在有个关于ACCESS两个表如何联动的问题,请大家给与指导,谢谢。</P>
<>我现在用ACCESS做一个小型的数据库。主要通过VBA编程(sql)进行表的访问,更新,增加和删除。</P>
<P>现在已经有了一个A表,这个表有一个主键(名称是"ID", 是我导入数据时系统自动生成的),还有其他一些字段(比如叫("字段1"--"字段180")。由于ACCESS字段数有255的限制,而我现在想增加一些字段(总数肯定超过255个了),所以需要增添一个表,我想设计一个B表,它有一个ID(这个应该和A表一致,对吧?)和我想要增加的那些字段("字段181"--"字段360")。我想使用VBA对A表进行SQL操作时,能够自动扩展到B表,比如,我想通过SQL命令访问,更新,增加或者删除A表的"字段200",而"字段200"在B表中。能不能够设计一个关系,让这个命令有效的执行。如果不能自动扩展,我的SQL命令将会变得特别复杂。</P>
<P>请大家给与指导,谢谢!</P>
作者: 老鬼    时间: 2007-7-14 18:45
将两张表按ID建立表关系,关系类型设为“级联更新”和“级联删除”。
作者: mountain7    时间: 2007-7-14 23:25
<>非常感谢你的回答,我按照你的回答作了实验,但是失败了。</P>
<>我是这样做的:</P>
<>在建立表的关系里,把两个表的ID连在一起,然后在编辑表的关系里,在[参照完整性]选项上打了勾,并且把下面的两个选项,也就是你说的“级联更新”和“级联删除”给选择了,但是确定的时候却报告错误。</P>
<P>A表和B表的ID是相同的,并且数据也相同,我是拷贝了A表,删除了ID以外的字段,然后增加("字段181"--"字段360")。</P>
<P>然后,我抱着试试看的目的,把两个ID的属性从自动数值型改成了一般数值型。这回倒是可以进行上述关系的建立了。但是用SQL语句对表A进行查询时,当字段延伸到表B时就会出现错误。就好像没有联接一样。</P>
<P>环境:ACCESS 2000+SP3</P>
作者: 老鬼    时间: 2007-7-15 00:56
<>两个表应该是一种主从关系。A表做为主表,其ID可为自动编号。B表做为从表,其可以有自己的ID,也可用自动编号,但须另加一列,列值为A表的ID。然后将A表的ID和B表的新增列建立关系。其他设置就是一样的了。</P>
作者: tz-chf    时间: 2007-7-15 05:29
AB表用自动编号无法统一。在原表加一个编号字段。
作者: poly    时间: 2007-7-16 02:25
关系里面有个联动,勾上就行,如果不是这种联动的话那你可能说的是更新
作者: mountain7    时间: 2007-7-19 01:01
<DIV class=quote><B>以下是引用<I>老鬼</I>在2007-7-14 16:56:00的发言:</B><BR>
<>两个表应该是一种主从关系。A表做为主表,其ID可为自动编号。B表做为从表,其可以有自己的ID,也可用自动编号,但须另加一列,列值为A表的ID。然后将A表的ID和B表的新增列建立关系。其他设置就是一样的了。</P></DIV>
<>
<>非常感谢你和其他大侠的帮助。对不起阿,我是初学者,请多包涵。</P>
<P>只是这个“也可用自动编号,但须另加一列,列值为A表的ID”,怎么弄才能列值为A表的ID呢?</P>
<P>“其他设置就是一样的了。”是指什么呢?</P>
<P>如果实在不行,我就上传一个例子。请你帮我修改一下好吗?</P>
作者: 老鬼    时间: 2007-7-19 01:10
<>那你发个例子上来吧。提醒你一下,两个表的字段不要重复。</P>
作者: nxjswt    时间: 2007-7-19 06:45
还有关系建立后,关系字段的调用必须设置!
作者: tz-chf    时间: 2007-7-19 07:39
<DIV class=quote><B>以下是引用<I>老鬼</I>在2007-7-14 16:56:00的发言:</B><BR>
<>两个表应该是一种主从关系。A表做为主表,其ID可为自动编号。B表做为从表,其可以有自己的ID,也可用自动编号,但须另加一列,列值为A表的ID。然后将A表的ID和B表的新增列建立关系。其他设置就是一样的了。</P></DIV>
<>导入B表时,到哪里取A表的ID?</P>
作者: mountain7    时间: 2007-7-19 21:34
标题: 例子
<>老鬼,你好,谢谢你的帮助。按照你的要求我做好了例子。</P>
<>在这个例子中,TableA(由EXCEL文件导入)和操作窗体(含VBA代码)已经开发完成,基本上是不可作大量改动的。</P>
<>在TableA中,Name,Age,Address以及Week1-Week120都有数据。现在想扩充字段Week的数目,从Week1到Week356。在TableB中,Name,Age,Address和TableA是相同的,如果没有特别需要可以删除。如果非常必要,不得不这样的情况下(因为Name可能会重复),可以使用Name作为索引。</P>
<P>由于操作窗体(含VBA代码)已经开发完成,所以当对TableA的操作超过Week120时,比如说对TableA要更新Week150,由于现在两个表的关系不支持TableA自动扩展到Week150,所以会出现错误。</P>
<P>总而言之:TableA的字段太多了,要分成两个表,可是还要实现就像一个表一样的所有SQL操作。</P>
<P>要求:</P>
<P>1 尽量不改动VBA代码</P>
<P>2 当窗体的Week超过120时,能够自动扩展到TableB,实现所有原先基于TableA的功能</P>[attach]25405[/attach]<BR>
作者: mountain7    时间: 2007-7-19 21:42
<>[attach]25406[/attach]</P>
作者: 一点通    时间: 2007-7-19 21:44
传一个例子足够了,请不要浪费论坛资源
作者: mountain7    时间: 2007-7-19 23:18
虽然不是故意的(第一次上传附件,不知道怎么做),但是还是我的过错,对不起了。
作者: mountain7    时间: 2007-7-21 17:14
紧急求救,请给与指点!
作者: 老鬼    时间: 2007-7-21 18:11
<>你看一下关系图里的关系。另外提醒你,不管你是用于做什么的,字段这么多的表一定设计不合理。</P>
<>[attach]25437[/attach]<BR></P>
作者: mountain7    时间: 2007-7-21 20:16
<>谢谢你的指点。</P>
<>虽然我对这个表的设计也很有意见,但是为了节约成本,老板非要这么做。我只是个养家糊口的,没有发言权,对于表的结构不能做任何的改动。</P>
<>我试了试你给我的这个附件,仍然不能达到要求。比如,在“ChengJi”这Form上,如果week的值超过120,也就是“炮火”延伸到表B中的时候,点击实行就会发生错误,SQL语句无法找到相应的值段,也就是说表B并没有在SQL实行时自动连到A上去。</P>
<P>经过里的指点,我的问题实际可以归纳为,当一个表的字段个数扩张超过255以后,该怎么做才能保持原有的SQL有效。</P>
<P>非常感谢你的指点。</P>
作者: mountain7    时间: 2007-7-21 20:20
<>对了,我还发现在表的值段的属性的设置里,除了什么数值型,文本型,还有一个参照类型,我试了试,但是这个参照类型只能实现类似listbox的功能,不知道这个有没有什么用。</P>
作者: 老鬼    时间: 2007-7-21 21:17
<>说老实话,我也被你搞糊涂了,这种问题其实是基本的类型,但真的不明白你的需求。</P>
<>你们老板要的应该只是结果,而不是要你的表结构是那样的。表结构你可以自己设计,最后得出你老板要求的结果就行了。</P>
作者: mountain7    时间: 2007-7-21 21:59
<>这个。。。</P>
<>当然了,这个只是一个例子,实际情况确实比较复杂。表的大体结构已经被设计好的,不能更改了。现在要做的就是扩充字段满足新的需求。VBA的代码也已经测试结束,不适宜做重大的修改。</P>
<>谢谢你给与我的帮助。</P>




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3