Office中国论坛/Access中国论坛

标题: 求助:带子窗体纯代码数据录入(有一条向左联接的表查询中修改记录时出错) [打印本页]

作者: 4848    时间: 2009-3-8 16:48
标题: 求助:带子窗体纯代码数据录入(有一条向左联接的表查询中修改记录时出错)
本帖最后由 4848 于 2009-3-8 18:18 编辑

1、先返回主窗体记录的自动编号用于关联子窗体;
2、录入一对多关系的字段时先提示表中有没有要录入的值,没有的先加入主表中;
3、循环将子窗体记录插入新表中;
4、在保存一对多关系的两张表中的数据时出错。
    strSQL = "UPDATE (select * from 保险表 left join 车辆档案表 on 保险表.车牌号码=车辆档案表.车牌号码) "
    strSQL = strSQL & "SET 保险表.车牌号码='" & Me.车牌号码 & "',车型=" & Me.车型.Column(0) & ",行驶证车主='" & Me.行驶证车主
    strSQL = strSQL & "',保单号码='" & Me.保单号码 & "',保费合计='" & Me.保费合计
    strSQL = strSQL & "' WHERE 保险表.出单编号=" & Me.出单编号 & ";"
    CurrentProject.Connection.Execute strSQL
    用代码修改记录时提示“索引或主关键字不能包含一个空值”,但直接打开查询(在例子里叫“机动车辆保险出单”)又可以录入或修改数据。
[attach]36426[/attach]

[attach]36424[/attach]

[attach]36427[/attach]

请高手帮忙看一下是什么问题?或有没有其它办法。
作者: tz-chf    时间: 2009-3-8 17:44
抓图上来看,免得下载文件
作者: sbadwaps    时间: 2009-3-8 22:02
太复杂了,不防先在保存数前先在保险表新建个新的空的记录,再保存在这个新记录吧。,估计是
自动编号不能自动生成,所以出错
作者: 4848    时间: 2009-3-9 12:26
问题还没解决,请大家帮忙看一下.
作者: ACMAIN_CHM    时间: 2009-3-9 13:00
没看清你的逻辑,先想保存哪些数据,在你的
CurrentProject.Connection.Execute strSQL
打了个断点,然后看strSQL内容为
UPDATE (select * from 保险表 left join 车辆档案表 on 保险表.车牌号码=车辆档案表.车牌号码) SET 保险表.车牌号码='11',车型=,行驶证车主='',保单号码='',保费合计='' WHERE 保险表.出单编号=61;

如果你不对[ 车辆档案表]中添加,修改数据,就不要把[ 车辆档案表]包括进来。直接
Update 保险表 Set 车牌号码='11',车型=,行驶证车主='',保单号码='',保费合计='' WHERE 出单编号=61;


ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: wu8313    时间: 2009-3-9 13:14
首先不明白,你为什么使用 update,而不是 insert 。
-----------------------------------------------------------------
估计你的业务逻辑如下:
先有车辆档案表,后有保险单,对吧?
所以你想调用 车辆档案表 中的某些列的值写入 车辆档案表 中,这里我认为应该使用insert,而不是update.
仅供参考。
作者: 4848    时间: 2009-3-9 14:54
因为保险表中自动编号是先添加的所以不要用insert而用update,车辆档案表中的记录因为每年都有可能改变,所以每次在录资料时都是先调出车辆档案表的记录如果车辆档案有改变则直接在录入保险单资料时进行更改而不要写成两条查询语句.
作者: 4848    时间: 2009-3-9 15:08
没看清你的逻辑,先想保存哪些数据,在你的
CurrentProject.Connection.Execute strSQL
打了个断点,然后看strSQL内容为
UPDATE (select * from 保险表 left join 车辆档案表 on 保险表.车牌号码=车辆档案表.车牌 ...
ACMAIN_CHM 发表于 2009-3-9 13:00

当车辆档案表中没有要录入的车牌号码时则要向车辆档案中先添加车牌号码,当车辆档案表中有要录入的车牌号码的资料时,则先调出来看一下,如果与要录入的资料不同则在保存资料时进行修改.
作者: 4848    时间: 2009-3-11 11:06
再顶一下,问题真希望能够解决,大家帮帮忙.




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