sql update 到 access的T_sql请教

z315559822 2009-03-21 01:47:25
update OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)
set OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)(W size) = zxzl.Wsize
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)tt ,zxzl
where tt.P_id = zxzl.P_id

--说明LGoods是Access里的表,zxzl是sql里的表,他们的结构完全相同。
--希望把zxzl里面的值update到LGoods里,有下面的错误。
--消息 156,级别 15,状态 1,第 2 行
--在关键字 'OPENROWSET' 附近有语法错误。
--
--另外这两表的字段都超过120个,
--除了一个一个set LGoods.1 = zxzl.1,不知道还有什么类似select * 的语法。
-- &n bsp; set LGoods.2 = zxzl.2,
-- & nbsp; set LGoods.n = zxzl.n
--先测试了如上面的T-sql语句仅仅set一个字段就不能够通过,修改为 .Wsize 也不能通过。

...全文
181 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2009-03-26
  • 打赏
  • 举报
回复
你尝试更新其它列试一下,如果正常,表示语法没问题.
z315559822 2009-03-26
  • 打赏
  • 举报
回复
消息 4421,级别 16,状态 1,第 1 行
派生表 'a' 不可更新,因为派生表中的某一列是派生的或是常量。
htl258_Tony 2009-03-26
  • 打赏
  • 举报
回复

update a
set a.Wsize = zxzl.Wsize
from (
select *
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)) a,
zxzl
where a.P_id = zxzl.P_id and a.P_id = '6212-C25'
z315559822 2009-03-26
  • 打赏
  • 举报
回复
update a 
set a.Wsize = zxzl.Wsize
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)as a,zxzl
where a.P_id = zxzl.P_id and a.P_id = '6212-C25'
--说明LGoods(a)是Access里的表,zxzl是sql里的表,他们的结构完全相同。
--希望把zxzl里面的值update到LGoods里,先update Wsize一个字段。
--请楼上在帮我看看,并告之环境。
htl258_Tony 2009-03-26
  • 打赏
  • 举报
回复
select *
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','e:\att2000.mdb';'admin';'',tb)

--1

update a
set a=2
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','e:\att2000.mdb';'admin';'',tb) a
(1 行受影响)

select *
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','e:\att2000.mdb';'admin';'',tb) \

--2
我试了一下,可以正常更新.
z315559822 2009-03-26
  • 打赏
  • 举报
回复
再顶起来!
z315559822 2009-03-25
  • 打赏
  • 举报
回复
up 期待高手路过。
z315559822 2009-03-21
  • 打赏
  • 举报
回复
不是空格问题
zoffor 2009-03-21
  • 打赏
  • 举报
回复
as 前面有空格吧
另外,我觉得 'Microsoft.Jet.OLEDB.4.0'有问题,可能版本不对 。
z315559822 2009-03-21
  • 打赏
  • 举报
回复

不知道4楼是什么版本的MS-sql,我用2000、2005都不能通过。
update a
set Wsize = 750000
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)as a,zxzl
where a.P_id = zxzl.P_id and a.P_id = '6212-C25'
消息 208,级别 16,状态 1,第 1 行
对象名 'a' 无效。
z315559822 2009-03-21
  • 打赏
  • 举报
回复
update tt
set tt.Wsize = zxzl.Wsize
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','F:\e\data\090222.mdb';'admin';'',LGoods)as tt ,zxzl
where tt.P_id = zxzl.P_id and tt.P_id = '6212-C25'
消息 208,级别 16,状态 1,第 1 行
对象名 'tt' 无效。
-狙击手- 2009-03-21
  • 打赏
  • 举报
回复
楼主按我上面的改改
-狙击手- 2009-03-21
  • 打赏
  • 举报
回复
select *
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','d:\db1.mdb';'admin';'',ta)

姓名 生日
-------------------------------------------------- -----------------------
小李 2001-01-01 00:00:00.000
小王 2001-01-01 00:00:00.000
update a
set 生日 = '2001-01-02'
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','d:\db1.mdb';'admin';'',ta) as a

select *
from OPENROWSET('Microsoft.Jet.OLEDB.4.0','d:\db1.mdb';'admin';'',ta)

姓名 生日
-------------------------------------------------- -----------------------
小李 2001-01-02 00:00:00.000
小王 2001-01-02 00:00:00.000
sdhdy 2009-03-21
  • 打赏
  • 举报
回复
SQL SERVER 的语法和ACCESS不太一样,楼主可以到ACCESS版问问。
z315559822 2009-03-21
  • 打赏
  • 举报
回复
有这样的?我看插入什么的都可以,难到真的不可以UPDATE?
htl258_Tony 2009-03-21
  • 打赏
  • 举报
回复
不能在SQL里面直接UPDATE ACCESS里面的表,可以通过ACCESS里面的查询工具来UPDATE

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧