设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2510|回复: 8
打印 上一主题 下一主题

[模块/函数] 求助:带子窗体纯代码数据录入(有一条向左联接的表查询中修改记录时出错)

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-8 16:48:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
    用代码修改记录时提示“索引或主关键字不能包含一个空值”,但直接打开查询(在例子里叫“机动车辆保险出单”)又可以录入或修改数据。






请高手帮忙看一下是什么问题?或有没有其它办法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-3-8 17:44:19 | 只看该作者
抓图上来看,免得下载文件
3#
发表于 2009-3-8 22:02:28 | 只看该作者
太复杂了,不防先在保存数前先在保险表新建个新的空的记录,再保存在这个新记录吧。,估计是
自动编号不能自动生成,所以出错
4#
 楼主| 发表于 2009-3-9 12:26:24 | 只看该作者
问题还没解决,请大家帮忙看一下.
5#
发表于 2009-3-9 13:00:28 | 只看该作者
没看清你的逻辑,先想保存哪些数据,在你的
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 .
6#
发表于 2009-3-9 13:14:40 | 只看该作者
首先不明白,你为什么使用 update,而不是 insert 。
-----------------------------------------------------------------
估计你的业务逻辑如下:
先有车辆档案表,后有保险单,对吧?
所以你想调用 车辆档案表 中的某些列的值写入 车辆档案表 中,这里我认为应该使用insert,而不是update.
仅供参考。
7#
 楼主| 发表于 2009-3-9 14:54:42 | 只看该作者
因为保险表中自动编号是先添加的所以不要用insert而用update,车辆档案表中的记录因为每年都有可能改变,所以每次在录资料时都是先调出车辆档案表的记录如果车辆档案有改变则直接在录入保险单资料时进行更改而不要写成两条查询语句.
8#
 楼主| 发表于 2009-3-9 15:08:46 | 只看该作者
没看清你的逻辑,先想保存哪些数据,在你的
CurrentProject.Connection.Execute strSQL
打了个断点,然后看strSQL内容为
UPDATE (select * from 保险表 left join 车辆档案表 on 保险表.车牌号码=车辆档案表.车牌 ...
ACMAIN_CHM 发表于 2009-3-9 13:00

当车辆档案表中没有要录入的车牌号码时则要向车辆档案中先添加车牌号码,当车辆档案表中有要录入的车牌号码的资料时,则先调出来看一下,如果与要录入的资料不同则在保存资料时进行修改.
9#
 楼主| 发表于 2009-3-11 11:06:35 | 只看该作者
再顶一下,问题真希望能够解决,大家帮帮忙.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 19:33 , Processed in 0.094155 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表