access数据库SQL中insert语句中value某个参数用select获得,如何实现?
insert的数据有多个参数,其中有几个参数想通过查询语句查出来,但把select写入value语句中,运行时会说“查询输入必须包含至少一个表或查询”代码如下------...
insert的数据有多个参数,其中有几个参数想通过查询语句查出来,但把select写入value语句中,运行时会说“查询输入必须包含至少一个表或查询”
代码如下
-------------------------------------------------------------------------------------------------------------------------
INSERT INTO 房屋报修维修表 ( 报修时间, 小区名, 楼层数, 报修房间, 报修房主姓名, 报修房主联系方式, 报修项目1, 报修项目2, 报修项目3, 维修费用, 是否交款 )
VALUES (FormatDateTime(now(),0), forms![住户报修登记]!combo1, forms![住户报修登记]!楼层, forms![住户报修登记]!房间号,
//就这里会出错,单独拿出来没问题的
(select 住户表.住户姓名 from 住户表 where( 住户表.住户所在小区=forms![住户报修登记]!combo3 and 住户所在楼层=forms![住户报修登记]!楼层 and 住户表.住户所在房间号=forms![住户报修登记]!房间号 and 住户表.是否为户主=true)),
(select 住户表.住户联系方式 from 住户表 where (住户表.住户所在小区=forms![住户报修登记]!combo3 and 住户表.住户所在楼层=forms![住户报修登记]!楼层 and 住户表.住户所在房间号=forms![住户报修登记]!房间号 and 住户表.是否为户主=true)),
forms![住户报修登记]!combo9,
forms![住户报修登记]!combo11,
forms![住户报修登记]!combo13,
(select sum(收费表.收费价格) from 收费表 where( 收费表.报修项目=forms![住户报修登记]!combo9 or 收费表.报修项目=forms![住户报修登记]!combo11 or 收费表.报修项目=forms![住户报修登记]!combo13)),
false); 展开
代码如下
-------------------------------------------------------------------------------------------------------------------------
INSERT INTO 房屋报修维修表 ( 报修时间, 小区名, 楼层数, 报修房间, 报修房主姓名, 报修房主联系方式, 报修项目1, 报修项目2, 报修项目3, 维修费用, 是否交款 )
VALUES (FormatDateTime(now(),0), forms![住户报修登记]!combo1, forms![住户报修登记]!楼层, forms![住户报修登记]!房间号,
//就这里会出错,单独拿出来没问题的
(select 住户表.住户姓名 from 住户表 where( 住户表.住户所在小区=forms![住户报修登记]!combo3 and 住户所在楼层=forms![住户报修登记]!楼层 and 住户表.住户所在房间号=forms![住户报修登记]!房间号 and 住户表.是否为户主=true)),
(select 住户表.住户联系方式 from 住户表 where (住户表.住户所在小区=forms![住户报修登记]!combo3 and 住户表.住户所在楼层=forms![住户报修登记]!楼层 and 住户表.住户所在房间号=forms![住户报修登记]!房间号 and 住户表.是否为户主=true)),
forms![住户报修登记]!combo9,
forms![住户报修登记]!combo11,
forms![住户报修登记]!combo13,
(select sum(收费表.收费价格) from 收费表 where( 收费表.报修项目=forms![住户报修登记]!combo9 or 收费表.报修项目=forms![住户报修登记]!combo11 or 收费表.报修项目=forms![住户报修登记]!combo13)),
false); 展开
4个回答
展开全部
给你个思路 将你所需要得到的参数写一个方法 你看看那个报修时间还不一样是用方法得到的 很傻很简单的方法就是将你所需要的每一个参数都写一个方法 然后方法的返回值就是你所需要的参数
比如function string a(int id)
{
stirng sql="select name from user where id="+id;
DataTable dt=...; 这里将查询的结果放入表中
return dt.Rows[0];
}
然后在插入语句中的报修房主姓名的参数写a(id)
如果你所需要的参数在同一张表 你可以查询你所需要的所有参数 然后放入一张内存表中 自己编辑列名 这样就可以只需写一个方法
比如function string a(int id)
{
stirng sql="select name from user where id="+id;
DataTable dt=...; 这里将查询的结果放入表中
return dt.Rows[0];
}
然后在插入语句中的报修房主姓名的参数写a(id)
如果你所需要的参数在同一张表 你可以查询你所需要的所有参数 然后放入一张内存表中 自己编辑列名 这样就可以只需写一个方法
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多写一点语句,
先执行查询,将查询得到的字体结果读入到到变量,然后用AddNew方法,
with 房屋报修维修表
.AddNew
.Fields("报修时间")=...
.Fields("报修房主姓名")=读出姓名的变量名
....
.Update
先执行查询,将查询得到的字体结果读入到到变量,然后用AddNew方法,
with 房屋报修维修表
.AddNew
.Fields("报修时间")=...
.Fields("报修房主姓名")=读出姓名的变量名
....
.Update
追问
是写查询还是直接加到事件里面呢,写到查询里面是错的呀
追答
你是ACCESS,可以写到事件里
Dim xRst As New ADODB.Recordset
Dim pName As String
dim xPhone as String '假定联系方式是字符型的字段
dim xExpense as Double
xRst.Open "select 住户表.住户姓名,住户表.住户联系方式 from 住户表 where( 住户表.住户所在小区=forms![住户报修登记]!combo3 and 住户所在楼层=forms![住户报修登记]!楼层 and 住户表.住户所在房间号=forms![住户报修登记]!房间号 and 住户表.是否为户主=true)" , CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If xRst.RecordCount > 0 Then
'没有这个住户
Msgbox "没有这个住户 "
else
pname=xrst.fields("住户姓名")
xPhone=xrst.fields("住户联系方式")
endif
xRst.Open "select sum(收费表.收费价格) from 收费表 where( 收费表.报修项目=forms![住户报修登记]!combo9 or 收费表.报修项目=forms![住户报修登记]!combo11 or 收费表.报修项目=forms![住户报修登记]!combo13)", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If xRst.RecordCount > 0 Then
'没有这个住户
Msgbox "没有查找到收费 "
else
xExpense=xrst.fields(0)
endif
with 房屋报修维修表
.AddNew
.Fields("报修时间")=...
.Fields("报修房主姓名")=pName
.Fields("维修费用")= xExpense
....
.Update
end with
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个可以处理
追问
具体一点,谢谢了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |