access 如何覆盖原有的表?
答案:2 悬赏:0 手机版
解决时间 2021-02-05 22:22
- 提问者网友:無理詩人
- 2021-02-04 21:38
access 如何覆盖原有的表?
最佳答案
- 五星知识达人网友:你可爱的野爹
- 2021-02-04 22:11
两个办法:
一、你既然能做到select...into...,就应该能insert into...,不需要每次都删除、新建tmp,
只需要每次:
delete from tmp;
insert into tmp(XH) select XH from XS order by XH;
二、按你的想法,判断删除tmp,然後再Select XH into tmp from XS order by XH,判断方法即:
select Name from MSysObjects where Type=1 and Flags=0 and Name='tmp';
如果查询有结果就先删除再select...into...,否则就直接select...into...
希望你能成功!追问两个方法都试了,很好。第二个表根据tmp生成tmp2,Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH,怎样把它追加到tmp2上呢?用什么命令关闭 打开的表,因为后面要执行drop table 命令?我的总目的是插入一个字段到access表,并用这个字段表示行号,值为1、2、…、n。您很厉害!追答你的意思是先生成tmp,在生成tmp2吗?
Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH
已经产生tmp2了,你问“怎样把它追加到tmp2上呢?”是什麽意思呀?
用什麽命令关闭打开的表?--如果你只是通过代码直接执行sql的话,并不算打开表呀,直接使用完直接drop即可。追问打算建tmp2表,用的时候先清空,再追加内容,应该把“Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH”怎么改写成“Insert into tmp2”?执行“Select SNO from tmp2 where XH='10101010'”后再“Drop table tmp2”就提示“对象打开时,不允许操作”。建立tmp2后就Drop不产生错误。追答insert into tmp2 Select a.XH,count(*) as SNO from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH
------------------------------
“对象打开时,不允许操作”这个问题我不知道你是怎麼用VC连接access的,是ADO吗?
我对VC并不熟悉,但是我想你查询结果的记录集(就是Select SNO from tmp2 where XH='10101010'结果存放的recordset)
应该在drop table之前先关闭才行,一般都有open和close方法的追问很不错,完全正确。我正是用ADO连接的,ADO的open、close都有,由于一种思维惯性,我以为也必须用close table 表名 或者 close 表名 之类的来操作。还想问一个问题,执行“select Name from MSysObjects where Type=1 and Flags=0 and Name='tmp'”时,系统提示“在MSysObjects上没有读取数据的权限”,有没有一种命令使得可以读取“MSysObjects”呢?
一、你既然能做到select...into...,就应该能insert into...,不需要每次都删除、新建tmp,
只需要每次:
delete from tmp;
insert into tmp(XH) select XH from XS order by XH;
二、按你的想法,判断删除tmp,然後再Select XH into tmp from XS order by XH,判断方法即:
select Name from MSysObjects where Type=1 and Flags=0 and Name='tmp';
如果查询有结果就先删除再select...into...,否则就直接select...into...
希望你能成功!追问两个方法都试了,很好。第二个表根据tmp生成tmp2,Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH,怎样把它追加到tmp2上呢?用什么命令关闭 打开的表,因为后面要执行drop table 命令?我的总目的是插入一个字段到access表,并用这个字段表示行号,值为1、2、…、n。您很厉害!追答你的意思是先生成tmp,在生成tmp2吗?
Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH
已经产生tmp2了,你问“怎样把它追加到tmp2上呢?”是什麽意思呀?
用什麽命令关闭打开的表?--如果你只是通过代码直接执行sql的话,并不算打开表呀,直接使用完直接drop即可。追问打算建tmp2表,用的时候先清空,再追加内容,应该把“Select a.XH,count(*) as SNO into tmp2 from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH”怎么改写成“Insert into tmp2”?执行“Select SNO from tmp2 where XH='10101010'”后再“Drop table tmp2”就提示“对象打开时,不允许操作”。建立tmp2后就Drop不产生错误。追答insert into tmp2 Select a.XH,count(*) as SNO from tmp a inner join tmp b on a.XH>b.XH group by a.XH order by a.XH
------------------------------
“对象打开时,不允许操作”这个问题我不知道你是怎麼用VC连接access的,是ADO吗?
我对VC并不熟悉,但是我想你查询结果的记录集(就是Select SNO from tmp2 where XH='10101010'结果存放的recordset)
应该在drop table之前先关闭才行,一般都有open和close方法的追问很不错,完全正确。我正是用ADO连接的,ADO的open、close都有,由于一种思维惯性,我以为也必须用close table 表名 或者 close 表名 之类的来操作。还想问一个问题,执行“select Name from MSysObjects where Type=1 and Flags=0 and Name='tmp'”时,系统提示“在MSysObjects上没有读取数据的权限”,有没有一种命令使得可以读取“MSysObjects”呢?
全部回答
- 1楼网友:深街酒徒
- 2021-02-04 23:19
可以执行两个sql来解决啊
首先执行一次删除操作嘛。在你执行插入语句之前。追问有时候库中没有 tmp,此时执行第一条语句后就出错,报错后自动终止,第二条语句就不执行了。
你的办法也就是我以前想的办法,实际上行不通。追答用追加记录的方式,
insert into table1(field1,field2) select field1,fields2 from table2追问追加记录显然也不行,因为table2也要先生成。如果已经有,再生成table2时,就又出现了 我文章开头所提的问题了。追答你在数据库中放一张表作为临时表不就得了嘛?
你想一张表A,每次用的时候删除里面的内容嘛,而你的语句里面则是生成表查询。
所有你该个方式,把A表直接放在数据库中,而查询语句做成追加记录查询即可。追问你的这个思路做起来好像有点费事,不过应该可行。
假使表A作为临时表,怎么删除里面的内容,怎么生成查询,又怎么将生成的查询追加到临时表中,我对access了解不多,请给出代码。追答delete from A 删除A表的所有内容
insert into B(field1,field2) select field1,field2 from A 把A表中的field1,field2两个字段的内容追加到表B中field1,field2两个字段中
首先执行一次删除操作嘛。在你执行插入语句之前。追问有时候库中没有 tmp,此时执行第一条语句后就出错,报错后自动终止,第二条语句就不执行了。
你的办法也就是我以前想的办法,实际上行不通。追答用追加记录的方式,
insert into table1(field1,field2) select field1,fields2 from table2追问追加记录显然也不行,因为table2也要先生成。如果已经有,再生成table2时,就又出现了 我文章开头所提的问题了。追答你在数据库中放一张表作为临时表不就得了嘛?
你想一张表A,每次用的时候删除里面的内容嘛,而你的语句里面则是生成表查询。
所有你该个方式,把A表直接放在数据库中,而查询语句做成追加记录查询即可。追问你的这个思路做起来好像有点费事,不过应该可行。
假使表A作为临时表,怎么删除里面的内容,怎么生成查询,又怎么将生成的查询追加到临时表中,我对access了解不多,请给出代码。追答delete from A 删除A表的所有内容
insert into B(field1,field2) select field1,field2 from A 把A表中的field1,field2两个字段的内容追加到表B中field1,field2两个字段中
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯